From 08dd9eaca61b5a3477e291aec8dc4a3acd32912f Mon Sep 17 00:00:00 2001 From: pabloFuente Date: Fri, 1 Jun 2018 14:39:38 +0200 Subject: [PATCH] openvidu-browser TypeDocs updated --- openvidu-browser/docs/assets/js/search.js | 2 +- openvidu-browser/docs/classes/connection.html | 12 + .../docs/classes/connectionevent.html | 45 +- openvidu-browser/docs/classes/event.html | 53 +- .../docs/classes/localrecorder.html | 32 +- openvidu-browser/docs/classes/openvidu.html | 76 +- .../docs/classes/openviduerror.html | 16 +- openvidu-browser/docs/classes/publisher.html | 287 ++++++-- .../docs/classes/publisherspeakingevent.html | 45 +- .../docs/classes/recordingevent.html | 45 +- openvidu-browser/docs/classes/session.html | 171 +++-- .../classes/sessiondisconnectedevent.html | 45 +- .../docs/classes/signalevent.html | 43 +- openvidu-browser/docs/classes/stream.html | 53 +- .../docs/classes/streamevent.html | 45 +- .../docs/classes/streammanager.html | 650 ++++++++++++++++++ .../docs/classes/streammanagerevent.html | 421 ++++++++++++ .../classes/streampropertychangedevent.html | 494 +++++++++++++ openvidu-browser/docs/classes/subscriber.html | 280 ++++++-- .../docs/classes/videoelementevent.html | 56 +- .../docs/enums/localrecorderstate.html | 12 + .../docs/enums/openviduerrorname.html | 138 +++- .../docs/enums/videoinsertmode.html | 12 + openvidu-browser/docs/index.html | 16 + openvidu-browser/docs/interfaces/device.html | 12 + .../docs/interfaces/eventdispatcher.html | 30 +- .../openviduadvancedconfiguration.html | 12 + .../docs/interfaces/publisherproperties.html | 16 +- .../docs/interfaces/signaloptions.html | 12 + .../docs/interfaces/streammanagervideo.html | 363 ++++++++++ .../docs/interfaces/subscriberproperties.html | 12 + .../lib/OpenVidu/LocalRecorder.js.map | 2 +- openvidu-browser/lib/OpenVidu/MediaElement.js | 18 + .../lib/OpenVidu/MediaElement.js.map | 1 + .../lib/OpenVidu/MediaManager.d.ts | 81 +++ openvidu-browser/lib/OpenVidu/MediaManager.js | 242 +++++++ .../lib/OpenVidu/MediaManager.js.map | 1 + openvidu-browser/lib/OpenVidu/OpenVidu.d.ts | 5 +- openvidu-browser/lib/OpenVidu/OpenVidu.js | 13 +- openvidu-browser/lib/OpenVidu/OpenVidu.js.map | 2 +- openvidu-browser/lib/OpenVidu/Publisher.d.ts | 41 +- openvidu-browser/lib/OpenVidu/Publisher.js | 398 ++++------- .../lib/OpenVidu/Publisher.js.map | 2 +- openvidu-browser/lib/OpenVidu/Session.d.ts | 58 +- openvidu-browser/lib/OpenVidu/Session.js | 92 ++- openvidu-browser/lib/OpenVidu/Session.js.map | 2 +- openvidu-browser/lib/OpenVidu/Stream.d.ts | 78 +-- openvidu-browser/lib/OpenVidu/Stream.js | 181 +---- openvidu-browser/lib/OpenVidu/Stream.js.map | 2 +- .../lib/OpenVidu/StreamManager.d.ts | 124 ++++ .../lib/OpenVidu/StreamManager.js | 352 ++++++++++ .../lib/OpenVidu/StreamManager.js.map | 1 + openvidu-browser/lib/OpenVidu/Subscriber.d.ts | 32 +- openvidu-browser/lib/OpenVidu/Subscriber.js | 137 +--- .../lib/OpenVidu/Subscriber.js.map | 2 +- .../OpenViduInternal/Enums/OpenViduError.d.ts | 53 +- .../OpenViduInternal/Enums/OpenViduError.js | 53 +- .../Enums/OpenViduError.js.map | 2 +- .../lib/OpenViduInternal/Events/Event.d.ts | 22 +- .../lib/OpenViduInternal/Events/Event.js | 15 +- .../lib/OpenViduInternal/Events/Event.js.map | 2 +- .../Events/MediaStreamSetEvent.d.ts | 22 + .../Events/MediaStreamSetEvent.js | 54 ++ .../Events/MediaStreamSetEvent.js.map | 1 + .../Events/SessionDisconnectedEvent.js | 4 +- .../Events/SessionDisconnectedEvent.js.map | 2 +- .../OpenViduInternal/Events/StreamEvent.js | 16 +- .../Events/StreamEvent.js.map | 2 +- .../Events/StreamManagerEvent.d.ts | 16 + .../Events/StreamManagerEvent.js | 50 ++ .../Events/StreamManagerEvent.js.map | 1 + .../Events/VideoElementEvent.d.ts | 14 +- .../Events/VideoElementEvent.js | 7 +- .../Events/VideoElementEvent.js.map | 2 +- .../Interfaces/Public/EventDispatcher.d.ts | 10 +- .../Interfaces/Public/MediaElement.d.ts | 23 + .../Interfaces/Public/MediaElement.js | 19 + .../Interfaces/Public/MediaElement.js.map | 1 + .../Interfaces/Public/MediaManager.d.ts | 75 ++ .../Interfaces/Public/MediaManager.js | 261 +++++++ .../Interfaces/Public/MediaManager.js.map | 1 + .../Public/PublisherProperties.d.ts | 4 +- .../Interfaces/Public/StreamManagerVideo.d.ts | 31 + .../Interfaces/Public/StreamManagerVideo.js | 19 + .../Public/StreamManagerVideo.js.map | 1 + openvidu-browser/lib/index.d.ts | 3 + openvidu-browser/lib/index.js | 4 + openvidu-browser/lib/index.js.map | 2 +- .../src/OpenVidu/LocalRecorder.ts | 1 + openvidu-browser/src/OpenVidu/OpenVidu.ts | 9 +- openvidu-browser/src/OpenVidu/Publisher.ts | 7 +- openvidu-browser/src/OpenVidu/Session.ts | 69 +- openvidu-browser/src/OpenVidu/Stream.ts | 8 +- .../src/OpenVidu/StreamManager.ts | 23 +- .../OpenViduInternal/Enums/OpenViduError.ts | 63 ++ .../src/OpenViduInternal/Events/Event.ts | 15 +- .../Events/VideoElementEvent.ts | 5 +- .../Interfaces/Public/PublisherProperties.ts | 4 +- 98 files changed, 5195 insertions(+), 1174 deletions(-) create mode 100644 openvidu-browser/docs/classes/streammanager.html create mode 100644 openvidu-browser/docs/classes/streammanagerevent.html create mode 100644 openvidu-browser/docs/classes/streampropertychangedevent.html create mode 100644 openvidu-browser/docs/interfaces/streammanagervideo.html create mode 100644 openvidu-browser/lib/OpenVidu/MediaElement.js create mode 100644 openvidu-browser/lib/OpenVidu/MediaElement.js.map create mode 100644 openvidu-browser/lib/OpenVidu/MediaManager.d.ts create mode 100644 openvidu-browser/lib/OpenVidu/MediaManager.js create mode 100644 openvidu-browser/lib/OpenVidu/MediaManager.js.map create mode 100644 openvidu-browser/lib/OpenVidu/StreamManager.d.ts create mode 100644 openvidu-browser/lib/OpenVidu/StreamManager.js create mode 100644 openvidu-browser/lib/OpenVidu/StreamManager.js.map create mode 100644 openvidu-browser/lib/OpenViduInternal/Events/MediaStreamSetEvent.d.ts create mode 100644 openvidu-browser/lib/OpenViduInternal/Events/MediaStreamSetEvent.js create mode 100644 openvidu-browser/lib/OpenViduInternal/Events/MediaStreamSetEvent.js.map create mode 100644 openvidu-browser/lib/OpenViduInternal/Events/StreamManagerEvent.d.ts create mode 100644 openvidu-browser/lib/OpenViduInternal/Events/StreamManagerEvent.js create mode 100644 openvidu-browser/lib/OpenViduInternal/Events/StreamManagerEvent.js.map create mode 100644 openvidu-browser/lib/OpenViduInternal/Interfaces/Public/MediaElement.d.ts create mode 100644 openvidu-browser/lib/OpenViduInternal/Interfaces/Public/MediaElement.js create mode 100644 openvidu-browser/lib/OpenViduInternal/Interfaces/Public/MediaElement.js.map create mode 100644 openvidu-browser/lib/OpenViduInternal/Interfaces/Public/MediaManager.d.ts create mode 100644 openvidu-browser/lib/OpenViduInternal/Interfaces/Public/MediaManager.js create mode 100644 openvidu-browser/lib/OpenViduInternal/Interfaces/Public/MediaManager.js.map create mode 100644 openvidu-browser/lib/OpenViduInternal/Interfaces/Public/StreamManagerVideo.d.ts create mode 100644 openvidu-browser/lib/OpenViduInternal/Interfaces/Public/StreamManagerVideo.js create mode 100644 openvidu-browser/lib/OpenViduInternal/Interfaces/Public/StreamManagerVideo.js.map diff --git a/openvidu-browser/docs/assets/js/search.js b/openvidu-browser/docs/assets/js/search.js index 85c4f077..d51be2e2 100644 --- a/openvidu-browser/docs/assets/js/search.js +++ b/openvidu-browser/docs/assets/js/search.js @@ -1,3 +1,3 @@ var typedoc = typedoc || {}; typedoc.search = typedoc.search || {}; - typedoc.search.data = {"kinds":{"4":"Enumeration","16":"Enumeration member","128":"Class","256":"Interface","512":"Constructor","1024":"Property","2048":"Method"},"rows":[{"id":0,"kind":4,"name":"VideoInsertMode","url":"enums/videoinsertmode.html","classes":"tsd-kind-enum"},{"id":1,"kind":16,"name":"AFTER","url":"enums/videoinsertmode.html#after","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"VideoInsertMode"},{"id":2,"kind":16,"name":"APPEND","url":"enums/videoinsertmode.html#append","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"VideoInsertMode"},{"id":3,"kind":16,"name":"BEFORE","url":"enums/videoinsertmode.html#before","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"VideoInsertMode"},{"id":4,"kind":16,"name":"PREPEND","url":"enums/videoinsertmode.html#prepend","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"VideoInsertMode"},{"id":5,"kind":16,"name":"REPLACE","url":"enums/videoinsertmode.html#replace","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"VideoInsertMode"},{"id":6,"kind":256,"name":"SubscriberProperties","url":"interfaces/subscriberproperties.html","classes":"tsd-kind-interface"},{"id":7,"kind":1024,"name":"insertMode","url":"interfaces/subscriberproperties.html#insertmode","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SubscriberProperties"},{"id":8,"kind":1024,"name":"subscribeToAudio","url":"interfaces/subscriberproperties.html#subscribetoaudio","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SubscriberProperties"},{"id":9,"kind":1024,"name":"subscribeToVideo","url":"interfaces/subscriberproperties.html#subscribetovideo","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SubscriberProperties"},{"id":10,"kind":128,"name":"VideoElementEvent","url":"classes/videoelementevent.html","classes":"tsd-kind-class"},{"id":11,"kind":1024,"name":"element","url":"classes/videoelementevent.html#element","classes":"tsd-kind-property tsd-parent-kind-class","parent":"VideoElementEvent"},{"id":12,"kind":1024,"name":"cancelable","url":"classes/videoelementevent.html#cancelable","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"VideoElementEvent"},{"id":13,"kind":1024,"name":"target","url":"classes/videoelementevent.html#target","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"VideoElementEvent"},{"id":14,"kind":1024,"name":"type","url":"classes/videoelementevent.html#type","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"VideoElementEvent"},{"id":15,"kind":2048,"name":"isDefaultPrevented","url":"classes/videoelementevent.html#isdefaultprevented","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"VideoElementEvent"},{"id":16,"kind":2048,"name":"preventDefault","url":"classes/videoelementevent.html#preventdefault","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"VideoElementEvent"},{"id":17,"kind":128,"name":"Subscriber","url":"classes/subscriber.html","classes":"tsd-kind-class"},{"id":18,"kind":1024,"name":"element","url":"classes/subscriber.html#element","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Subscriber"},{"id":19,"kind":1024,"name":"id","url":"classes/subscriber.html#id","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Subscriber"},{"id":20,"kind":1024,"name":"stream","url":"classes/subscriber.html#stream","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Subscriber"},{"id":21,"kind":2048,"name":"subscribeToAudio","url":"classes/subscriber.html#subscribetoaudio","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Subscriber"},{"id":22,"kind":2048,"name":"subscribeToVideo","url":"classes/subscriber.html#subscribetovideo","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Subscriber"},{"id":23,"kind":2048,"name":"on","url":"classes/subscriber.html#on","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Subscriber"},{"id":24,"kind":2048,"name":"once","url":"classes/subscriber.html#once","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Subscriber"},{"id":25,"kind":2048,"name":"off","url":"classes/subscriber.html#off","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Subscriber"},{"id":26,"kind":128,"name":"Event","url":"classes/event.html","classes":"tsd-kind-class"},{"id":27,"kind":1024,"name":"cancelable","url":"classes/event.html#cancelable","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Event"},{"id":28,"kind":1024,"name":"target","url":"classes/event.html#target","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Event"},{"id":29,"kind":1024,"name":"type","url":"classes/event.html#type","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Event"},{"id":30,"kind":2048,"name":"isDefaultPrevented","url":"classes/event.html#isdefaultprevented","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Event"},{"id":31,"kind":2048,"name":"preventDefault","url":"classes/event.html#preventdefault","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Event"},{"id":32,"kind":2048,"name":"callDefaultBehaviour","url":"classes/event.html#calldefaultbehaviour","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-protected","parent":"Event"},{"id":33,"kind":256,"name":"EventDispatcher","url":"interfaces/eventdispatcher.html","classes":"tsd-kind-interface"},{"id":34,"kind":2048,"name":"on","url":"interfaces/eventdispatcher.html#on","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"EventDispatcher"},{"id":35,"kind":2048,"name":"once","url":"interfaces/eventdispatcher.html#once","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"EventDispatcher"},{"id":36,"kind":2048,"name":"off","url":"interfaces/eventdispatcher.html#off","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"EventDispatcher"},{"id":37,"kind":256,"name":"PublisherProperties","url":"interfaces/publisherproperties.html","classes":"tsd-kind-interface"},{"id":38,"kind":1024,"name":"audioSource","url":"interfaces/publisherproperties.html#audiosource","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"PublisherProperties"},{"id":39,"kind":1024,"name":"frameRate","url":"interfaces/publisherproperties.html#framerate","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"PublisherProperties"},{"id":40,"kind":1024,"name":"insertMode","url":"interfaces/publisherproperties.html#insertmode","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"PublisherProperties"},{"id":41,"kind":1024,"name":"mirror","url":"interfaces/publisherproperties.html#mirror","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"PublisherProperties"},{"id":42,"kind":1024,"name":"publishAudio","url":"interfaces/publisherproperties.html#publishaudio","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"PublisherProperties"},{"id":43,"kind":1024,"name":"publishVideo","url":"interfaces/publisherproperties.html#publishvideo","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"PublisherProperties"},{"id":44,"kind":1024,"name":"resolution","url":"interfaces/publisherproperties.html#resolution","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"PublisherProperties"},{"id":45,"kind":1024,"name":"videoSource","url":"interfaces/publisherproperties.html#videosource","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"PublisherProperties"},{"id":46,"kind":128,"name":"StreamEvent","url":"classes/streamevent.html","classes":"tsd-kind-class"},{"id":47,"kind":1024,"name":"stream","url":"classes/streamevent.html#stream","classes":"tsd-kind-property tsd-parent-kind-class","parent":"StreamEvent"},{"id":48,"kind":1024,"name":"reason","url":"classes/streamevent.html#reason","classes":"tsd-kind-property tsd-parent-kind-class","parent":"StreamEvent"},{"id":49,"kind":1024,"name":"cancelable","url":"classes/streamevent.html#cancelable","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"StreamEvent"},{"id":50,"kind":1024,"name":"target","url":"classes/streamevent.html#target","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"StreamEvent"},{"id":51,"kind":1024,"name":"type","url":"classes/streamevent.html#type","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"StreamEvent"},{"id":52,"kind":2048,"name":"isDefaultPrevented","url":"classes/streamevent.html#isdefaultprevented","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StreamEvent"},{"id":53,"kind":2048,"name":"preventDefault","url":"classes/streamevent.html#preventdefault","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StreamEvent"},{"id":54,"kind":4,"name":"OpenViduErrorName","url":"enums/openviduerrorname.html","classes":"tsd-kind-enum"},{"id":55,"kind":16,"name":"BROWSER_NOT_SUPPORTED","url":"enums/openviduerrorname.html#browser_not_supported","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"OpenViduErrorName"},{"id":56,"kind":16,"name":"CAMERA_ACCESS_DENIED","url":"enums/openviduerrorname.html#camera_access_denied","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"OpenViduErrorName"},{"id":57,"kind":16,"name":"MICROPHONE_ACCESS_DENIED","url":"enums/openviduerrorname.html#microphone_access_denied","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"OpenViduErrorName"},{"id":58,"kind":16,"name":"SCREEN_CAPTURE_DENIED","url":"enums/openviduerrorname.html#screen_capture_denied","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"OpenViduErrorName"},{"id":59,"kind":16,"name":"SCREEN_SHARING_NOT_SUPPORTED","url":"enums/openviduerrorname.html#screen_sharing_not_supported","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"OpenViduErrorName"},{"id":60,"kind":16,"name":"SCREEN_EXTENSION_NOT_INSTALLED","url":"enums/openviduerrorname.html#screen_extension_not_installed","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"OpenViduErrorName"},{"id":61,"kind":16,"name":"SCREEN_EXTENSION_DISABLED","url":"enums/openviduerrorname.html#screen_extension_disabled","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"OpenViduErrorName"},{"id":62,"kind":16,"name":"INPUT_VIDEO_DEVICE_NOT_FOUND","url":"enums/openviduerrorname.html#input_video_device_not_found","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"OpenViduErrorName"},{"id":63,"kind":16,"name":"INPUT_AUDIO_DEVICE_NOT_FOUND","url":"enums/openviduerrorname.html#input_audio_device_not_found","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"OpenViduErrorName"},{"id":64,"kind":16,"name":"NO_INPUT_SOURCE_SET","url":"enums/openviduerrorname.html#no_input_source_set","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"OpenViduErrorName"},{"id":65,"kind":16,"name":"PUBLISHER_PROPERTIES_ERROR","url":"enums/openviduerrorname.html#publisher_properties_error","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"OpenViduErrorName"},{"id":66,"kind":16,"name":"OPENVIDU_PERMISSION_DENIED","url":"enums/openviduerrorname.html#openvidu_permission_denied","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"OpenViduErrorName"},{"id":67,"kind":16,"name":"OPENVIDU_NOT_CONNECTED","url":"enums/openviduerrorname.html#openvidu_not_connected","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"OpenViduErrorName"},{"id":68,"kind":16,"name":"GENERIC_ERROR","url":"enums/openviduerrorname.html#generic_error","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"OpenViduErrorName"},{"id":69,"kind":128,"name":"OpenViduError","url":"classes/openviduerror.html","classes":"tsd-kind-class"},{"id":70,"kind":1024,"name":"name","url":"classes/openviduerror.html#name","classes":"tsd-kind-property tsd-parent-kind-class","parent":"OpenViduError"},{"id":71,"kind":1024,"name":"message","url":"classes/openviduerror.html#message","classes":"tsd-kind-property tsd-parent-kind-class","parent":"OpenViduError"},{"id":72,"kind":128,"name":"Publisher","url":"classes/publisher.html","classes":"tsd-kind-class"},{"id":73,"kind":1024,"name":"accessAllowed","url":"classes/publisher.html#accessallowed","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Publisher"},{"id":74,"kind":1024,"name":"element","url":"classes/publisher.html#element","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Publisher"},{"id":75,"kind":1024,"name":"id","url":"classes/publisher.html#id","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Publisher"},{"id":76,"kind":1024,"name":"session","url":"classes/publisher.html#session","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Publisher"},{"id":77,"kind":1024,"name":"stream","url":"classes/publisher.html#stream","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Publisher"},{"id":78,"kind":2048,"name":"publishAudio","url":"classes/publisher.html#publishaudio","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Publisher"},{"id":79,"kind":2048,"name":"publishVideo","url":"classes/publisher.html#publishvideo","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Publisher"},{"id":80,"kind":2048,"name":"subscribeToRemote","url":"classes/publisher.html#subscribetoremote","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Publisher"},{"id":81,"kind":2048,"name":"on","url":"classes/publisher.html#on","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Publisher"},{"id":82,"kind":2048,"name":"once","url":"classes/publisher.html#once","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Publisher"},{"id":83,"kind":2048,"name":"off","url":"classes/publisher.html#off","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Publisher"},{"id":84,"kind":256,"name":"SignalOptions","url":"interfaces/signaloptions.html","classes":"tsd-kind-interface"},{"id":85,"kind":1024,"name":"data","url":"interfaces/signaloptions.html#data","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SignalOptions"},{"id":86,"kind":1024,"name":"to","url":"interfaces/signaloptions.html#to","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SignalOptions"},{"id":87,"kind":1024,"name":"type","url":"interfaces/signaloptions.html#type","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SignalOptions"},{"id":88,"kind":128,"name":"ConnectionEvent","url":"classes/connectionevent.html","classes":"tsd-kind-class"},{"id":89,"kind":1024,"name":"connection","url":"classes/connectionevent.html#connection","classes":"tsd-kind-property tsd-parent-kind-class","parent":"ConnectionEvent"},{"id":90,"kind":1024,"name":"reason","url":"classes/connectionevent.html#reason","classes":"tsd-kind-property tsd-parent-kind-class","parent":"ConnectionEvent"},{"id":91,"kind":1024,"name":"cancelable","url":"classes/connectionevent.html#cancelable","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"ConnectionEvent"},{"id":92,"kind":1024,"name":"target","url":"classes/connectionevent.html#target","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"ConnectionEvent"},{"id":93,"kind":1024,"name":"type","url":"classes/connectionevent.html#type","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"ConnectionEvent"},{"id":94,"kind":2048,"name":"isDefaultPrevented","url":"classes/connectionevent.html#isdefaultprevented","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ConnectionEvent"},{"id":95,"kind":2048,"name":"preventDefault","url":"classes/connectionevent.html#preventdefault","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ConnectionEvent"},{"id":96,"kind":4,"name":"LocalRecorderState","url":"enums/localrecorderstate.html","classes":"tsd-kind-enum"},{"id":97,"kind":16,"name":"READY","url":"enums/localrecorderstate.html#ready","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"LocalRecorderState"},{"id":98,"kind":16,"name":"RECORDING","url":"enums/localrecorderstate.html#recording","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"LocalRecorderState"},{"id":99,"kind":16,"name":"PAUSED","url":"enums/localrecorderstate.html#paused","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"LocalRecorderState"},{"id":100,"kind":16,"name":"FINISHED","url":"enums/localrecorderstate.html#finished","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"LocalRecorderState"},{"id":101,"kind":128,"name":"RecordingEvent","url":"classes/recordingevent.html","classes":"tsd-kind-class"},{"id":102,"kind":1024,"name":"id","url":"classes/recordingevent.html#id","classes":"tsd-kind-property tsd-parent-kind-class","parent":"RecordingEvent"},{"id":103,"kind":1024,"name":"name","url":"classes/recordingevent.html#name","classes":"tsd-kind-property tsd-parent-kind-class","parent":"RecordingEvent"},{"id":104,"kind":1024,"name":"cancelable","url":"classes/recordingevent.html#cancelable","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"RecordingEvent"},{"id":105,"kind":1024,"name":"target","url":"classes/recordingevent.html#target","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"RecordingEvent"},{"id":106,"kind":1024,"name":"type","url":"classes/recordingevent.html#type","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"RecordingEvent"},{"id":107,"kind":2048,"name":"isDefaultPrevented","url":"classes/recordingevent.html#isdefaultprevented","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RecordingEvent"},{"id":108,"kind":2048,"name":"preventDefault","url":"classes/recordingevent.html#preventdefault","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RecordingEvent"},{"id":109,"kind":128,"name":"SessionDisconnectedEvent","url":"classes/sessiondisconnectedevent.html","classes":"tsd-kind-class"},{"id":110,"kind":1024,"name":"reason","url":"classes/sessiondisconnectedevent.html#reason","classes":"tsd-kind-property tsd-parent-kind-class","parent":"SessionDisconnectedEvent"},{"id":111,"kind":1024,"name":"cancelable","url":"classes/sessiondisconnectedevent.html#cancelable","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"SessionDisconnectedEvent"},{"id":112,"kind":1024,"name":"target","url":"classes/sessiondisconnectedevent.html#target","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"SessionDisconnectedEvent"},{"id":113,"kind":1024,"name":"type","url":"classes/sessiondisconnectedevent.html#type","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"SessionDisconnectedEvent"},{"id":114,"kind":2048,"name":"isDefaultPrevented","url":"classes/sessiondisconnectedevent.html#isdefaultprevented","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"SessionDisconnectedEvent"},{"id":115,"kind":2048,"name":"preventDefault","url":"classes/sessiondisconnectedevent.html#preventdefault","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"SessionDisconnectedEvent"},{"id":116,"kind":128,"name":"SignalEvent","url":"classes/signalevent.html","classes":"tsd-kind-class"},{"id":117,"kind":1024,"name":"type","url":"classes/signalevent.html#type","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-overwrite","parent":"SignalEvent"},{"id":118,"kind":1024,"name":"data","url":"classes/signalevent.html#data","classes":"tsd-kind-property tsd-parent-kind-class","parent":"SignalEvent"},{"id":119,"kind":1024,"name":"from","url":"classes/signalevent.html#from","classes":"tsd-kind-property tsd-parent-kind-class","parent":"SignalEvent"},{"id":120,"kind":1024,"name":"cancelable","url":"classes/signalevent.html#cancelable","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"SignalEvent"},{"id":121,"kind":1024,"name":"target","url":"classes/signalevent.html#target","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"SignalEvent"},{"id":122,"kind":2048,"name":"isDefaultPrevented","url":"classes/signalevent.html#isdefaultprevented","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"SignalEvent"},{"id":123,"kind":2048,"name":"preventDefault","url":"classes/signalevent.html#preventdefault","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"SignalEvent"},{"id":124,"kind":256,"name":"Device","url":"interfaces/device.html","classes":"tsd-kind-interface"},{"id":125,"kind":1024,"name":"kind","url":"interfaces/device.html#kind","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Device"},{"id":126,"kind":1024,"name":"deviceId","url":"interfaces/device.html#deviceid","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Device"},{"id":127,"kind":1024,"name":"label","url":"interfaces/device.html#label","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Device"},{"id":128,"kind":256,"name":"OpenViduAdvancedConfiguration","url":"interfaces/openviduadvancedconfiguration.html","classes":"tsd-kind-interface"},{"id":129,"kind":1024,"name":"iceServers","url":"interfaces/openviduadvancedconfiguration.html#iceservers","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"OpenViduAdvancedConfiguration"},{"id":130,"kind":1024,"name":"screenShareChromeExtension","url":"interfaces/openviduadvancedconfiguration.html#screensharechromeextension","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"OpenViduAdvancedConfiguration"},{"id":131,"kind":1024,"name":"publisherSpeakingEventsOptions","url":"interfaces/openviduadvancedconfiguration.html#publisherspeakingeventsoptions","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"OpenViduAdvancedConfiguration"},{"id":132,"kind":128,"name":"PublisherSpeakingEvent","url":"classes/publisherspeakingevent.html","classes":"tsd-kind-class"},{"id":133,"kind":1024,"name":"connection","url":"classes/publisherspeakingevent.html#connection","classes":"tsd-kind-property tsd-parent-kind-class","parent":"PublisherSpeakingEvent"},{"id":134,"kind":1024,"name":"streamId","url":"classes/publisherspeakingevent.html#streamid","classes":"tsd-kind-property tsd-parent-kind-class","parent":"PublisherSpeakingEvent"},{"id":135,"kind":1024,"name":"cancelable","url":"classes/publisherspeakingevent.html#cancelable","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"PublisherSpeakingEvent"},{"id":136,"kind":1024,"name":"target","url":"classes/publisherspeakingevent.html#target","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"PublisherSpeakingEvent"},{"id":137,"kind":1024,"name":"type","url":"classes/publisherspeakingevent.html#type","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"PublisherSpeakingEvent"},{"id":138,"kind":2048,"name":"isDefaultPrevented","url":"classes/publisherspeakingevent.html#isdefaultprevented","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"PublisherSpeakingEvent"},{"id":139,"kind":2048,"name":"preventDefault","url":"classes/publisherspeakingevent.html#preventdefault","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"PublisherSpeakingEvent"},{"id":140,"kind":128,"name":"Session","url":"classes/session.html","classes":"tsd-kind-class"},{"id":141,"kind":1024,"name":"connection","url":"classes/session.html#connection","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Session"},{"id":142,"kind":1024,"name":"sessionId","url":"classes/session.html#sessionid","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Session"},{"id":143,"kind":2048,"name":"connect","url":"classes/session.html#connect","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Session"},{"id":144,"kind":2048,"name":"disconnect","url":"classes/session.html#disconnect","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Session"},{"id":145,"kind":2048,"name":"subscribe","url":"classes/session.html#subscribe","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Session"},{"id":146,"kind":2048,"name":"subscribeAsync","url":"classes/session.html#subscribeasync","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Session"},{"id":147,"kind":2048,"name":"unsubscribe","url":"classes/session.html#unsubscribe","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Session"},{"id":148,"kind":2048,"name":"publish","url":"classes/session.html#publish","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Session"},{"id":149,"kind":2048,"name":"unpublish","url":"classes/session.html#unpublish","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Session"},{"id":150,"kind":2048,"name":"signal","url":"classes/session.html#signal","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Session"},{"id":151,"kind":2048,"name":"on","url":"classes/session.html#on","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Session"},{"id":152,"kind":2048,"name":"once","url":"classes/session.html#once","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Session"},{"id":153,"kind":2048,"name":"off","url":"classes/session.html#off","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Session"},{"id":154,"kind":128,"name":"Connection","url":"classes/connection.html","classes":"tsd-kind-class"},{"id":155,"kind":1024,"name":"connectionId","url":"classes/connection.html#connectionid","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Connection"},{"id":156,"kind":1024,"name":"creationTime","url":"classes/connection.html#creationtime","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Connection"},{"id":157,"kind":1024,"name":"data","url":"classes/connection.html#data","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Connection"},{"id":158,"kind":128,"name":"Stream","url":"classes/stream.html","classes":"tsd-kind-class"},{"id":159,"kind":1024,"name":"connection","url":"classes/stream.html#connection","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Stream"},{"id":160,"kind":1024,"name":"frameRate","url":"classes/stream.html#framerate","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Stream"},{"id":161,"kind":1024,"name":"hasVideo","url":"classes/stream.html#hasvideo","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Stream"},{"id":162,"kind":1024,"name":"hasAudio","url":"classes/stream.html#hasaudio","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Stream"},{"id":163,"kind":1024,"name":"streamId","url":"classes/stream.html#streamid","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Stream"},{"id":164,"kind":1024,"name":"typeOfVideo","url":"classes/stream.html#typeofvideo","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Stream"},{"id":165,"kind":128,"name":"LocalRecorder","url":"classes/localrecorder.html","classes":"tsd-kind-class"},{"id":166,"kind":1024,"name":"state","url":"classes/localrecorder.html#state","classes":"tsd-kind-property tsd-parent-kind-class","parent":"LocalRecorder"},{"id":167,"kind":2048,"name":"record","url":"classes/localrecorder.html#record","classes":"tsd-kind-method tsd-parent-kind-class","parent":"LocalRecorder"},{"id":168,"kind":2048,"name":"stop","url":"classes/localrecorder.html#stop","classes":"tsd-kind-method tsd-parent-kind-class","parent":"LocalRecorder"},{"id":169,"kind":2048,"name":"pause","url":"classes/localrecorder.html#pause","classes":"tsd-kind-method tsd-parent-kind-class","parent":"LocalRecorder"},{"id":170,"kind":2048,"name":"resume","url":"classes/localrecorder.html#resume","classes":"tsd-kind-method tsd-parent-kind-class","parent":"LocalRecorder"},{"id":171,"kind":2048,"name":"preview","url":"classes/localrecorder.html#preview","classes":"tsd-kind-method tsd-parent-kind-class","parent":"LocalRecorder"},{"id":172,"kind":2048,"name":"clean","url":"classes/localrecorder.html#clean","classes":"tsd-kind-method tsd-parent-kind-class","parent":"LocalRecorder"},{"id":173,"kind":2048,"name":"download","url":"classes/localrecorder.html#download","classes":"tsd-kind-method tsd-parent-kind-class","parent":"LocalRecorder"},{"id":174,"kind":2048,"name":"getBlob","url":"classes/localrecorder.html#getblob","classes":"tsd-kind-method tsd-parent-kind-class","parent":"LocalRecorder"},{"id":175,"kind":2048,"name":"uploadAsBinary","url":"classes/localrecorder.html#uploadasbinary","classes":"tsd-kind-method tsd-parent-kind-class","parent":"LocalRecorder"},{"id":176,"kind":2048,"name":"uploadAsMultipartfile","url":"classes/localrecorder.html#uploadasmultipartfile","classes":"tsd-kind-method tsd-parent-kind-class","parent":"LocalRecorder"},{"id":177,"kind":128,"name":"OpenVidu","url":"classes/openvidu.html","classes":"tsd-kind-class"},{"id":178,"kind":512,"name":"constructor","url":"classes/openvidu.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"OpenVidu"},{"id":179,"kind":2048,"name":"initSession","url":"classes/openvidu.html#initsession","classes":"tsd-kind-method tsd-parent-kind-class","parent":"OpenVidu"},{"id":180,"kind":2048,"name":"initPublisher","url":"classes/openvidu.html#initpublisher","classes":"tsd-kind-method tsd-parent-kind-class","parent":"OpenVidu"},{"id":181,"kind":2048,"name":"initPublisherAsync","url":"classes/openvidu.html#initpublisherasync","classes":"tsd-kind-method tsd-parent-kind-class","parent":"OpenVidu"},{"id":182,"kind":2048,"name":"initLocalRecorder","url":"classes/openvidu.html#initlocalrecorder","classes":"tsd-kind-method tsd-parent-kind-class","parent":"OpenVidu"},{"id":183,"kind":2048,"name":"checkSystemRequirements","url":"classes/openvidu.html#checksystemrequirements","classes":"tsd-kind-method tsd-parent-kind-class","parent":"OpenVidu"},{"id":184,"kind":2048,"name":"getDevices","url":"classes/openvidu.html#getdevices","classes":"tsd-kind-method tsd-parent-kind-class","parent":"OpenVidu"},{"id":185,"kind":2048,"name":"getUserMedia","url":"classes/openvidu.html#getusermedia","classes":"tsd-kind-method tsd-parent-kind-class","parent":"OpenVidu"},{"id":186,"kind":2048,"name":"enableProdMode","url":"classes/openvidu.html#enableprodmode","classes":"tsd-kind-method tsd-parent-kind-class","parent":"OpenVidu"},{"id":187,"kind":2048,"name":"setAdvancedConfiguration","url":"classes/openvidu.html#setadvancedconfiguration","classes":"tsd-kind-method tsd-parent-kind-class","parent":"OpenVidu"}]}; \ No newline at end of file + typedoc.search.data = {"kinds":{"4":"Enumeration","16":"Enumeration member","128":"Class","256":"Interface","512":"Constructor","1024":"Property","2048":"Method"},"rows":[{"id":0,"kind":128,"name":"Event","url":"classes/event.html","classes":"tsd-kind-class"},{"id":1,"kind":1024,"name":"cancelable","url":"classes/event.html#cancelable","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Event"},{"id":2,"kind":1024,"name":"target","url":"classes/event.html#target","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Event"},{"id":3,"kind":1024,"name":"type","url":"classes/event.html#type","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Event"},{"id":4,"kind":2048,"name":"isDefaultPrevented","url":"classes/event.html#isdefaultprevented","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Event"},{"id":5,"kind":2048,"name":"preventDefault","url":"classes/event.html#preventdefault","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Event"},{"id":6,"kind":2048,"name":"callDefaultBehaviour","url":"classes/event.html#calldefaultbehaviour","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-protected","parent":"Event"},{"id":7,"kind":256,"name":"EventDispatcher","url":"interfaces/eventdispatcher.html","classes":"tsd-kind-interface"},{"id":8,"kind":2048,"name":"on","url":"interfaces/eventdispatcher.html#on","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"EventDispatcher"},{"id":9,"kind":2048,"name":"once","url":"interfaces/eventdispatcher.html#once","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"EventDispatcher"},{"id":10,"kind":2048,"name":"off","url":"interfaces/eventdispatcher.html#off","classes":"tsd-kind-method tsd-parent-kind-interface","parent":"EventDispatcher"},{"id":11,"kind":4,"name":"VideoInsertMode","url":"enums/videoinsertmode.html","classes":"tsd-kind-enum"},{"id":12,"kind":16,"name":"AFTER","url":"enums/videoinsertmode.html#after","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"VideoInsertMode"},{"id":13,"kind":16,"name":"APPEND","url":"enums/videoinsertmode.html#append","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"VideoInsertMode"},{"id":14,"kind":16,"name":"BEFORE","url":"enums/videoinsertmode.html#before","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"VideoInsertMode"},{"id":15,"kind":16,"name":"PREPEND","url":"enums/videoinsertmode.html#prepend","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"VideoInsertMode"},{"id":16,"kind":16,"name":"REPLACE","url":"enums/videoinsertmode.html#replace","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"VideoInsertMode"},{"id":17,"kind":256,"name":"StreamManagerVideo","url":"interfaces/streammanagervideo.html","classes":"tsd-kind-interface"},{"id":18,"kind":1024,"name":"video","url":"interfaces/streammanagervideo.html#video","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StreamManagerVideo"},{"id":19,"kind":1024,"name":"id","url":"interfaces/streammanagervideo.html#id","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StreamManagerVideo"},{"id":20,"kind":1024,"name":"targetElement","url":"interfaces/streammanagervideo.html#targetelement","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StreamManagerVideo"},{"id":21,"kind":1024,"name":"insertMode","url":"interfaces/streammanagervideo.html#insertmode","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"StreamManagerVideo"},{"id":22,"kind":128,"name":"StreamManagerEvent","url":"classes/streammanagerevent.html","classes":"tsd-kind-class"},{"id":23,"kind":1024,"name":"cancelable","url":"classes/streammanagerevent.html#cancelable","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"StreamManagerEvent"},{"id":24,"kind":1024,"name":"target","url":"classes/streammanagerevent.html#target","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"StreamManagerEvent"},{"id":25,"kind":1024,"name":"type","url":"classes/streammanagerevent.html#type","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"StreamManagerEvent"},{"id":26,"kind":2048,"name":"isDefaultPrevented","url":"classes/streammanagerevent.html#isdefaultprevented","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StreamManagerEvent"},{"id":27,"kind":2048,"name":"preventDefault","url":"classes/streammanagerevent.html#preventdefault","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StreamManagerEvent"},{"id":28,"kind":128,"name":"VideoElementEvent","url":"classes/videoelementevent.html","classes":"tsd-kind-class"},{"id":29,"kind":1024,"name":"element","url":"classes/videoelementevent.html#element","classes":"tsd-kind-property tsd-parent-kind-class","parent":"VideoElementEvent"},{"id":30,"kind":1024,"name":"cancelable","url":"classes/videoelementevent.html#cancelable","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"VideoElementEvent"},{"id":31,"kind":1024,"name":"target","url":"classes/videoelementevent.html#target","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"VideoElementEvent"},{"id":32,"kind":1024,"name":"type","url":"classes/videoelementevent.html#type","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"VideoElementEvent"},{"id":33,"kind":2048,"name":"isDefaultPrevented","url":"classes/videoelementevent.html#isdefaultprevented","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"VideoElementEvent"},{"id":34,"kind":2048,"name":"preventDefault","url":"classes/videoelementevent.html#preventdefault","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"VideoElementEvent"},{"id":35,"kind":128,"name":"StreamManager","url":"classes/streammanager.html","classes":"tsd-kind-class"},{"id":36,"kind":1024,"name":"stream","url":"classes/streammanager.html#stream","classes":"tsd-kind-property tsd-parent-kind-class","parent":"StreamManager"},{"id":37,"kind":1024,"name":"videos","url":"classes/streammanager.html#videos","classes":"tsd-kind-property tsd-parent-kind-class","parent":"StreamManager"},{"id":38,"kind":1024,"name":"remote","url":"classes/streammanager.html#remote","classes":"tsd-kind-property tsd-parent-kind-class","parent":"StreamManager"},{"id":39,"kind":1024,"name":"targetElement","url":"classes/streammanager.html#targetelement","classes":"tsd-kind-property tsd-parent-kind-class","parent":"StreamManager"},{"id":40,"kind":1024,"name":"id","url":"classes/streammanager.html#id","classes":"tsd-kind-property tsd-parent-kind-class","parent":"StreamManager"},{"id":41,"kind":2048,"name":"on","url":"classes/streammanager.html#on","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StreamManager"},{"id":42,"kind":2048,"name":"once","url":"classes/streammanager.html#once","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StreamManager"},{"id":43,"kind":2048,"name":"off","url":"classes/streammanager.html#off","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StreamManager"},{"id":44,"kind":2048,"name":"addVideoElement","url":"classes/streammanager.html#addvideoelement","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StreamManager"},{"id":45,"kind":2048,"name":"createVideoElement","url":"classes/streammanager.html#createvideoelement","classes":"tsd-kind-method tsd-parent-kind-class","parent":"StreamManager"},{"id":46,"kind":256,"name":"PublisherProperties","url":"interfaces/publisherproperties.html","classes":"tsd-kind-interface"},{"id":47,"kind":1024,"name":"audioSource","url":"interfaces/publisherproperties.html#audiosource","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"PublisherProperties"},{"id":48,"kind":1024,"name":"frameRate","url":"interfaces/publisherproperties.html#framerate","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"PublisherProperties"},{"id":49,"kind":1024,"name":"insertMode","url":"interfaces/publisherproperties.html#insertmode","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"PublisherProperties"},{"id":50,"kind":1024,"name":"mirror","url":"interfaces/publisherproperties.html#mirror","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"PublisherProperties"},{"id":51,"kind":1024,"name":"publishAudio","url":"interfaces/publisherproperties.html#publishaudio","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"PublisherProperties"},{"id":52,"kind":1024,"name":"publishVideo","url":"interfaces/publisherproperties.html#publishvideo","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"PublisherProperties"},{"id":53,"kind":1024,"name":"resolution","url":"interfaces/publisherproperties.html#resolution","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"PublisherProperties"},{"id":54,"kind":1024,"name":"videoSource","url":"interfaces/publisherproperties.html#videosource","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"PublisherProperties"},{"id":55,"kind":128,"name":"StreamEvent","url":"classes/streamevent.html","classes":"tsd-kind-class"},{"id":56,"kind":1024,"name":"stream","url":"classes/streamevent.html#stream","classes":"tsd-kind-property tsd-parent-kind-class","parent":"StreamEvent"},{"id":57,"kind":1024,"name":"reason","url":"classes/streamevent.html#reason","classes":"tsd-kind-property tsd-parent-kind-class","parent":"StreamEvent"},{"id":58,"kind":1024,"name":"cancelable","url":"classes/streamevent.html#cancelable","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"StreamEvent"},{"id":59,"kind":1024,"name":"target","url":"classes/streamevent.html#target","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"StreamEvent"},{"id":60,"kind":1024,"name":"type","url":"classes/streamevent.html#type","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"StreamEvent"},{"id":61,"kind":2048,"name":"isDefaultPrevented","url":"classes/streamevent.html#isdefaultprevented","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StreamEvent"},{"id":62,"kind":2048,"name":"preventDefault","url":"classes/streamevent.html#preventdefault","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StreamEvent"},{"id":63,"kind":4,"name":"OpenViduErrorName","url":"enums/openviduerrorname.html","classes":"tsd-kind-enum"},{"id":64,"kind":16,"name":"BROWSER_NOT_SUPPORTED","url":"enums/openviduerrorname.html#browser_not_supported","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"OpenViduErrorName"},{"id":65,"kind":16,"name":"DEVICE_ACCESS_DENIED","url":"enums/openviduerrorname.html#device_access_denied","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"OpenViduErrorName"},{"id":66,"kind":16,"name":"SCREEN_CAPTURE_DENIED","url":"enums/openviduerrorname.html#screen_capture_denied","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"OpenViduErrorName"},{"id":67,"kind":16,"name":"SCREEN_SHARING_NOT_SUPPORTED","url":"enums/openviduerrorname.html#screen_sharing_not_supported","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"OpenViduErrorName"},{"id":68,"kind":16,"name":"SCREEN_EXTENSION_NOT_INSTALLED","url":"enums/openviduerrorname.html#screen_extension_not_installed","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"OpenViduErrorName"},{"id":69,"kind":16,"name":"SCREEN_EXTENSION_DISABLED","url":"enums/openviduerrorname.html#screen_extension_disabled","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"OpenViduErrorName"},{"id":70,"kind":16,"name":"INPUT_VIDEO_DEVICE_NOT_FOUND","url":"enums/openviduerrorname.html#input_video_device_not_found","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"OpenViduErrorName"},{"id":71,"kind":16,"name":"INPUT_AUDIO_DEVICE_NOT_FOUND","url":"enums/openviduerrorname.html#input_audio_device_not_found","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"OpenViduErrorName"},{"id":72,"kind":16,"name":"NO_INPUT_SOURCE_SET","url":"enums/openviduerrorname.html#no_input_source_set","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"OpenViduErrorName"},{"id":73,"kind":16,"name":"PUBLISHER_PROPERTIES_ERROR","url":"enums/openviduerrorname.html#publisher_properties_error","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"OpenViduErrorName"},{"id":74,"kind":16,"name":"OPENVIDU_PERMISSION_DENIED","url":"enums/openviduerrorname.html#openvidu_permission_denied","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"OpenViduErrorName"},{"id":75,"kind":16,"name":"OPENVIDU_NOT_CONNECTED","url":"enums/openviduerrorname.html#openvidu_not_connected","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"OpenViduErrorName"},{"id":76,"kind":16,"name":"GENERIC_ERROR","url":"enums/openviduerrorname.html#generic_error","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"OpenViduErrorName"},{"id":77,"kind":128,"name":"OpenViduError","url":"classes/openviduerror.html","classes":"tsd-kind-class"},{"id":78,"kind":1024,"name":"name","url":"classes/openviduerror.html#name","classes":"tsd-kind-property tsd-parent-kind-class","parent":"OpenViduError"},{"id":79,"kind":1024,"name":"message","url":"classes/openviduerror.html#message","classes":"tsd-kind-property tsd-parent-kind-class","parent":"OpenViduError"},{"id":80,"kind":128,"name":"Publisher","url":"classes/publisher.html","classes":"tsd-kind-class"},{"id":81,"kind":1024,"name":"accessAllowed","url":"classes/publisher.html#accessallowed","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Publisher"},{"id":82,"kind":1024,"name":"isSubscribedToRemote","url":"classes/publisher.html#issubscribedtoremote","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Publisher"},{"id":83,"kind":1024,"name":"session","url":"classes/publisher.html#session","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Publisher"},{"id":84,"kind":2048,"name":"publishAudio","url":"classes/publisher.html#publishaudio","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Publisher"},{"id":85,"kind":2048,"name":"publishVideo","url":"classes/publisher.html#publishvideo","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Publisher"},{"id":86,"kind":2048,"name":"subscribeToRemote","url":"classes/publisher.html#subscribetoremote","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Publisher"},{"id":87,"kind":2048,"name":"on","url":"classes/publisher.html#on","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Publisher"},{"id":88,"kind":2048,"name":"once","url":"classes/publisher.html#once","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-overwrite","parent":"Publisher"},{"id":89,"kind":1024,"name":"stream","url":"classes/publisher.html#stream","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"Publisher"},{"id":90,"kind":1024,"name":"videos","url":"classes/publisher.html#videos","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"Publisher"},{"id":91,"kind":1024,"name":"remote","url":"classes/publisher.html#remote","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"Publisher"},{"id":92,"kind":1024,"name":"targetElement","url":"classes/publisher.html#targetelement","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"Publisher"},{"id":93,"kind":1024,"name":"id","url":"classes/publisher.html#id","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"Publisher"},{"id":94,"kind":2048,"name":"off","url":"classes/publisher.html#off","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Publisher"},{"id":95,"kind":2048,"name":"addVideoElement","url":"classes/publisher.html#addvideoelement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Publisher"},{"id":96,"kind":2048,"name":"createVideoElement","url":"classes/publisher.html#createvideoelement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Publisher"},{"id":97,"kind":256,"name":"SubscriberProperties","url":"interfaces/subscriberproperties.html","classes":"tsd-kind-interface"},{"id":98,"kind":1024,"name":"insertMode","url":"interfaces/subscriberproperties.html#insertmode","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SubscriberProperties"},{"id":99,"kind":1024,"name":"subscribeToAudio","url":"interfaces/subscriberproperties.html#subscribetoaudio","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SubscriberProperties"},{"id":100,"kind":1024,"name":"subscribeToVideo","url":"interfaces/subscriberproperties.html#subscribetovideo","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SubscriberProperties"},{"id":101,"kind":128,"name":"Subscriber","url":"classes/subscriber.html","classes":"tsd-kind-class"},{"id":102,"kind":2048,"name":"subscribeToAudio","url":"classes/subscriber.html#subscribetoaudio","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Subscriber"},{"id":103,"kind":2048,"name":"subscribeToVideo","url":"classes/subscriber.html#subscribetovideo","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Subscriber"},{"id":104,"kind":1024,"name":"stream","url":"classes/subscriber.html#stream","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"Subscriber"},{"id":105,"kind":1024,"name":"videos","url":"classes/subscriber.html#videos","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"Subscriber"},{"id":106,"kind":1024,"name":"remote","url":"classes/subscriber.html#remote","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"Subscriber"},{"id":107,"kind":1024,"name":"targetElement","url":"classes/subscriber.html#targetelement","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"Subscriber"},{"id":108,"kind":1024,"name":"id","url":"classes/subscriber.html#id","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"Subscriber"},{"id":109,"kind":2048,"name":"on","url":"classes/subscriber.html#on","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Subscriber"},{"id":110,"kind":2048,"name":"once","url":"classes/subscriber.html#once","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Subscriber"},{"id":111,"kind":2048,"name":"off","url":"classes/subscriber.html#off","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Subscriber"},{"id":112,"kind":2048,"name":"addVideoElement","url":"classes/subscriber.html#addvideoelement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Subscriber"},{"id":113,"kind":2048,"name":"createVideoElement","url":"classes/subscriber.html#createvideoelement","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"Subscriber"},{"id":114,"kind":256,"name":"SignalOptions","url":"interfaces/signaloptions.html","classes":"tsd-kind-interface"},{"id":115,"kind":1024,"name":"data","url":"interfaces/signaloptions.html#data","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SignalOptions"},{"id":116,"kind":1024,"name":"to","url":"interfaces/signaloptions.html#to","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SignalOptions"},{"id":117,"kind":1024,"name":"type","url":"interfaces/signaloptions.html#type","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"SignalOptions"},{"id":118,"kind":128,"name":"ConnectionEvent","url":"classes/connectionevent.html","classes":"tsd-kind-class"},{"id":119,"kind":1024,"name":"connection","url":"classes/connectionevent.html#connection","classes":"tsd-kind-property tsd-parent-kind-class","parent":"ConnectionEvent"},{"id":120,"kind":1024,"name":"reason","url":"classes/connectionevent.html#reason","classes":"tsd-kind-property tsd-parent-kind-class","parent":"ConnectionEvent"},{"id":121,"kind":1024,"name":"cancelable","url":"classes/connectionevent.html#cancelable","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"ConnectionEvent"},{"id":122,"kind":1024,"name":"target","url":"classes/connectionevent.html#target","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"ConnectionEvent"},{"id":123,"kind":1024,"name":"type","url":"classes/connectionevent.html#type","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"ConnectionEvent"},{"id":124,"kind":2048,"name":"isDefaultPrevented","url":"classes/connectionevent.html#isdefaultprevented","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ConnectionEvent"},{"id":125,"kind":2048,"name":"preventDefault","url":"classes/connectionevent.html#preventdefault","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"ConnectionEvent"},{"id":126,"kind":4,"name":"LocalRecorderState","url":"enums/localrecorderstate.html","classes":"tsd-kind-enum"},{"id":127,"kind":16,"name":"READY","url":"enums/localrecorderstate.html#ready","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"LocalRecorderState"},{"id":128,"kind":16,"name":"RECORDING","url":"enums/localrecorderstate.html#recording","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"LocalRecorderState"},{"id":129,"kind":16,"name":"PAUSED","url":"enums/localrecorderstate.html#paused","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"LocalRecorderState"},{"id":130,"kind":16,"name":"FINISHED","url":"enums/localrecorderstate.html#finished","classes":"tsd-kind-enum-member tsd-parent-kind-enum","parent":"LocalRecorderState"},{"id":131,"kind":128,"name":"RecordingEvent","url":"classes/recordingevent.html","classes":"tsd-kind-class"},{"id":132,"kind":1024,"name":"id","url":"classes/recordingevent.html#id","classes":"tsd-kind-property tsd-parent-kind-class","parent":"RecordingEvent"},{"id":133,"kind":1024,"name":"name","url":"classes/recordingevent.html#name","classes":"tsd-kind-property tsd-parent-kind-class","parent":"RecordingEvent"},{"id":134,"kind":1024,"name":"cancelable","url":"classes/recordingevent.html#cancelable","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"RecordingEvent"},{"id":135,"kind":1024,"name":"target","url":"classes/recordingevent.html#target","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"RecordingEvent"},{"id":136,"kind":1024,"name":"type","url":"classes/recordingevent.html#type","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"RecordingEvent"},{"id":137,"kind":2048,"name":"isDefaultPrevented","url":"classes/recordingevent.html#isdefaultprevented","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RecordingEvent"},{"id":138,"kind":2048,"name":"preventDefault","url":"classes/recordingevent.html#preventdefault","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"RecordingEvent"},{"id":139,"kind":128,"name":"SessionDisconnectedEvent","url":"classes/sessiondisconnectedevent.html","classes":"tsd-kind-class"},{"id":140,"kind":1024,"name":"reason","url":"classes/sessiondisconnectedevent.html#reason","classes":"tsd-kind-property tsd-parent-kind-class","parent":"SessionDisconnectedEvent"},{"id":141,"kind":1024,"name":"cancelable","url":"classes/sessiondisconnectedevent.html#cancelable","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"SessionDisconnectedEvent"},{"id":142,"kind":1024,"name":"target","url":"classes/sessiondisconnectedevent.html#target","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"SessionDisconnectedEvent"},{"id":143,"kind":1024,"name":"type","url":"classes/sessiondisconnectedevent.html#type","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"SessionDisconnectedEvent"},{"id":144,"kind":2048,"name":"isDefaultPrevented","url":"classes/sessiondisconnectedevent.html#isdefaultprevented","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"SessionDisconnectedEvent"},{"id":145,"kind":2048,"name":"preventDefault","url":"classes/sessiondisconnectedevent.html#preventdefault","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"SessionDisconnectedEvent"},{"id":146,"kind":128,"name":"SignalEvent","url":"classes/signalevent.html","classes":"tsd-kind-class"},{"id":147,"kind":1024,"name":"type","url":"classes/signalevent.html#type","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-overwrite","parent":"SignalEvent"},{"id":148,"kind":1024,"name":"data","url":"classes/signalevent.html#data","classes":"tsd-kind-property tsd-parent-kind-class","parent":"SignalEvent"},{"id":149,"kind":1024,"name":"from","url":"classes/signalevent.html#from","classes":"tsd-kind-property tsd-parent-kind-class","parent":"SignalEvent"},{"id":150,"kind":1024,"name":"cancelable","url":"classes/signalevent.html#cancelable","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"SignalEvent"},{"id":151,"kind":1024,"name":"target","url":"classes/signalevent.html#target","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"SignalEvent"},{"id":152,"kind":2048,"name":"isDefaultPrevented","url":"classes/signalevent.html#isdefaultprevented","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"SignalEvent"},{"id":153,"kind":2048,"name":"preventDefault","url":"classes/signalevent.html#preventdefault","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"SignalEvent"},{"id":154,"kind":256,"name":"Device","url":"interfaces/device.html","classes":"tsd-kind-interface"},{"id":155,"kind":1024,"name":"kind","url":"interfaces/device.html#kind","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Device"},{"id":156,"kind":1024,"name":"deviceId","url":"interfaces/device.html#deviceid","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Device"},{"id":157,"kind":1024,"name":"label","url":"interfaces/device.html#label","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"Device"},{"id":158,"kind":256,"name":"OpenViduAdvancedConfiguration","url":"interfaces/openviduadvancedconfiguration.html","classes":"tsd-kind-interface"},{"id":159,"kind":1024,"name":"iceServers","url":"interfaces/openviduadvancedconfiguration.html#iceservers","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"OpenViduAdvancedConfiguration"},{"id":160,"kind":1024,"name":"screenShareChromeExtension","url":"interfaces/openviduadvancedconfiguration.html#screensharechromeextension","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"OpenViduAdvancedConfiguration"},{"id":161,"kind":1024,"name":"publisherSpeakingEventsOptions","url":"interfaces/openviduadvancedconfiguration.html#publisherspeakingeventsoptions","classes":"tsd-kind-property tsd-parent-kind-interface","parent":"OpenViduAdvancedConfiguration"},{"id":162,"kind":128,"name":"PublisherSpeakingEvent","url":"classes/publisherspeakingevent.html","classes":"tsd-kind-class"},{"id":163,"kind":1024,"name":"connection","url":"classes/publisherspeakingevent.html#connection","classes":"tsd-kind-property tsd-parent-kind-class","parent":"PublisherSpeakingEvent"},{"id":164,"kind":1024,"name":"streamId","url":"classes/publisherspeakingevent.html#streamid","classes":"tsd-kind-property tsd-parent-kind-class","parent":"PublisherSpeakingEvent"},{"id":165,"kind":1024,"name":"cancelable","url":"classes/publisherspeakingevent.html#cancelable","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"PublisherSpeakingEvent"},{"id":166,"kind":1024,"name":"target","url":"classes/publisherspeakingevent.html#target","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"PublisherSpeakingEvent"},{"id":167,"kind":1024,"name":"type","url":"classes/publisherspeakingevent.html#type","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"PublisherSpeakingEvent"},{"id":168,"kind":2048,"name":"isDefaultPrevented","url":"classes/publisherspeakingevent.html#isdefaultprevented","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"PublisherSpeakingEvent"},{"id":169,"kind":2048,"name":"preventDefault","url":"classes/publisherspeakingevent.html#preventdefault","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"PublisherSpeakingEvent"},{"id":170,"kind":128,"name":"Session","url":"classes/session.html","classes":"tsd-kind-class"},{"id":171,"kind":1024,"name":"connection","url":"classes/session.html#connection","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Session"},{"id":172,"kind":1024,"name":"sessionId","url":"classes/session.html#sessionid","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Session"},{"id":173,"kind":1024,"name":"streamManagers","url":"classes/session.html#streammanagers","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Session"},{"id":174,"kind":2048,"name":"connect","url":"classes/session.html#connect","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Session"},{"id":175,"kind":2048,"name":"disconnect","url":"classes/session.html#disconnect","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Session"},{"id":176,"kind":2048,"name":"subscribe","url":"classes/session.html#subscribe","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Session"},{"id":177,"kind":2048,"name":"subscribeAsync","url":"classes/session.html#subscribeasync","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Session"},{"id":178,"kind":2048,"name":"unsubscribe","url":"classes/session.html#unsubscribe","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Session"},{"id":179,"kind":2048,"name":"publish","url":"classes/session.html#publish","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Session"},{"id":180,"kind":2048,"name":"unpublish","url":"classes/session.html#unpublish","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Session"},{"id":181,"kind":2048,"name":"signal","url":"classes/session.html#signal","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Session"},{"id":182,"kind":2048,"name":"on","url":"classes/session.html#on","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Session"},{"id":183,"kind":2048,"name":"once","url":"classes/session.html#once","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Session"},{"id":184,"kind":2048,"name":"off","url":"classes/session.html#off","classes":"tsd-kind-method tsd-parent-kind-class","parent":"Session"},{"id":185,"kind":128,"name":"Connection","url":"classes/connection.html","classes":"tsd-kind-class"},{"id":186,"kind":1024,"name":"connectionId","url":"classes/connection.html#connectionid","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Connection"},{"id":187,"kind":1024,"name":"creationTime","url":"classes/connection.html#creationtime","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Connection"},{"id":188,"kind":1024,"name":"data","url":"classes/connection.html#data","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Connection"},{"id":189,"kind":128,"name":"Stream","url":"classes/stream.html","classes":"tsd-kind-class"},{"id":190,"kind":1024,"name":"connection","url":"classes/stream.html#connection","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Stream"},{"id":191,"kind":1024,"name":"frameRate","url":"classes/stream.html#framerate","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Stream"},{"id":192,"kind":1024,"name":"hasVideo","url":"classes/stream.html#hasvideo","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Stream"},{"id":193,"kind":1024,"name":"hasAudio","url":"classes/stream.html#hasaudio","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Stream"},{"id":194,"kind":1024,"name":"streamId","url":"classes/stream.html#streamid","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Stream"},{"id":195,"kind":1024,"name":"typeOfVideo","url":"classes/stream.html#typeofvideo","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Stream"},{"id":196,"kind":1024,"name":"streamManager","url":"classes/stream.html#streammanager","classes":"tsd-kind-property tsd-parent-kind-class","parent":"Stream"},{"id":197,"kind":128,"name":"LocalRecorder","url":"classes/localrecorder.html","classes":"tsd-kind-class"},{"id":198,"kind":1024,"name":"state","url":"classes/localrecorder.html#state","classes":"tsd-kind-property tsd-parent-kind-class","parent":"LocalRecorder"},{"id":199,"kind":2048,"name":"record","url":"classes/localrecorder.html#record","classes":"tsd-kind-method tsd-parent-kind-class","parent":"LocalRecorder"},{"id":200,"kind":2048,"name":"stop","url":"classes/localrecorder.html#stop","classes":"tsd-kind-method tsd-parent-kind-class","parent":"LocalRecorder"},{"id":201,"kind":2048,"name":"pause","url":"classes/localrecorder.html#pause","classes":"tsd-kind-method tsd-parent-kind-class","parent":"LocalRecorder"},{"id":202,"kind":2048,"name":"resume","url":"classes/localrecorder.html#resume","classes":"tsd-kind-method tsd-parent-kind-class","parent":"LocalRecorder"},{"id":203,"kind":2048,"name":"preview","url":"classes/localrecorder.html#preview","classes":"tsd-kind-method tsd-parent-kind-class","parent":"LocalRecorder"},{"id":204,"kind":2048,"name":"clean","url":"classes/localrecorder.html#clean","classes":"tsd-kind-method tsd-parent-kind-class","parent":"LocalRecorder"},{"id":205,"kind":2048,"name":"download","url":"classes/localrecorder.html#download","classes":"tsd-kind-method tsd-parent-kind-class","parent":"LocalRecorder"},{"id":206,"kind":2048,"name":"getBlob","url":"classes/localrecorder.html#getblob","classes":"tsd-kind-method tsd-parent-kind-class","parent":"LocalRecorder"},{"id":207,"kind":2048,"name":"uploadAsBinary","url":"classes/localrecorder.html#uploadasbinary","classes":"tsd-kind-method tsd-parent-kind-class","parent":"LocalRecorder"},{"id":208,"kind":2048,"name":"uploadAsMultipartfile","url":"classes/localrecorder.html#uploadasmultipartfile","classes":"tsd-kind-method tsd-parent-kind-class","parent":"LocalRecorder"},{"id":209,"kind":128,"name":"OpenVidu","url":"classes/openvidu.html","classes":"tsd-kind-class"},{"id":210,"kind":512,"name":"constructor","url":"classes/openvidu.html#constructor","classes":"tsd-kind-constructor tsd-parent-kind-class","parent":"OpenVidu"},{"id":211,"kind":2048,"name":"initSession","url":"classes/openvidu.html#initsession","classes":"tsd-kind-method tsd-parent-kind-class","parent":"OpenVidu"},{"id":212,"kind":2048,"name":"initPublisher","url":"classes/openvidu.html#initpublisher","classes":"tsd-kind-method tsd-parent-kind-class","parent":"OpenVidu"},{"id":213,"kind":2048,"name":"initPublisherAsync","url":"classes/openvidu.html#initpublisherasync","classes":"tsd-kind-method tsd-parent-kind-class","parent":"OpenVidu"},{"id":214,"kind":2048,"name":"initLocalRecorder","url":"classes/openvidu.html#initlocalrecorder","classes":"tsd-kind-method tsd-parent-kind-class","parent":"OpenVidu"},{"id":215,"kind":2048,"name":"checkSystemRequirements","url":"classes/openvidu.html#checksystemrequirements","classes":"tsd-kind-method tsd-parent-kind-class","parent":"OpenVidu"},{"id":216,"kind":2048,"name":"getDevices","url":"classes/openvidu.html#getdevices","classes":"tsd-kind-method tsd-parent-kind-class","parent":"OpenVidu"},{"id":217,"kind":2048,"name":"getUserMedia","url":"classes/openvidu.html#getusermedia","classes":"tsd-kind-method tsd-parent-kind-class","parent":"OpenVidu"},{"id":218,"kind":2048,"name":"enableProdMode","url":"classes/openvidu.html#enableprodmode","classes":"tsd-kind-method tsd-parent-kind-class","parent":"OpenVidu"},{"id":219,"kind":2048,"name":"setAdvancedConfiguration","url":"classes/openvidu.html#setadvancedconfiguration","classes":"tsd-kind-method tsd-parent-kind-class","parent":"OpenVidu"},{"id":220,"kind":128,"name":"StreamPropertyChangedEvent","url":"classes/streampropertychangedevent.html","classes":"tsd-kind-class"},{"id":221,"kind":1024,"name":"stream","url":"classes/streampropertychangedevent.html#stream","classes":"tsd-kind-property tsd-parent-kind-class","parent":"StreamPropertyChangedEvent"},{"id":222,"kind":1024,"name":"changedProperty","url":"classes/streampropertychangedevent.html#changedproperty","classes":"tsd-kind-property tsd-parent-kind-class","parent":"StreamPropertyChangedEvent"},{"id":223,"kind":1024,"name":"newValue","url":"classes/streampropertychangedevent.html#newvalue","classes":"tsd-kind-property tsd-parent-kind-class","parent":"StreamPropertyChangedEvent"},{"id":224,"kind":1024,"name":"oldValue","url":"classes/streampropertychangedevent.html#oldvalue","classes":"tsd-kind-property tsd-parent-kind-class","parent":"StreamPropertyChangedEvent"},{"id":225,"kind":1024,"name":"cancelable","url":"classes/streampropertychangedevent.html#cancelable","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"StreamPropertyChangedEvent"},{"id":226,"kind":1024,"name":"target","url":"classes/streampropertychangedevent.html#target","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"StreamPropertyChangedEvent"},{"id":227,"kind":1024,"name":"type","url":"classes/streampropertychangedevent.html#type","classes":"tsd-kind-property tsd-parent-kind-class tsd-is-inherited","parent":"StreamPropertyChangedEvent"},{"id":228,"kind":2048,"name":"isDefaultPrevented","url":"classes/streampropertychangedevent.html#isdefaultprevented","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StreamPropertyChangedEvent"},{"id":229,"kind":2048,"name":"preventDefault","url":"classes/streampropertychangedevent.html#preventdefault","classes":"tsd-kind-method tsd-parent-kind-class tsd-is-inherited","parent":"StreamPropertyChangedEvent"}]}; \ No newline at end of file diff --git a/openvidu-browser/docs/classes/connection.html b/openvidu-browser/docs/classes/connection.html index 8282a520..e83b1598 100644 --- a/openvidu-browser/docs/classes/connection.html +++ b/openvidu-browser/docs/classes/connection.html @@ -224,6 +224,15 @@
  • StreamEvent
  • +
  • + StreamManager +
  • +
  • + StreamManagerEvent +
  • +
  • + StreamPropertyChangedEvent +
  • Subscriber
  • @@ -245,6 +254,9 @@
  • SignalOptions
  • +
  • + StreamManagerVideo +
  • SubscriberProperties
  • diff --git a/openvidu-browser/docs/classes/connectionevent.html b/openvidu-browser/docs/classes/connectionevent.html index 23a667a9..4703bd1a 100644 --- a/openvidu-browser/docs/classes/connectionevent.html +++ b/openvidu-browser/docs/classes/connectionevent.html @@ -124,7 +124,7 @@
    @@ -171,11 +171,11 @@

    target

    - +
    @@ -191,7 +191,7 @@
    @@ -214,7 +214,7 @@
    @@ -237,19 +237,28 @@

    Prevents the default behaviour of the event. The following events have a default behaviour:

    -
      -
    • sessionDisconnected: automatically unsubscribes the leaving participant from every Subscriber object of the session (this includes closing the WebRTCPeer connection and disposing all MediaStreamTracks) - and also deletes the HTML video element associated to it.
    • -
    • streamDestroyed: if dispatched by a Publisher (you have unpublished), automatically stops all media tracks and deletes the HTML video element associated to the stream. If dispatched by Session, - (other user has unpublished), automatically unsubscribes the proper Subscriber object from the session (this includes closing the WebRTCPeer connection and disposing all MediaStreamTracks) and deletes the HTML video element associated to it.
    • -
    +
      +
    • sessionDisconnected: dispatched by Session object, automatically unsubscribes the leaving participant from every Subscriber object of the session (this includes closing the WebRTCPeer connection and disposing all MediaStreamTracks) + and also deletes any HTML video element associated to each Subscriber (only those created by OpenVidu Browser, either by passing a valid parameter as targetElement in method Session.subscribe or + by calling Subscriber.createVideoElement). For every video removed, each Subscriber object will also dispatch a videoElementDestroyed event.

      +
    • +
    • streamDestroyed:

      +
        +
      • If dispatched by a Publisher (you have unpublished): automatically stops all media tracks and deletes any HTML video element associated to it (only those created by OpenVidu Browser, either by passing a valid parameter as targetElement + in method OpenVidu.initPublisher or by calling Publisher.createVideoElement). For every video removed, the Publisher object will also dispatch a videoElementDestroyed event.
      • +
      • If dispatched by Session (other user has unpublished): automatically unsubscribes the proper Subscriber object from the session (this includes closing the WebRTCPeer connection and disposing all MediaStreamTracks) + and also deletes any HTML video element associated to that Subscriber (only those created by OpenVidu Browser, either by passing a valid parameter as targetElement in method Session.subscribe or + by calling Subscriber.createVideoElement). For every video removed, the Subscriber object will also dispatch a videoElementDestroyed event.
      • +
      +
    • +

    Returns void

    @@ -345,6 +354,15 @@
  • StreamEvent
  • +
  • + StreamManager +
  • +
  • + StreamManagerEvent +
  • +
  • + StreamPropertyChangedEvent +
  • Subscriber
  • @@ -366,6 +384,9 @@
  • SignalOptions
  • +
  • + StreamManagerVideo +
  • SubscriberProperties
  • diff --git a/openvidu-browser/docs/classes/event.html b/openvidu-browser/docs/classes/event.html index 7178928d..0ad1cf86 100644 --- a/openvidu-browser/docs/classes/event.html +++ b/openvidu-browser/docs/classes/event.html @@ -73,6 +73,9 @@
  • Event
  • @@ -129,7 +135,7 @@
    cancelable: boolean
    @@ -141,10 +147,10 @@

    target

    - +
    @@ -159,7 +165,7 @@
    type: string
    @@ -181,7 +187,7 @@
  • Returns any

    @@ -198,7 +204,7 @@
  • @@ -220,19 +226,28 @@
  • Prevents the default behaviour of the event. The following events have a default behaviour:

    -
      -
    • sessionDisconnected: automatically unsubscribes the leaving participant from every Subscriber object of the session (this includes closing the WebRTCPeer connection and disposing all MediaStreamTracks) - and also deletes the HTML video element associated to it.
    • -
    • streamDestroyed: if dispatched by a Publisher (you have unpublished), automatically stops all media tracks and deletes the HTML video element associated to the stream. If dispatched by Session, - (other user has unpublished), automatically unsubscribes the proper Subscriber object from the session (this includes closing the WebRTCPeer connection and disposing all MediaStreamTracks) and deletes the HTML video element associated to it.
    • -
    +
      +
    • sessionDisconnected: dispatched by Session object, automatically unsubscribes the leaving participant from every Subscriber object of the session (this includes closing the WebRTCPeer connection and disposing all MediaStreamTracks) + and also deletes any HTML video element associated to each Subscriber (only those created by OpenVidu Browser, either by passing a valid parameter as targetElement in method Session.subscribe or + by calling Subscriber.createVideoElement). For every video removed, each Subscriber object will also dispatch a videoElementDestroyed event.

      +
    • +
    • streamDestroyed:

      +
        +
      • If dispatched by a Publisher (you have unpublished): automatically stops all media tracks and deletes any HTML video element associated to it (only those created by OpenVidu Browser, either by passing a valid parameter as targetElement + in method OpenVidu.initPublisher or by calling Publisher.createVideoElement). For every video removed, the Publisher object will also dispatch a videoElementDestroyed event.
      • +
      • If dispatched by Session (other user has unpublished): automatically unsubscribes the proper Subscriber object from the session (this includes closing the WebRTCPeer connection and disposing all MediaStreamTracks) + and also deletes any HTML video element associated to that Subscriber (only those created by OpenVidu Browser, either by passing a valid parameter as targetElement in method Session.subscribe or + by calling Subscriber.createVideoElement). For every video removed, the Subscriber object will also dispatch a videoElementDestroyed event.
      • +
      +
    • +

    Returns void

  • @@ -325,6 +340,15 @@
  • StreamEvent
  • +
  • + StreamManager +
  • +
  • + StreamManagerEvent +
  • +
  • + StreamPropertyChangedEvent +
  • Subscriber
  • @@ -346,6 +370,9 @@
  • SignalOptions
  • +
  • + StreamManagerVideo +
  • SubscriberProperties
  • diff --git a/openvidu-browser/docs/classes/localrecorder.html b/openvidu-browser/docs/classes/localrecorder.html index 2f36ee51..0f95dfcf 100644 --- a/openvidu-browser/docs/classes/localrecorder.html +++ b/openvidu-browser/docs/classes/localrecorder.html @@ -138,7 +138,7 @@
  • @@ -160,7 +160,7 @@
  • @@ -182,7 +182,7 @@
  • @@ -204,7 +204,7 @@
  • @@ -227,7 +227,7 @@
  • @@ -255,7 +255,7 @@
  • @@ -278,7 +278,7 @@
  • @@ -301,7 +301,7 @@
  • @@ -324,7 +324,7 @@
  • @@ -361,7 +361,7 @@
  • @@ -490,6 +490,15 @@
  • StreamEvent
  • +
  • + StreamManager +
  • +
  • + StreamManagerEvent +
  • +
  • + StreamPropertyChangedEvent +
  • Subscriber
  • @@ -511,6 +520,9 @@
  • SignalOptions
  • +
  • + StreamManagerVideo +
  • SubscriberProperties
  • diff --git a/openvidu-browser/docs/classes/openvidu.html b/openvidu-browser/docs/classes/openvidu.html index 88004a0c..d2dd671c 100644 --- a/openvidu-browser/docs/classes/openvidu.html +++ b/openvidu-browser/docs/classes/openvidu.html @@ -122,7 +122,7 @@
  • Returns OpenVidu

    @@ -142,7 +142,7 @@
  • @@ -165,7 +165,7 @@
  • @@ -187,7 +187,7 @@
  • @@ -209,7 +209,7 @@
  • @@ -278,7 +278,7 @@ OV.getUserMedia({
  • @@ -312,7 +312,7 @@ OV.getUserMedia({
  • @@ -323,8 +323,9 @@ OV.getUserMedia({

    The Publisher object will dispatch an accessDialogOpened event, only if the pop-up shown by the browser to request permissions for the camera is opened. You can use this event to alert the user about granting permissions for your website. An accessDialogClosed event will also be dispatched after user clicks on "Allow" or "Block" in the pop-up.

    The Publisher object will dispatch an accessAllowed or accessDenied event once it has been granted access to the requested input devices or not.

    -

    The Publisher object will dispatch a videoElementCreated event once the HTML video element has been added to DOM (if targetElement not null or undefined)

    -

    The Publisher object will dispatch a videoPlaying event once the local video starts playing (only if videoElementCreated event has been previously dispatched)

    +

    The Publisher object will dispatch a videoElementCreated event once a HTML video element has been added to DOM (only if you + let OpenVidu take care of the video players). See VideoElementEvent to learn more.

    +

    The Publisher object will dispatch a streamPlaying event once the local streams starts playing. See StreamManagerEvent to learn more.

    Parameters

      @@ -332,8 +333,8 @@ OV.getUserMedia({
      targetElement: string | HTMLElement
      -

      HTML DOM element (or its id attribute) in which the video element of the Publisher will be inserted (see PublisherProperties.insertMode). If null or undefined no default video will be created for this Publisher - (you can always access the native MediaStream object by calling Publisher.stream.getMediaStream() and use it as srcObject of any HTML video element)

      +

      HTML DOM element (or its id attribute) in which the video element of the Publisher will be inserted (see PublisherProperties.insertMode). If null or undefined no default video will be created for this Publisher. + You can always call method Publisher.addVideoElement or Publisher.createVideoElement to manage the video elements on your own (see Manage video players section)

      @@ -343,7 +344,7 @@ OV.getUserMedia({
    • @@ -354,8 +355,9 @@ OV.getUserMedia({

      The Publisher object will dispatch an accessDialogOpened event, only if the pop-up shown by the browser to request permissions for the camera is opened. You can use this event to alert the user about granting permissions for your website. An accessDialogClosed event will also be dispatched after user clicks on "Allow" or "Block" in the pop-up.

      The Publisher object will dispatch an accessAllowed or accessDenied event once it has been granted access to the requested input devices or not.

      -

      The Publisher object will dispatch a videoElementCreated event once the HTML video element has been added to DOM (if targetElement not null or undefined)

      -

      The Publisher object will dispatch a videoPlaying event once the local video starts playing (only if videoElementCreated event has been previously dispatched)

      +

      The Publisher object will dispatch a videoElementCreated event once a HTML video element has been added to DOM (only if you + let OpenVidu take care of the video players). See VideoElementEvent to learn more.

      +

      The Publisher object will dispatch a streamPlaying event once the local streams starts playing. See StreamManagerEvent to learn more.

      Parameters

        @@ -363,8 +365,8 @@ OV.getUserMedia({
        targetElement: string | HTMLElement
        -

        HTML DOM element (or its id attribute) in which the video element of the Publisher will be inserted (see PublisherProperties.insertMode). If null or undefined no default video will be created for this Publisher - (you can always access the native MediaStream object by calling Publisher.stream.getMediaStream() and use it as srcObject of any HTML video element)

        +

        HTML DOM element (or its id attribute) in which the video element of the Publisher will be inserted (see PublisherProperties.insertMode). If null or undefined no default video will be created for this Publisher. + You can always call method Publisher.addVideoElement or Publisher.createVideoElement to manage the video elements on your own (see Manage video players section)

        @@ -377,7 +379,7 @@ OV.getUserMedia({
      • @@ -388,8 +390,9 @@ OV.getUserMedia({

        The Publisher object will dispatch an accessDialogOpened event, only if the pop-up shown by the browser to request permissions for the camera is opened. You can use this event to alert the user about granting permissions for your website. An accessDialogClosed event will also be dispatched after user clicks on "Allow" or "Block" in the pop-up.

        The Publisher object will dispatch an accessAllowed or accessDenied event once it has been granted access to the requested input devices or not.

        -

        The Publisher object will dispatch a videoElementCreated event once the HTML video element has been added to DOM (if targetElement not null or undefined)

        -

        The Publisher object will dispatch a videoPlaying event once the local video starts playing (only if videoElementCreated event has been previously dispatched)

        +

        The Publisher object will dispatch a videoElementCreated event once a HTML video element has been added to DOM (only if you + let OpenVidu take care of the video players). See VideoElementEvent to learn more.

        +

        The Publisher object will dispatch a streamPlaying event once the local streams starts playing. See StreamManagerEvent to learn more.

        Parameters

  • @@ -114,7 +114,7 @@
    @@ -193,6 +193,15 @@
  • StreamEvent
  • +
  • + StreamManager +
  • +
  • + StreamManagerEvent +
  • +
  • + StreamPropertyChangedEvent +
  • Subscriber
  • @@ -214,6 +223,9 @@
  • SignalOptions
  • +
  • + StreamManagerVideo +
  • SubscriberProperties
  • diff --git a/openvidu-browser/docs/classes/publisher.html b/openvidu-browser/docs/classes/publisher.html index afc85838..96c72bb4 100644 --- a/openvidu-browser/docs/classes/publisher.html +++ b/openvidu-browser/docs/classes/publisher.html @@ -78,7 +78,12 @@

    Hierarchy

    @@ -96,18 +101,23 @@

    Properties

    Methods

    +
    + +

    id

    +
    id: string
    + +
    +
    +

    id attribute of the DOM video element displaying the Publisher/Subscriber's stream. This property is only defined if:

    + +
    +
    +
    - -

    element

    -
    element: HTMLElement
    + +

    isSubscribedToRemote

    +
    isSubscribedToRemote: boolean = false
    -

    HTML DOM element in which the Publisher's video has been inserted

    +

    Whether you have called Publisher.subscribeToRemote with value true or false (false by default)

    -
    - -

    id

    -
    id: string
    +
    + +

    remote

    +
    remote: boolean
    -

    DOM id of the Publisher's video element

    +

    Whether the Stream represented in the DOM is local or remote

    +
    @@ -169,7 +204,7 @@
    session: Session
    @@ -178,35 +213,148 @@
    -
    +

    stream

    stream: Stream
    -

    The Stream that you are publishing

    +

    The Stream represented in the DOM by the Publisher/Subscriber

    +
    +
    +
    +
    + +

    targetElement

    +
    targetElement: HTMLElement
    + +
    +
    +

    The DOM HTMLElement assigned as target element when creating the video for the Publisher/Subscriber. This property is only defined if:

    + +
    +
    +
    +
    + +

    videos

    +
    videos: StreamManagerVideo[] = []
    + +
    +
    +

    All the videos displaying the Stream of this Publisher/Subscriber

    Methods

    -
    - -

    off

    -

    Returns Promise<any>

    -

    A Promise to which you must subscribe that is resolved if the recording successfully started and rejected with an Error object if not

    +

    A Promise to which you must subscribe that is resolved if the the connection to the Session was successful and rejected with an Error object if not

    @@ -250,7 +266,7 @@
  • @@ -260,16 +276,21 @@

    Events dispatched

    The Session object of the local participant will dispatch a sessionDisconnected event. This event will automatically unsubscribe the leaving participant from every Subscriber object of the session (this includes closing the WebRTCPeer connection and disposing all MediaStreamTracks) - and also delete the HTML video element associated to it. - Call event.preventDefault() to avoid this beahviour and take care of disposing and cleaning all the Subscriber objects yourself. See SessionDisconnectedEvent to learn more.

    + and also deletes any HTML video element associated to each Subscriber (only those created by OpenVidu Browser). + For every video removed, each Subscriber object will dispatch a videoElementDestroyed event. + Call event.preventDefault() uppon event sessionDisconnected to avoid this behaviour and take care of disposing and cleaning all the Subscriber objects yourself. + See SessionDisconnectedEvent and VideoElementEvent to learn more to learn more.

    The Publisher object of the local participant will dispatch a streamDestroyed event if there is a Publisher object publishing to the session. - This event will automatically stop all media tracks and delete the HTML video element associated to it. - Call event.preventDefault() if you want clean the Publisher object yourself or re-publish it in a different Session (to do so it is a mandatory - requirement to call Session.unpublish() or/and Session.disconnect() in the previous session). See StreamEvent to learn more.

    + This event will automatically stop all media tracks and delete any HTML video element associated to it (only those created by OpenVidu Browser). + For every video removed, the Publisher object will dispatch a videoElementDestroyed event. + Call event.preventDefault() uppon event streamDestroyed if you want to clean the Publisher object on your own or re-publish it in a different Session (to do so it is a mandatory requirement to call Session.unpublish() + or/and Session.disconnect() in the previous session). See StreamEvent and VideoElementEvent to learn more.

    The Session object of every other participant connected to the session will dispatch a streamDestroyed event if the disconnected participant was publishing. This event will automatically unsubscribe the Subscriber object from the session (this includes closing the WebRTCPeer connection and disposing all MediaStreamTracks) - and delete the HTML video element associated to it. - Call event.preventDefault() to avoid this default behaviour and take care of disposing and cleaning the Subscriber object yourself. See StreamEvent to learn more.

    + and also deletes any HTML video element associated to that Subscriber (only those created by OpenVidu Browser). + For every video removed, the Subscriber object will dispatch a videoElementDestroyed event. + Call event.preventDefault() uppon event streamDestroyed to avoid this default behaviour and take care of disposing and cleaning the Subscriber object yourself. + See StreamEvent and VideoElementEvent to learn more.

    The Session object of every other participant connected to the session will dispatch a connectionDestroyed event in any case. See ConnectionEvent to learn more.

    Returns void

    @@ -286,7 +307,7 @@
  • @@ -335,7 +356,7 @@
  • @@ -384,7 +405,7 @@
  • @@ -433,17 +454,16 @@
  • -

    Publishes the participant's audio-video stream contained in publisher object to the session

    +

    Publishes to the Session the Publisher object

    Events dispatched

    The local Publisher object will dispatch a streamCreated event upon successful termination of this method. See StreamEvent to learn more.

    -

    The local Publisher object will dispatch a remoteVideoPlaying event only if Publisher.subscribeToRemote was called before this method, once the remote video starts playing. - See VideoElementEvent to learn more.

    +

    The local Publisher object will dispatch a streamPlaying once the media stream starts playing. See StreamManagerEvent to learn more.

    The Session object of every other participant connected to the session will dispatch a streamCreated event so they can subscribe to it. See StreamEvent to learn more.

    Parameters

    @@ -453,7 +473,7 @@
  • Returns Promise<any>

    -

    A Promise (to which you can optionally subscribe to) that is resolved if the publisher was successfully published and rejected with an Error object if not

    +

    A Promise (to which you can optionally subscribe to) that is resolved only after the publisher was successfully published and rejected with an Error object if not

    @@ -467,7 +487,7 @@
  • @@ -504,7 +524,7 @@
  • @@ -512,9 +532,9 @@

    Subscribes to a stream, adding a new HTML video element to DOM with subscriberProperties settings. This method is usually called in the callback of streamCreated event.

    Events dispatched

    -

    The Subscriber object will dispatch a videoElementCreated event once the HTML video element has been added to DOM (if targetElement not null or undefined)

    -

    The Subscriber object will dispatch a videoPlaying event once the remote video starts playing (only if videoElementCreated event has been previously dispatched)

    -

    See VideoElementEvent to learn more.

    +

    The Subscriber object will dispatch a videoElementCreated event once the HTML video element has been added to DOM (only if you + let OpenVidu take care of the video players). See VideoElementEvent to learn more.

    +

    The Subscriber object will dispatch a streamPlaying event once the remote stream starts playing. See StreamManagerEvent to learn more.

    Parameters

    Returns EventDispatcher

    +

    The EventDispatcher object

  • @@ -202,13 +205,13 @@

    once

    -

    Returns any

    +

    Returns Object

    +

    The object that dispatched the event

    @@ -310,6 +314,15 @@
  • StreamEvent
  • +
  • + StreamManager +
  • +
  • + StreamManagerEvent +
  • +
  • + StreamPropertyChangedEvent +
  • Subscriber
  • @@ -346,6 +359,9 @@
  • SignalOptions
  • +
  • + StreamManagerVideo +
  • SubscriberProperties
  • diff --git a/openvidu-browser/docs/interfaces/openviduadvancedconfiguration.html b/openvidu-browser/docs/interfaces/openviduadvancedconfiguration.html index b606a20e..059f9dee 100644 --- a/openvidu-browser/docs/interfaces/openviduadvancedconfiguration.html +++ b/openvidu-browser/docs/interfaces/openviduadvancedconfiguration.html @@ -205,6 +205,15 @@
  • StreamEvent
  • +
  • + StreamManager +
  • +
  • + StreamManagerEvent +
  • +
  • + StreamPropertyChangedEvent +
  • Subscriber
  • @@ -241,6 +250,9 @@
  • SignalOptions
  • +
  • + StreamManagerVideo +
  • SubscriberProperties
  • diff --git a/openvidu-browser/docs/interfaces/publisherproperties.html b/openvidu-browser/docs/interfaces/publisherproperties.html index e0acaf84..706b201d 100644 --- a/openvidu-browser/docs/interfaces/publisherproperties.html +++ b/openvidu-browser/docs/interfaces/publisherproperties.html @@ -195,7 +195,7 @@
    -

    Whether to initially publish to the session with the audio unmuted or muted. Only makes sense if property audioSource is NOT set to false. You can change the audio state later during the session with Publisher.publishAudio

    +

    Whether to initially publish to the session with the audio unmuted or muted. Only makes sense if property audioSource is NOT set to false or null. You can change the audio state later during the session with Publisher.publishAudio

    default
    @@ -215,7 +215,7 @@
    -

    Whether to initially publish to the session with the video enabled or disabled. Only makes sense if property videoSource is NOT set to false. You can change the video state later during the session with Publisher.publishVideo

    +

    Whether to initially publish to the session with the video enabled or disabled. Only makes sense if property videoSource is NOT set to false or null. You can change the video state later during the session with Publisher.publishVideo

    default
    @@ -335,6 +335,15 @@
  • StreamEvent
  • +
  • + StreamManager +
  • +
  • + StreamManagerEvent +
  • +
  • + StreamPropertyChangedEvent +
  • Subscriber
  • @@ -386,6 +395,9 @@
  • SignalOptions
  • +
  • + StreamManagerVideo +
  • SubscriberProperties
  • diff --git a/openvidu-browser/docs/interfaces/signaloptions.html b/openvidu-browser/docs/interfaces/signaloptions.html index 853407b3..e1c69932 100644 --- a/openvidu-browser/docs/interfaces/signaloptions.html +++ b/openvidu-browser/docs/interfaces/signaloptions.html @@ -209,6 +209,15 @@
  • StreamEvent
  • +
  • + StreamManager +
  • +
  • + StreamManagerEvent +
  • +
  • + StreamPropertyChangedEvent +
  • Subscriber
  • @@ -245,6 +254,9 @@
    • diff --git a/openvidu-browser/lib/OpenVidu/LocalRecorder.js.map b/openvidu-browser/lib/OpenVidu/LocalRecorder.js.map index a754d62e..ee908ac5 100644 --- a/openvidu-browser/lib/OpenVidu/LocalRecorder.js.map +++ b/openvidu-browser/lib/OpenVidu/LocalRecorder.js.map @@ -1 +1 @@ -{"version":3,"file":"LocalRecorder.js","sourceRoot":"","sources":["../../src/OpenVidu/LocalRecorder.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"LocalRecorder.js","sourceRoot":"","sources":["../../src/OpenVidu/LocalRecorder.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/openvidu-browser/lib/OpenVidu/MediaElement.js b/openvidu-browser/lib/OpenVidu/MediaElement.js new file mode 100644 index 00000000..1d2a3e77 --- /dev/null +++ b/openvidu-browser/lib/OpenVidu/MediaElement.js @@ -0,0 +1,18 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +var MediaElement = (function () { + function MediaElement() { + } + MediaElement.prototype.on = function (type, handler) { + throw new Error("Method not implemented."); + }; + MediaElement.prototype.once = function (type, handler) { + throw new Error("Method not implemented."); + }; + MediaElement.prototype.off = function (type, handler) { + throw new Error("Method not implemented."); + }; + return MediaElement; +}()); +exports.MediaElement = MediaElement; +//# sourceMappingURL=MediaElement.js.map \ No newline at end of file diff --git a/openvidu-browser/lib/OpenVidu/MediaElement.js.map b/openvidu-browser/lib/OpenVidu/MediaElement.js.map new file mode 100644 index 00000000..bd4b3a0b --- /dev/null +++ b/openvidu-browser/lib/OpenVidu/MediaElement.js.map @@ -0,0 +1 @@ +{"version":3,"file":"MediaElement.js","sourceRoot":"","sources":["../../src/OpenVidu/MediaElement.ts"],"names":[],"mappings":";;AAuBA;IAAA;IAaA,CAAC;IAXG,yBAAE,GAAF,UAAG,IAAY,EAAE,OAA+B;QAC5C,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IAED,2BAAI,GAAJ,UAAK,IAAY,EAAE,OAA+B;QAC9C,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IAED,0BAAG,GAAH,UAAI,IAAY,EAAE,OAA8C;QAC5D,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC/C,CAAC;IACL,mBAAC;AAAD,CAAC,AAbD,IAaC;AAbY,oCAAY"} \ No newline at end of file diff --git a/openvidu-browser/lib/OpenVidu/MediaManager.d.ts b/openvidu-browser/lib/OpenVidu/MediaManager.d.ts new file mode 100644 index 00000000..533b2968 --- /dev/null +++ b/openvidu-browser/lib/OpenVidu/MediaManager.d.ts @@ -0,0 +1,81 @@ +import { Stream } from './Stream'; +import { EventDispatcher } from '../OpenViduInternal/Interfaces/Public/EventDispatcher'; +import { Event } from '../OpenViduInternal/Events/Event'; +import { VideoInsertMode } from '../OpenViduInternal/Enums/VideoInsertMode'; +import EventEmitter = require('wolfy87-eventemitter'); +/** + * Interface in charge of displaying the media streams in the HTML DOM. This wraps any Publisher and Subscriber object, as well as + * any extra representation in the DOM you assign to some Stream by calling [[Stream.addVideoElement]]. + * + * The use of this interface is useful when you don't need to differentiate between streams and just want to directly manage videos + */ +export declare class MediaManager implements EventDispatcher { + /** + * The Stream represented in the DOM by the MediaManager + */ + stream: Stream; + /** + * Whether the MediaManager is representing in the DOM a local Stream ([[Publisher]]) or a remote Stream ([[Subscriber]]) + */ + remote: boolean; + /** + * The DOM HTMLElement assigned as target element when initializing the MediaManager. This property is defined when [[OpenVidu.initPublisher]] + * or [[Session.subscribe]] methods have been called passing a valid `targetElement` parameter. It is undefined when [[OpenVidu.initPublisher]] + * or [[Session.subscribe]] methods have been called passing *null* or *undefined* as `targetElement` parameter or when the MediaManager hass been + * created by calling [[Stream.addVideoElement]] + */ + targetElement?: HTMLElement; + /** + * The DOM HTMLVideoElement displaying the MediaManager's stream + */ + video: HTMLVideoElement; + /** + * `id` attribute of the DOM HTMLVideoElement displaying the MediaManager's stream + */ + id: string; + /** + * @hidden + */ + isVideoElementCreated: boolean; + /** + * @hidden + */ + protected ee: EventEmitter; + /** + * @hidden + */ + protected customEe: EventEmitter; + /** + * @hidden + */ + constructor(stream: Stream, targetElement?: HTMLElement | string); + /** + * See [[EventDispatcher.on]] + */ + on(type: string, handler: (event: Event) => void): EventDispatcher; + /** + * See [[EventDispatcher.once]] + */ + once(type: string, handler: (event: Event) => void): MediaManager; + /** + * See [[EventDispatcher.off]] + */ + off(type: string, handler?: (event: Event) => void): MediaManager; + /** + * @hidden + */ + insertVideo(targetElement?: HTMLElement, insertMode?: VideoInsertMode): HTMLVideoElement; + /** + * @hidden + */ + insertVideoWithMode(insertMode: VideoInsertMode): void; + /** + * @hidden + */ + removeVideo(): void; + /** + * @hidden + */ + addOnCanPlayEvent(): void; + private mirrorVideo(); +} diff --git a/openvidu-browser/lib/OpenVidu/MediaManager.js b/openvidu-browser/lib/OpenVidu/MediaManager.js new file mode 100644 index 00000000..35893851 --- /dev/null +++ b/openvidu-browser/lib/OpenVidu/MediaManager.js @@ -0,0 +1,242 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +var VideoElementEvent_1 = require("../OpenViduInternal/Events/VideoElementEvent"); +var VideoInsertMode_1 = require("../OpenViduInternal/Enums/VideoInsertMode"); +var EventEmitter = require("wolfy87-eventemitter"); +var StreamManager = (function () { + function StreamManager(stream, targetElement) { + var _this = this; + this.videos = []; + this.isVideoElementCreated = false; + this.ee = new EventEmitter(); + this.customEe = new EventEmitter(); + this.stream = stream; + this.stream.streamManager = this; + if (typeof targetElement === 'string') { + var e = document.getElementById(targetElement); + if (!!e) { + this.targetElement = e; + } + } + else if (targetElement instanceof HTMLElement) { + this.targetElement = targetElement; + } + else if (!!this.targetElement) { + console.warn("The provided 'targetElement' couldn't be resolved to any HTML element: " + targetElement); + } + this.customEe.on('video-removed', function (element) { + _this.ee.emitEvent('videoElementDestroyed', [new VideoElementEvent_1.VideoElementEvent(element, _this, 'videoElementDestroyed')]); + }); + } + StreamManager.prototype.on = function (type, handler) { + var _this = this; + this.ee.on(type, function (event) { + if (event) { + console.info("Event '" + type + "' triggered", event); + } + else { + console.info("Event '" + type + "' triggered"); + } + handler(event); + }); + if (type === 'videoElementCreated') { + if (!!this.stream && this.isVideoElementCreatedAsync) { + this.isVideoElementCreated = false; + this.ee.emitEvent('videoElementCreated', [new VideoElementEvent_1.VideoElementEvent(this.videos[0], this, 'videoElementCreated')]); + } + else { + this.customEe.on('video-element-created', function (element) { + _this.id = element.id; + _this.ee.emitEvent('videoElementCreated', [new VideoElementEvent_1.VideoElementEvent(element.element, _this, 'videoElementCreated')]); + }); + } + } + if (type === 'videoPlaying') { + if (!this.stream.displayMyRemote() && !!this.video && + this.video.currentTime > 0 && + this.video.paused === false && + this.video.ended === false && + this.video.readyState === 4) { + this.ee.emitEvent('videoPlaying', [new VideoElementEvent_1.VideoElementEvent(this.videos[0], this, 'videoPlaying')]); + } + else { + this.customEe.on('video-is-playing', function (element) { + _this.ee.emitEvent('videoPlaying', [new VideoElementEvent_1.VideoElementEvent(element.element, _this, 'videoPlaying')]); + }); + } + } + return this; + }; + StreamManager.prototype.once = function (type, handler) { + var _this = this; + this.ee.once(type, function (event) { + if (event) { + console.info("Event '" + type + "' triggered once", event); + } + else { + console.info("Event '" + type + "' triggered once"); + } + handler(event); + }); + if (type === 'videoElementCreated') { + if (!!this.stream && this.isVideoElementCreated) { + this.isVideoElementCreated = false; + this.ee.emitEvent('videoElementCreated', [new VideoElementEvent_1.VideoElementEvent(this.videos[0], this, 'videoElementCreated')]); + } + else { + this.customEe.once('video-element-created', function (element) { + _this.id = element.id; + _this.ee.emitEvent('videoElementCreated', [new VideoElementEvent_1.VideoElementEvent(element.element, _this, 'videoElementCreated')]); + }); + } + } + if (type === 'videoPlaying') { + if (!this.stream.displayMyRemote() && this.video && + this.video.currentTime > 0 && + this.video.paused === false && + this.video.ended === false && + this.video.readyState === 4) { + this.ee.emitEvent('videoPlaying', [new VideoElementEvent_1.VideoElementEvent(this.video, this, 'videoPlaying')]); + } + else { + this.customEe.once('video-is-playing', function (element) { + _this.ee.emitEvent('videoPlaying', [new VideoElementEvent_1.VideoElementEvent(element.element, _this, 'videoPlaying')]); + }); + } + } + return this; + }; + StreamManager.prototype.off = function (type, handler) { + if (!handler) { + this.ee.removeAllListeners(type); + } + else { + this.ee.off(type, handler); + } + return this; + }; + StreamManager.prototype.addVideoElement = function (video) { + this.initializeVideoProperties(video); + video.srcObject = this.stream.getMediaStream(); + video.autoplay = true; + video.muted = this.stream.isLocal() ? true : false; + this.remote = !this.stream.isLocal(); + streamManager.id = video.id; + }; + StreamManager.prototype.createVideoElement = function (targetElement, insertMode) { + var tar; + if (typeof targetElement === 'string') { + var e = document.getElementById(targetElement); + if (!!e) { + tar = e; + } + else { + console.error("The provided 'targetElement' couldn't be resolved to any HTML element: " + targetElement); + return; + } + } + else if (targetElement instanceof HTMLElement) { + tar = targetElement; + } + else if (!!this.targetElement) { + console.error("The provided 'targetElement' couldn't be resolved to any HTML element: " + targetElement); + return; + } + this.insertVideo(tar, insertMode); + }; + StreamManager.prototype.insertVideo = function (targetElement, insertMode) { + if (!!targetElement) { + var video = document.createElement('video'); + this.initializeVideoProperties(video); + this.targetElement = targetElement; + var insMode = !!insertMode ? insertMode : VideoInsertMode_1.VideoInsertMode.APPEND; + this.insertVideoElementWithMode(video, insMode); + this.videos.push(video); + this.stream.session.videos[this.stream.connection.connectionId].push(video); + this.customEe.emitEvent('video-element-created', [{ + element: video + }]); + this.isVideoElementCreated = true; + } + if (this.stream.isLocal()) { + this.stream.isLocalStreamReadyToPublish = true; + this.stream.ee.emitEvent('stream-ready-to-publish', []); + } + }; + StreamManager.prototype.initializeVideoProperties = function (video) { + video.srcObject = this.stream.getMediaStream(); + video.autoplay = true; + video.controls = false; + if (!video.id) { + video.id = (this.stream.isLocal() ? 'local-' : 'remote-') + 'video-' + this.stream.streamId; + } + if (this.stream.isLocal() && !this.stream.displayMyRemote()) { + video.muted = true; + if (this.stream.outboundStreamOpts.publisherProperties.mirror) { + this.mirrorVideo(video); + } + this.addOnCanPlayLocalVideoEvent(video); + } + }; + StreamManager.prototype.insertVideoElementWithMode = function (video, insertMode) { + if (!!this.targetElement) { + switch (insertMode) { + case VideoInsertMode_1.VideoInsertMode.AFTER: + this.targetElement.parentNode.insertBefore(video, this.targetElement.nextSibling); + break; + case VideoInsertMode_1.VideoInsertMode.APPEND: + this.targetElement.appendChild(video); + break; + case VideoInsertMode_1.VideoInsertMode.BEFORE: + this.targetElement.parentNode.insertBefore(video, this.targetElement); + break; + case VideoInsertMode_1.VideoInsertMode.PREPEND: + this.targetElement.insertBefore(video, this.targetElement.childNodes[0]); + break; + case VideoInsertMode_1.VideoInsertMode.REPLACE: + this.targetElement.parentNode.replaceChild(video, this.targetElement); + break; + default: + this.insertVideoElementWithMode(video, VideoInsertMode_1.VideoInsertMode.APPEND); + } + } + }; + StreamManager.prototype.removeVideos = function () { + var _this = this; + this.videos.forEach(function (video) { + video.parentNode.removeChild(video); + _this.customEe.emitEvent('video-removed', [video]); + }); + this.videos = []; + delete this.stream.session.videos[this.stream.connection.connectionId]; + }; + StreamManager.prototype.addOnCanPlayLocalVideoEvent = function (video) { + var _this = this; + video.oncanplay = function () { + if (_this.stream.isLocal() && _this.stream.displayMyRemote()) { + console.info("Your own remote 'Stream' with id [" + _this.stream.streamId + '] video is now playing'); + _this.customEe.emitEvent('remote-video-is-playing', [{ + element: video + }]); + } + else if (!_this.stream.isLocal() && !_this.stream.displayMyRemote()) { + console.info("Remote 'Stream' with id [" + _this.stream.streamId + '] video is now playing'); + _this.customEe.emitEvent('video-is-playing', [{ + element: video + }]); + } + }; + }; + StreamManager.prototype.updateMediaStream = function (mediaStream) { + this.videos.forEach(function (video) { + video.srcObject = mediaStream; + }); + }; + StreamManager.prototype.mirrorVideo = function (video) { + video.style.transform = 'rotateY(180deg)'; + video.style.webkitTransform = 'rotateY(180deg)'; + }; + return StreamManager; +}()); +exports.StreamManager = StreamManager; +//# sourceMappingURL=MediaManager.js.map \ No newline at end of file diff --git a/openvidu-browser/lib/OpenVidu/MediaManager.js.map b/openvidu-browser/lib/OpenVidu/MediaManager.js.map new file mode 100644 index 00000000..42813fb7 --- /dev/null +++ b/openvidu-browser/lib/OpenVidu/MediaManager.js.map @@ -0,0 +1 @@ +{"version":3,"file":"MediaManager.js","sourceRoot":"","sources":["../../src/OpenVidu/MediaManager.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/openvidu-browser/lib/OpenVidu/OpenVidu.d.ts b/openvidu-browser/lib/OpenVidu/OpenVidu.d.ts index 39acc47b..c0176f3a 100644 --- a/openvidu-browser/lib/OpenVidu/OpenVidu.d.ts +++ b/openvidu-browser/lib/OpenVidu/OpenVidu.d.ts @@ -10,8 +10,11 @@ import { PublisherProperties } from '../OpenViduInternal/Interfaces/Public/Publi * Use it to initialize objects of type [[Session]], [[Publisher]] and [[LocalRecorder]] */ export declare class OpenVidu { - private session; private jsonRpcClient; + /** + * @hidden + */ + session: Session; /** * @hidden */ diff --git a/openvidu-browser/lib/OpenVidu/OpenVidu.js b/openvidu-browser/lib/OpenVidu/OpenVidu.js index 55e4211b..49323c27 100644 --- a/openvidu-browser/lib/OpenVidu/OpenVidu.js +++ b/openvidu-browser/lib/OpenVidu/OpenVidu.js @@ -62,12 +62,13 @@ var OpenVidu = /** @class */ (function () { * * The [[Publisher]] object will dispatch an `accessAllowed` or `accessDenied` event once it has been granted access to the requested input devices or not. * - * The [[Publisher]] object will dispatch a `videoElementCreated` event once the HTML video element has been added to DOM (if _targetElement_ not null or undefined) + * The [[Publisher]] object will dispatch a `videoElementCreated` event once a HTML video element has been added to DOM (only if you + * [let OpenVidu take care of the video players](/docs/how-do-i/manage-videos/#let-openvidu-take-care-of-the-video-players)). See [[VideoElementEvent]] to learn more. * - * The [[Publisher]] object will dispatch a `videoPlaying` event once the local video starts playing (only if `videoElementCreated` event has been previously dispatched) + * The [[Publisher]] object will dispatch a `streamPlaying` event once the local streams starts playing. See [[StreamManagerEvent]] to learn more. * - * @param targetElement HTML DOM element (or its `id` attribute) in which the video element of the Publisher will be inserted (see [[PublisherProperties.insertMode]]). If null or undefined no default video will be created for this Publisher - * (you can always access the native MediaStream object by calling _Publisher.stream.getMediaStream()_ and use it as _srcObject_ of any HTML video element) + * @param targetElement HTML DOM element (or its `id` attribute) in which the video element of the Publisher will be inserted (see [[PublisherProperties.insertMode]]). If *null* or *undefined* no default video will be created for this Publisher. + * You can always call method [[Publisher.addVideoElement]] or [[Publisher.createVideoElement]] to manage the video elements on your own (see [Manage video players](/docs/how-do-i/manage-videos) section) * @param completionHandler `error` parameter is null if `initPublisher` succeeds, and is defined if it fails. * `completionHandler` function is called before the Publisher dispatches an `accessAllowed` or an `accessDenied` event */ @@ -112,7 +113,7 @@ var OpenVidu = /** @class */ (function () { } publisher.emitEvent('accessAllowed', []); })["catch"](function (error) { - if (!!completionHandler !== undefined) { + if (completionHandler !== undefined) { completionHandler(error); } publisher.emitEvent('accessDenied', []); @@ -245,7 +246,7 @@ var OpenVidu = /** @class */ (function () { var errorName; var errorMessage = error.toString(); if (!(options.videoSource === 'screen')) { - errorName = (options.videoSource === false || options.videoSource === null) ? OpenViduError_1.OpenViduErrorName.MICROPHONE_ACCESS_DENIED : OpenViduError_1.OpenViduErrorName.CAMERA_ACCESS_DENIED; + errorName = OpenViduError_1.OpenViduErrorName.DEVICE_ACCESS_DENIED; } else { errorName = OpenViduError_1.OpenViduErrorName.SCREEN_CAPTURE_DENIED; diff --git a/openvidu-browser/lib/OpenVidu/OpenVidu.js.map b/openvidu-browser/lib/OpenVidu/OpenVidu.js.map index 64a92675..a41e5236 100644 --- a/openvidu-browser/lib/OpenVidu/OpenVidu.js.map +++ b/openvidu-browser/lib/OpenVidu/OpenVidu.js.map @@ -1 +1 @@ -{"version":3,"file":"OpenVidu.js","sourceRoot":"","sources":["../../src/OpenVidu/OpenVidu.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"OpenVidu.js","sourceRoot":"","sources":["../../src/OpenVidu/OpenVidu.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/openvidu-browser/lib/OpenVidu/Publisher.d.ts b/openvidu-browser/lib/OpenVidu/Publisher.d.ts index 2004750f..e6de5602 100644 --- a/openvidu-browser/lib/OpenVidu/Publisher.d.ts +++ b/openvidu-browser/lib/OpenVidu/Publisher.d.ts @@ -1,42 +1,33 @@ import { OpenVidu } from './OpenVidu'; import { Session } from './Session'; -import { Stream } from './Stream'; +import { StreamManager } from './StreamManager'; import { EventDispatcher } from '../OpenViduInternal/Interfaces/Public/EventDispatcher'; import { PublisherProperties } from '../OpenViduInternal/Interfaces/Public/PublisherProperties'; -import { StreamEvent } from '../OpenViduInternal/Events/StreamEvent'; -import { VideoElementEvent } from '../OpenViduInternal/Events/VideoElementEvent'; +import { Event } from '../OpenViduInternal/Events/Event'; /** * Packs local media streams. Participants can publish it to a session. Initialized with [[OpenVidu.initPublisher]] method */ -export declare class Publisher implements EventDispatcher { +export declare class Publisher extends StreamManager { private openvidu; /** * Whether the Publisher has been granted access to the requested input devices or not */ accessAllowed: boolean; /** - * HTML DOM element in which the Publisher's video has been inserted + * Whether you have called [[Publisher.subscribeToRemote]] with value `true` or `false` (*false* by default) */ - element: HTMLElement; - /** - * DOM id of the Publisher's video element - */ - id: string; + isSubscribedToRemote: boolean; /** * The [[Session]] to which the Publisher belongs */ session: Session; - /** - * The [[Stream]] that you are publishing - */ - stream: Stream; - private ee; + private accessDenied; private properties; private permissionDialogTimeout; /** * @hidden */ - constructor(targetElement: string | HTMLElement, properties: PublisherProperties, openvidu: OpenVidu); + constructor(targEl: string | HTMLElement, properties: PublisherProperties, openvidu: OpenVidu); /** * Publish or unpublish the audio stream (if available). Calling this method twice in a row passing same value will have no effect * @param value `true` to publish the audio stream, `false` to unpublish it @@ -48,21 +39,17 @@ export declare class Publisher implements EventDispatcher { */ publishVideo(value: boolean): void; /** - * Call this method before [[Session.publish]] to subscribe to your Publisher's stream as any other user would do. The local video will be automatically replaced by the remote video + * Call this method before [[Session.publish]] to subscribe to your Publisher's remote stream instead of using the local stream, as any other user would do. */ - subscribeToRemote(): void; + subscribeToRemote(value?: boolean): void; /** * See [[EventDispatcher.on]] */ - on(type: string, handler: (event: StreamEvent | VideoElementEvent) => void): EventDispatcher; + on(type: string, handler: (event: Event) => void): EventDispatcher; /** * See [[EventDispatcher.once]] */ - once(type: string, handler: (event: StreamEvent | VideoElementEvent) => void): Publisher; - /** - * See [[EventDispatcher.off]] - */ - off(type: string, handler?: (event: StreamEvent | VideoElementEvent) => void): Publisher; + once(type: string, handler: (event: Event) => void): Publisher; /** * @hidden */ @@ -75,8 +62,10 @@ export declare class Publisher implements EventDispatcher { * @hidden */ emitEvent(type: string, eventArray: any[]): void; + /** + * @hidden + */ + reestablishStreamPlayingEvent(): void; private setPermissionDialogTimer(waitTime); private clearPermissionDialogTimer(startTime, waitTime); - private userMediaHasVideo(callback); - private userMediaHasAudio(callback); } diff --git a/openvidu-browser/lib/OpenVidu/Publisher.js b/openvidu-browser/lib/OpenVidu/Publisher.js index bf332495..a2d1c635 100644 --- a/openvidu-browser/lib/OpenVidu/Publisher.js +++ b/openvidu-browser/lib/OpenVidu/Publisher.js @@ -15,49 +15,50 @@ * limitations under the License. * */ +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); exports.__esModule = true; +var Session_1 = require("./Session"); var Stream_1 = require("./Stream"); +var StreamManager_1 = require("./StreamManager"); var StreamEvent_1 = require("../OpenViduInternal/Events/StreamEvent"); var VideoElementEvent_1 = require("../OpenViduInternal/Events/VideoElementEvent"); var OpenViduError_1 = require("../OpenViduInternal/Enums/OpenViduError"); -var EventEmitter = require("wolfy87-eventemitter"); /** * Packs local media streams. Participants can publish it to a session. Initialized with [[OpenVidu.initPublisher]] method */ -var Publisher = /** @class */ (function () { +var Publisher = /** @class */ (function (_super) { + __extends(Publisher, _super); /** * @hidden */ - function Publisher(targetElement, properties, openvidu) { - var _this = this; - this.openvidu = openvidu; + function Publisher(targEl, properties, openvidu) { + var _this = _super.call(this, new Stream_1.Stream((!!openvidu.session) ? openvidu.session : new Session_1.Session(openvidu), { publisherProperties: properties, mediaConstraints: {} }), targEl) || this; + _this.openvidu = openvidu; /** * Whether the Publisher has been granted access to the requested input devices or not */ - this.accessAllowed = false; - this.ee = new EventEmitter(); - this.properties = properties; - this.stream = new Stream_1.Stream(this.session, { publisherProperties: properties, mediaConstraints: {} }); - this.stream.on('video-removed', function (element) { - _this.ee.emitEvent('videoElementDestroyed', [new VideoElementEvent_1.VideoElementEvent(element, _this, 'videoElementDestroyed')]); - }); - this.stream.on('stream-destroyed-by-disconnect', function (reason) { + _this.accessAllowed = false; + /** + * Whether you have called [[Publisher.subscribeToRemote]] with value `true` or `false` (*false* by default) + */ + _this.isSubscribedToRemote = false; + _this.accessDenied = false; + _this.properties = properties; + _this.stream.ee.on('local-stream-destroyed-by-disconnect', function (reason) { var streamEvent = new StreamEvent_1.StreamEvent(true, _this, 'streamDestroyed', _this.stream, reason); _this.ee.emitEvent('streamDestroyed', [streamEvent]); streamEvent.callDefaultBehaviour(); }); - if (typeof targetElement === 'string') { - var e = document.getElementById(targetElement); - if (!!e) { - this.element = e; - } - } - else if (targetElement instanceof HTMLElement) { - this.element = targetElement; - } - if (!this.element) { - console.warn("The provided 'targetElement' for the Publisher couldn't be resolved to any HTML element: " + targetElement); - } + return _this; } /** * Publish or unpublish the audio stream (if available). Calling this method twice in a row passing same value will have no effect @@ -76,83 +77,45 @@ var Publisher = /** @class */ (function () { console.info("'Publisher' has " + (value ? 'published' : 'unpublished') + ' its video stream'); }; /** - * Call this method before [[Session.publish]] to subscribe to your Publisher's stream as any other user would do. The local video will be automatically replaced by the remote video + * Call this method before [[Session.publish]] to subscribe to your Publisher's remote stream instead of using the local stream, as any other user would do. */ - Publisher.prototype.subscribeToRemote = function () { - this.stream.subscribeToMyRemote(); + Publisher.prototype.subscribeToRemote = function (value) { + value = (value !== undefined) ? value : true; + this.isSubscribedToRemote = value; + this.stream.subscribeToMyRemote(value); }; /** * See [[EventDispatcher.on]] */ Publisher.prototype.on = function (type, handler) { var _this = this; - this.ee.on(type, function (event) { - if (event) { - console.info("Event '" + type + "' triggered by 'Publisher'", event); - } - else { - console.info("Event '" + type + "' triggered by 'Publisher'"); - } - handler(event); - }); + _super.prototype.on.call(this, type, handler); if (type === 'streamCreated') { - if (!!this.stream && this.stream.isPublisherPublished) { + if (!!this.stream && this.stream.isLocalStreamPublished) { this.ee.emitEvent('streamCreated', [new StreamEvent_1.StreamEvent(false, this, 'streamCreated', this.stream, '')]); } else { - this.stream.on('stream-created-by-publisher', function () { + this.stream.ee.on('stream-created-by-publisher', function () { _this.ee.emitEvent('streamCreated', [new StreamEvent_1.StreamEvent(false, _this, 'streamCreated', _this.stream, '')]); }); } } - if (type === 'videoElementCreated') { - if (!!this.stream && this.stream.isVideoELementCreated) { - this.ee.emitEvent('videoElementCreated', [new VideoElementEvent_1.VideoElementEvent(this.stream.getVideoElement(), this, 'videoElementCreated')]); - } - else { - this.stream.on('video-element-created-by-stream', function (element) { - _this.id = element.id; - _this.ee.emitEvent('videoElementCreated', [new VideoElementEvent_1.VideoElementEvent(element.element, _this, 'videoElementCreated')]); - }); - } - } - if (type === 'videoPlaying') { - var video = this.stream.getVideoElement(); - if (!this.stream.displayMyRemote() && video && - video.currentTime > 0 && - video.paused === false && - video.ended === false && - video.readyState === 4) { - this.ee.emitEvent('videoPlaying', [new VideoElementEvent_1.VideoElementEvent(this.stream.getVideoElement(), this, 'videoPlaying')]); - } - else { - this.stream.on('video-is-playing', function (element) { - _this.ee.emitEvent('videoPlaying', [new VideoElementEvent_1.VideoElementEvent(element.element, _this, 'videoPlaying')]); - }); - } - } if (type === 'remoteVideoPlaying') { - var video = this.stream.getVideoElement(); - if (this.stream.displayMyRemote() && video && - video.currentTime > 0 && - video.paused === false && - video.ended === false && - video.readyState === 4) { - this.ee.emitEvent('remoteVideoPlaying', [new VideoElementEvent_1.VideoElementEvent(this.stream.getVideoElement(), this, 'remoteVideoPlaying')]); - } - else { - this.stream.on('remote-video-is-playing', function (element) { - _this.ee.emitEvent('remoteVideoPlaying', [new VideoElementEvent_1.VideoElementEvent(element.element, _this, 'remoteVideoPlaying')]); - }); + if (this.stream.displayMyRemote() && this.videos[0] && this.videos[0].video && + this.videos[0].video.currentTime > 0 && + this.videos[0].video.paused === false && + this.videos[0].video.ended === false && + this.videos[0].video.readyState === 4) { + this.ee.emitEvent('remoteVideoPlaying', [new VideoElementEvent_1.VideoElementEvent(this.videos[0].video, this, 'remoteVideoPlaying')]); } } if (type === 'accessAllowed') { - if (this.stream.accessIsAllowed) { + if (this.accessAllowed) { this.ee.emitEvent('accessAllowed'); } } if (type === 'accessDenied') { - if (this.stream.accessIsDenied) { + if (this.accessDenied) { this.ee.emitEvent('accessDenied'); } } @@ -163,90 +126,38 @@ var Publisher = /** @class */ (function () { */ Publisher.prototype.once = function (type, handler) { var _this = this; - this.ee.once(type, function (event) { - if (event) { - console.info("Event '" + type + "' triggered by 'Publisher'", event); - } - else { - console.info("Event '" + type + "' triggered by 'Publisher'"); - } - handler(event); - }); + _super.prototype.once.call(this, type, handler); if (type === 'streamCreated') { - if (!!this.stream && this.stream.isPublisherPublished) { + if (!!this.stream && this.stream.isLocalStreamPublished) { this.ee.emitEvent('streamCreated', [new StreamEvent_1.StreamEvent(false, this, 'streamCreated', this.stream, '')]); } else { - this.stream.once('stream-created-by-publisher', function () { + this.stream.ee.once('stream-created-by-publisher', function () { _this.ee.emitEvent('streamCreated', [new StreamEvent_1.StreamEvent(false, _this, 'streamCreated', _this.stream, '')]); }); } } - if (type === 'videoElementCreated') { - if (!!this.stream && this.stream.isVideoELementCreated) { - this.ee.emitEvent('videoElementCreated', [new VideoElementEvent_1.VideoElementEvent(this.stream.getVideoElement(), this, 'videoElementCreated')]); - } - else { - this.stream.once('video-element-created-by-stream', function (element) { - _this.id = element.id; - _this.ee.emitEvent('videoElementCreated', [new VideoElementEvent_1.VideoElementEvent(element.element, _this, 'videoElementCreated')]); - }); - } - } - if (type === 'videoPlaying') { - var video = this.stream.getVideoElement(); - if (!this.stream.displayMyRemote() && video && - video.currentTime > 0 && - video.paused === false && - video.ended === false && - video.readyState === 4) { - this.ee.emitEvent('videoPlaying', [new VideoElementEvent_1.VideoElementEvent(this.stream.getVideoElement(), this, 'videoPlaying')]); - } - else { - this.stream.once('video-is-playing', function (element) { - _this.ee.emitEvent('videoPlaying', [new VideoElementEvent_1.VideoElementEvent(element.element, _this, 'videoPlaying')]); - }); - } - } if (type === 'remoteVideoPlaying') { - var video = this.stream.getVideoElement(); - if (this.stream.displayMyRemote() && video && - video.currentTime > 0 && - video.paused === false && - video.ended === false && - video.readyState === 4) { - this.ee.emitEvent('remoteVideoPlaying', [new VideoElementEvent_1.VideoElementEvent(this.stream.getVideoElement(), this, 'remoteVideoPlaying')]); - } - else { - this.stream.once('remote-video-is-playing', function (element) { - _this.ee.emitEvent('remoteVideoPlaying', [new VideoElementEvent_1.VideoElementEvent(element.element, _this, 'remoteVideoPlaying')]); - }); + if (this.stream.displayMyRemote() && this.videos[0] && this.videos[0].video && + this.videos[0].video.currentTime > 0 && + this.videos[0].video.paused === false && + this.videos[0].video.ended === false && + this.videos[0].video.readyState === 4) { + this.ee.emitEvent('remoteVideoPlaying', [new VideoElementEvent_1.VideoElementEvent(this.videos[0].video, this, 'remoteVideoPlaying')]); } } if (type === 'accessAllowed') { - if (this.stream.accessIsAllowed) { + if (this.accessAllowed) { this.ee.emitEvent('accessAllowed'); } } if (type === 'accessDenied') { - if (this.stream.accessIsDenied) { + if (this.accessDenied) { this.ee.emitEvent('accessDenied'); } } return this; }; - /** - * See [[EventDispatcher.off]] - */ - Publisher.prototype.off = function (type, handler) { - if (!handler) { - this.ee.removeAllListeners(type); - } - else { - this.ee.off(type, handler); - } - return this; - }; /* Hidden methods */ /** * @hidden @@ -255,13 +166,13 @@ var Publisher = /** @class */ (function () { var _this = this; return new Promise(function (resolve, reject) { var errorCallback = function (openViduError) { - _this.stream.accessIsDenied = true; - _this.stream.accessIsAllowed = false; + _this.accessDenied = true; + _this.accessAllowed = false; reject(openViduError); }; var successCallback = function (mediaStream) { - _this.stream.accessIsAllowed = true; - _this.stream.accessIsDenied = false; + _this.accessAllowed = true; + _this.accessDenied = false; if (_this.openvidu.isMediaStreamTrack(_this.properties.audioSource)) { mediaStream.removeTrack(mediaStream.getAudioTracks()[0]); mediaStream.addTrack(_this.properties.audioSource); @@ -278,7 +189,17 @@ var Publisher = /** @class */ (function () { mediaStream.getVideoTracks()[0].enabled = !!_this.stream.outboundStreamOpts.publisherProperties.publishVideo; } _this.stream.setMediaStream(mediaStream); - _this.stream.insertVideo(_this.element, _this.properties.insertMode); + if (!_this.stream.displayMyRemote()) { + // When we are subscribed to our remote we don't still set the MediaStream object in the video elements to + // avoid early 'streamPlaying' event + _this.stream.updateMediaStreamInVideos(); + } + _this.stream.isLocalStreamReadyToPublish = true; + _this.stream.ee.emitEvent('stream-ready-to-publish', []); + if (!!_this.firstVideoElement) { + _this.createVideoElement(_this.firstVideoElement.targetElement, _this.properties.insertMode); + } + delete _this.firstVideoElement; resolve(); }; _this.openvidu.generateMediaConstraints(_this.properties) @@ -288,119 +209,117 @@ var Publisher = /** @class */ (function () { publisherProperties: _this.properties }; _this.stream.setOutboundStreamOptions(outboundStreamOptions); - // Ask independently for audio stream and video stream. If the user asks for both of them and one is blocked, the method still - // success only with the allowed input. This is not the desierd behaviour: if any of them is blocked, access should be denied var constraintsAux = {}; var timeForDialogEvent = 1250; - if (_this.stream.isSendVideo()) { - constraintsAux.audio = false; + if (_this.stream.isSendVideo() || _this.stream.isSendAudio()) { + var definedAudioConstraint_1 = ((constraints.audio === undefined) ? true : constraints.audio); + constraintsAux.audio = _this.stream.isSendScreen() ? false : definedAudioConstraint_1; constraintsAux.video = constraints.video; var startTime_1 = Date.now(); _this.setPermissionDialogTimer(timeForDialogEvent); navigator.mediaDevices.getUserMedia(constraintsAux) - .then(function (videoOnlyStream) { + .then(function (mediaStream) { _this.clearPermissionDialogTimer(startTime_1, timeForDialogEvent); - if (_this.stream.isSendAudio()) { - constraintsAux.audio = (constraints.audio === undefined) ? true : constraints.audio; + if (_this.stream.isSendScreen() && _this.stream.isSendAudio()) { + // When getting desktop as user media audio constraint must be false. Now we can ask for it if required + constraintsAux.audio = definedAudioConstraint_1; constraintsAux.video = false; startTime_1 = Date.now(); _this.setPermissionDialogTimer(timeForDialogEvent); navigator.mediaDevices.getUserMedia(constraintsAux) .then(function (audioOnlyStream) { _this.clearPermissionDialogTimer(startTime_1, timeForDialogEvent); - videoOnlyStream.addTrack(audioOnlyStream.getAudioTracks()[0]); - successCallback(videoOnlyStream); + mediaStream.addTrack(audioOnlyStream.getAudioTracks()[0]); + successCallback(mediaStream); })["catch"](function (error) { _this.clearPermissionDialogTimer(startTime_1, timeForDialogEvent); - videoOnlyStream.getVideoTracks().forEach(function (track) { - track.stop(); - }); - var errorName; - var errorMessage; + var errorName, errorMessage; switch (error.name.toLowerCase()) { case 'notfounderror': errorName = OpenViduError_1.OpenViduErrorName.INPUT_AUDIO_DEVICE_NOT_FOUND; errorMessage = error.toString(); + errorCallback(new OpenViduError_1.OpenViduError(errorName, errorMessage)); break; case 'notallowederror': - errorName = OpenViduError_1.OpenViduErrorName.MICROPHONE_ACCESS_DENIED; + errorName = OpenViduError_1.OpenViduErrorName.DEVICE_ACCESS_DENIED; errorMessage = error.toString(); + errorCallback(new OpenViduError_1.OpenViduError(errorName, errorMessage)); break; case 'overconstrainederror': if (error.constraint.toLowerCase() === 'deviceid') { errorName = OpenViduError_1.OpenViduErrorName.INPUT_AUDIO_DEVICE_NOT_FOUND; - errorMessage = "Audio input device with deviceId '" + constraints.audio.deviceId.exact + "' not found"; + errorMessage = "Audio input device with deviceId '" + constraints.video.deviceId.exact + "' not found"; } else { errorName = OpenViduError_1.OpenViduErrorName.PUBLISHER_PROPERTIES_ERROR; errorMessage = "Audio input device doesn't support the value passed for constraint '" + error.constraint + "'"; } + errorCallback(new OpenViduError_1.OpenViduError(errorName, errorMessage)); + break; } - errorCallback(new OpenViduError_1.OpenViduError(errorName, errorMessage)); }); } else { - successCallback(videoOnlyStream); + successCallback(mediaStream); } })["catch"](function (error) { _this.clearPermissionDialogTimer(startTime_1, timeForDialogEvent); - var errorName; - var errorMessage; + var errorName, errorMessage; switch (error.name.toLowerCase()) { case 'notfounderror': - errorName = OpenViduError_1.OpenViduErrorName.INPUT_VIDEO_DEVICE_NOT_FOUND; - errorMessage = error.toString(); - break; - case 'notallowederror': - errorName = _this.stream.isSendScreen() ? OpenViduError_1.OpenViduErrorName.SCREEN_CAPTURE_DENIED : OpenViduError_1.OpenViduErrorName.CAMERA_ACCESS_DENIED; - errorMessage = error.toString(); - break; - case 'overconstrainederror': - if (error.constraint.toLowerCase() === 'deviceid') { - errorName = OpenViduError_1.OpenViduErrorName.INPUT_VIDEO_DEVICE_NOT_FOUND; - errorMessage = "Video input device with deviceId '" + constraints.video.deviceId.exact + "' not found"; - } - else { - errorName = OpenViduError_1.OpenViduErrorName.PUBLISHER_PROPERTIES_ERROR; - errorMessage = "Video input device doesn't support the value passed for constraint '" + error.constraint + "'"; - } - } - errorCallback(new OpenViduError_1.OpenViduError(errorName, errorMessage)); - }); - } - else if (_this.stream.isSendAudio()) { - constraintsAux.audio = (constraints.audio === undefined) ? true : constraints.audio; - constraintsAux.video = false; - var startTime_2 = Date.now(); - _this.setPermissionDialogTimer(timeForDialogEvent); - navigator.mediaDevices.getUserMedia(constraints) - .then(function (audioOnlyStream) { - _this.clearPermissionDialogTimer(startTime_2, timeForDialogEvent); - successCallback(audioOnlyStream); - })["catch"](function (error) { - _this.clearPermissionDialogTimer(startTime_2, timeForDialogEvent); - var errorName; - var errorMessage; - switch (error.name.toLowerCase()) { - case 'notfounderror': - errorName = OpenViduError_1.OpenViduErrorName.INPUT_AUDIO_DEVICE_NOT_FOUND; - errorMessage = error.toString(); - break; - case 'notallowederror': - errorName = OpenViduError_1.OpenViduErrorName.MICROPHONE_ACCESS_DENIED; - errorMessage = error.toString(); - break; - case 'overconstrainederror': - if (error.constraint.toLowerCase() === 'deviceid') { + navigator.mediaDevices.getUserMedia({ + audio: false, + video: constraints.video + }) + .then(function (mediaStream) { + mediaStream.getVideoTracks().forEach(function (track) { + track.stop(); + }); errorName = OpenViduError_1.OpenViduErrorName.INPUT_AUDIO_DEVICE_NOT_FOUND; - errorMessage = "Audio input device with deviceId '" + constraints.audio.deviceId.exact + "' not found"; - } - else { - errorName = OpenViduError_1.OpenViduErrorName.PUBLISHER_PROPERTIES_ERROR; - errorMessage = "Audio input device doesn't support the value passed for constraint '" + error.constraint + "'"; - } + errorMessage = error.toString(); + errorCallback(new OpenViduError_1.OpenViduError(errorName, errorMessage)); + })["catch"](function (e) { + errorName = OpenViduError_1.OpenViduErrorName.INPUT_VIDEO_DEVICE_NOT_FOUND; + errorMessage = error.toString(); + errorCallback(new OpenViduError_1.OpenViduError(errorName, errorMessage)); + }); + break; + case 'notallowederror': + errorName = _this.stream.isSendScreen() ? OpenViduError_1.OpenViduErrorName.SCREEN_CAPTURE_DENIED : OpenViduError_1.OpenViduErrorName.DEVICE_ACCESS_DENIED; + errorMessage = error.toString(); + errorCallback(new OpenViduError_1.OpenViduError(errorName, errorMessage)); + break; + case 'overconstrainederror': + navigator.mediaDevices.getUserMedia({ + audio: false, + video: constraints.video + }) + .then(function (mediaStream) { + mediaStream.getVideoTracks().forEach(function (track) { + track.stop(); + }); + if (error.constraint.toLowerCase() === 'deviceid') { + errorName = OpenViduError_1.OpenViduErrorName.INPUT_AUDIO_DEVICE_NOT_FOUND; + errorMessage = "Audio input device with deviceId '" + constraints.audio.deviceId.exact + "' not found"; + } + else { + errorName = OpenViduError_1.OpenViduErrorName.PUBLISHER_PROPERTIES_ERROR; + errorMessage = "Audio input device doesn't support the value passed for constraint '" + error.constraint + "'"; + } + errorCallback(new OpenViduError_1.OpenViduError(errorName, errorMessage)); + })["catch"](function (e) { + if (error.constraint.toLowerCase() === 'deviceid') { + errorName = OpenViduError_1.OpenViduErrorName.INPUT_VIDEO_DEVICE_NOT_FOUND; + errorMessage = "Video input device with deviceId '" + constraints.video.deviceId.exact + "' not found"; + } + else { + errorName = OpenViduError_1.OpenViduErrorName.PUBLISHER_PROPERTIES_ERROR; + errorMessage = "Video input device doesn't support the value passed for constraint '" + error.constraint + "'"; + } + errorCallback(new OpenViduError_1.OpenViduError(errorName, errorMessage)); + }); + break; } - errorCallback(new OpenViduError_1.OpenViduError(errorName, errorMessage)); }); } else { @@ -424,6 +343,14 @@ var Publisher = /** @class */ (function () { Publisher.prototype.emitEvent = function (type, eventArray) { this.ee.emitEvent(type, eventArray); }; + /** + * @hidden + */ + Publisher.prototype.reestablishStreamPlayingEvent = function () { + if (this.ee.getListeners('streamPlaying').length > 0) { + this.addPlayEventToFirstVideo(); + } + }; /* Private methods */ Publisher.prototype.setPermissionDialogTimer = function (waitTime) { var _this = this; @@ -438,40 +365,7 @@ var Publisher = /** @class */ (function () { this.ee.emitEvent('accessDialogClosed', []); } }; - /* Private methods */ - Publisher.prototype.userMediaHasVideo = function (callback) { - var _this = this; - return new Promise(function (resolve, reject) { - // If the user is going to publish its screen there's a video source - if ((typeof _this.properties.videoSource === 'string') && _this.properties.videoSource === 'screen') { - resolve(true); - } - else { - _this.openvidu.getDevices() - .then(function (devices) { - resolve(!!(devices.filter(function (device) { - return device.kind === 'videoinput'; - })[0])); - })["catch"](function (error) { - reject(error); - }); - } - }); - }; - Publisher.prototype.userMediaHasAudio = function (callback) { - var _this = this; - return new Promise(function (resolve, reject) { - _this.openvidu.getDevices() - .then(function (devices) { - resolve(!!(devices.filter(function (device) { - return device.kind === 'audioinput'; - })[0])); - })["catch"](function (error) { - reject(error); - }); - }); - }; return Publisher; -}()); +}(StreamManager_1.StreamManager)); exports.Publisher = Publisher; //# sourceMappingURL=Publisher.js.map \ No newline at end of file diff --git a/openvidu-browser/lib/OpenVidu/Publisher.js.map b/openvidu-browser/lib/OpenVidu/Publisher.js.map index 6c005607..f6321b3f 100644 --- a/openvidu-browser/lib/OpenVidu/Publisher.js.map +++ b/openvidu-browser/lib/OpenVidu/Publisher.js.map @@ -1 +1 @@ -{"version":3,"file":"Publisher.js","sourceRoot":"","sources":["../../src/OpenVidu/Publisher.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"Publisher.js","sourceRoot":"","sources":["../../src/OpenVidu/Publisher.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/openvidu-browser/lib/OpenVidu/Session.d.ts b/openvidu-browser/lib/OpenVidu/Session.d.ts index 0365db58..4378aa73 100644 --- a/openvidu-browser/lib/OpenVidu/Session.d.ts +++ b/openvidu-browser/lib/OpenVidu/Session.d.ts @@ -2,6 +2,7 @@ import { Connection } from './Connection'; import { OpenVidu } from './OpenVidu'; import { Publisher } from './Publisher'; import { Stream } from './Stream'; +import { StreamManager } from './StreamManager'; import { Subscriber } from './Subscriber'; import { EventDispatcher } from '../OpenViduInternal/Interfaces/Public/EventDispatcher'; import { SignalOptions } from '../OpenViduInternal/Interfaces/Public/SignalOptions'; @@ -17,7 +18,7 @@ import { SignalEvent } from '../OpenViduInternal/Events/SignalEvent'; import { StreamEvent } from '../OpenViduInternal/Events/StreamEvent'; /** * Represents a video call. It can also be seen as a videoconference room where multiple users can connect. - * Participants who publish their videos to a session will be seen by the rest of users connected to that specific session. + * Participants who publish their videos to a session can be seen by the rest of users connected to that specific session. * Initialized with [[OpenVidu.initSession]] method */ export declare class Session implements EventDispatcher { @@ -26,9 +27,13 @@ export declare class Session implements EventDispatcher { */ connection: Connection; /** - * Unique identifier of the Session. This is the same value you pass when calling [[OpenVidu.initSession]] + * Unique identifier of the Session */ sessionId: string; + /** + * Collection of all StreamManagers of this Session ([[Publisher]] and [[Subscriber]]) + */ + streamManagers: StreamManager[]; /** * @hidden */ @@ -63,18 +68,23 @@ export declare class Session implements EventDispatcher { * * The [[Session]] object of the local participant will dispatch a `sessionDisconnected` event. * This event will automatically unsubscribe the leaving participant from every Subscriber object of the session (this includes closing the WebRTCPeer connection and disposing all MediaStreamTracks) - * and also delete the HTML video element associated to it. - * Call `event.preventDefault()` to avoid this beahviour and take care of disposing and cleaning all the Subscriber objects yourself. See [[SessionDisconnectedEvent]] to learn more. + * and also deletes any HTML video element associated to each Subscriber (only those [created by OpenVidu Browser](/docs/how-do-i/manage-videos/#let-openvidu-take-care-of-the-video-players)). + * For every video removed, each Subscriber object will dispatch a `videoElementDestroyed` event. + * Call `event.preventDefault()` uppon event `sessionDisconnected` to avoid this behaviour and take care of disposing and cleaning all the Subscriber objects yourself. + * See [[SessionDisconnectedEvent]] and [[VideoElementEvent]] to learn more to learn more. * * The [[Publisher]] object of the local participant will dispatch a `streamDestroyed` event if there is a [[Publisher]] object publishing to the session. - * This event will automatically stop all media tracks and delete the HTML video element associated to it. - * Call `event.preventDefault()` if you want clean the Publisher object yourself or re-publish it in a different Session (to do so it is a mandatory - * requirement to call `Session.unpublish()` or/and `Session.disconnect()` in the previous session). See [[StreamEvent]] to learn more. + * This event will automatically stop all media tracks and delete any HTML video element associated to it (only those [created by OpenVidu Browser](/docs/how-do-i/manage-videos/#let-openvidu-take-care-of-the-video-players)). + * For every video removed, the Publisher object will dispatch a `videoElementDestroyed` event. + * Call `event.preventDefault()` uppon event `streamDestroyed` if you want to clean the Publisher object on your own or re-publish it in a different Session (to do so it is a mandatory requirement to call `Session.unpublish()` + * or/and `Session.disconnect()` in the previous session). See [[StreamEvent]] and [[VideoElementEvent]] to learn more. * * The [[Session]] object of every other participant connected to the session will dispatch a `streamDestroyed` event if the disconnected participant was publishing. * This event will automatically unsubscribe the Subscriber object from the session (this includes closing the WebRTCPeer connection and disposing all MediaStreamTracks) - * and delete the HTML video element associated to it. - * Call `event.preventDefault()` to avoid this default behaviour and take care of disposing and cleaning the Subscriber object yourself. See [[StreamEvent]] to learn more. + * and also deletes any HTML video element associated to that Subscriber (only those [created by OpenVidu Browser](/docs/how-do-i/manage-videos/#let-openvidu-take-care-of-the-video-players)). + * For every video removed, the Subscriber object will dispatch a `videoElementDestroyed` event. + * Call `event.preventDefault()` uppon event `streamDestroyed` to avoid this default behaviour and take care of disposing and cleaning the Subscriber object yourself. + * See [[StreamEvent]] and [[VideoElementEvent]] to learn more. * * The [[Session]] object of every other participant connected to the session will dispatch a `connectionDestroyed` event in any case. See [[ConnectionEvent]] to learn more. */ @@ -89,42 +99,48 @@ export declare class Session implements EventDispatcher { subscribeAsync(stream: Stream, targetElement: string | HTMLElement): Promise; subscribeAsync(stream: Stream, targetElement: string | HTMLElement, properties: SubscriberProperties): Promise; /** - * Unsubscribes from `subscriber`, automatically removing its HTML video element. + * Unsubscribes from `subscriber`, automatically removing its associated HTML video elements. * * #### Events dispatched * - * The [[Subscriber]] object will dispatch a `videoElementDestroyed` event (only if it previously dispatched a `videoElementCreated` event). See [[VideoElementEvent]] to learn more + * The [[Subscriber]] object will dispatch a `videoElementDestroyed` event for each video associated to it that was removed from DOM. + * Only videos [created by OpenVidu Browser](/docs/how-do-i/manage-videos/#let-openvidu-take-care-of-the-video-players)) will be automatically removed + * + * See [[VideoElementEvent]] to learn more */ unsubscribe(subscriber: Subscriber): void; /** - * Publishes the participant's audio-video stream contained in `publisher` object to the session + * Publishes to the Session the Publisher object * * #### Events dispatched * * The local [[Publisher]] object will dispatch a `streamCreated` event upon successful termination of this method. See [[StreamEvent]] to learn more. * - * The local [[Publisher]] object will dispatch a `remoteVideoPlaying` event only if [[Publisher.subscribeToRemote]] was called before this method, once the remote video starts playing. - * See [[VideoElementEvent]] to learn more. + * The local [[Publisher]] object will dispatch a `streamPlaying` once the media stream starts playing. See [[StreamManagerEvent]] to learn more. * * The [[Session]] object of every other participant connected to the session will dispatch a `streamCreated` event so they can subscribe to it. See [[StreamEvent]] to learn more. * - * @returns A Promise (to which you can optionally subscribe to) that is resolved if the publisher was successfully published and rejected with an Error object if not + * @returns A Promise (to which you can optionally subscribe to) that is resolved only after the publisher was successfully published and rejected with an Error object if not */ publish(publisher: Publisher): Promise; /** - * Unpublishes the participant's audio-video stream contained in `publisher` object. + * Unpublishes from the Session the Publisher object. * * #### Events dispatched * * The [[Publisher]] object of the local participant will dispatch a `streamDestroyed` event. - * This event will automatically stop all media tracks and delete the HTML video element associated to it. - * Call `event.preventDefault()` if you want clean the Publisher object yourself or re-publish it in a different Session. + * This event will automatically stop all media tracks and delete any HTML video element associated to this Publisher + * (only those videos [created by OpenVidu Browser](/docs/how-do-i/manage-videos/#let-openvidu-take-care-of-the-video-players)). + * For every video removed, the Publisher object will dispatch a `videoElementDestroyed` event. + * Call `event.preventDefault()` uppon event `streamDestroyed` if you want to clean the Publisher object on your own or re-publish it in a different Session. * * The [[Session]] object of every other participant connected to the session will dispatch a `streamDestroyed` event. - * This event will automatically unsubscribe the Subscriber object from the session (this includes closing the WebRTCPeer connection and disposing all MediaStreamTracks) and delete the HTML video element associated to it. - * Call `event.preventDefault()` to avoid this default behaviour and take care of disposing and cleaning the Subscriber object yourself. + * This event will automatically unsubscribe the Subscriber object from the session (this includes closing the WebRTCPeer connection and disposing all MediaStreamTracks) and + * delete any HTML video element associated to it (only those [created by OpenVidu Browser](/docs/how-do-i/manage-videos/#let-openvidu-take-care-of-the-video-players)). + * For every video removed, the Subscriber object will dispatch a `videoElementDestroyed` event. + * Call `event.preventDefault()` uppon event `streamDestroyed` to avoid this default behaviour and take care of disposing and cleaning the Subscriber object on your own. * - * See [[StreamEvent]] to learn more. + * See [[StreamEvent]] and [[VideoElementEvent]] to learn more. */ unpublish(publisher: Publisher): void; /** diff --git a/openvidu-browser/lib/OpenVidu/Session.js b/openvidu-browser/lib/OpenVidu/Session.js index c4b95256..46e025ce 100644 --- a/openvidu-browser/lib/OpenVidu/Session.js +++ b/openvidu-browser/lib/OpenVidu/Session.js @@ -29,7 +29,7 @@ var platform = require("platform"); var EventEmitter = require("wolfy87-eventemitter"); /** * Represents a video call. It can also be seen as a videoconference room where multiple users can connect. - * Participants who publish their videos to a session will be seen by the rest of users connected to that specific session. + * Participants who publish their videos to a session can be seen by the rest of users connected to that specific session. * Initialized with [[OpenVidu.initSession]] method */ var Session = /** @class */ (function () { @@ -37,6 +37,10 @@ var Session = /** @class */ (function () { * @hidden */ function Session(openvidu) { + /** + * Collection of all StreamManagers of this Session ([[Publisher]] and [[Subscriber]]) + */ + this.streamManagers = []; // This map is only used to avoid race condition between 'joinRoom' response and 'onParticipantPublished' notification /** * @hidden @@ -70,14 +74,14 @@ var Session = /** @class */ (function () { * - Then one for each remote Connection previously connected to the Session, if any. Any other remote user connecting to the Session after you have * successfully connected will also dispatch a `connectionCreated` event when they do so. * - * The [[Session]] object of the local participant will also dispatch a `streamCreated` event for each remote active [[Publisher]] after dispatching all remote - * `connectionCreated` events. + * The [[Session]] object of the local participant will also dispatch a `streamCreated` event for each remote active [[Publisher]] that was already streaming + * when connecting, just after dispatching all remote `connectionCreated` events. * * The [[Session]] object of every other participant connected to the session will dispatch a `connectionCreated` event. * * See [[ConnectionEvent]] and [[StreamEvent]] to learn more. * - * @returns A Promise to which you must subscribe that is resolved if the recording successfully started and rejected with an Error object if not + * @returns A Promise to which you must subscribe that is resolved if the the connection to the Session was successful and rejected with an Error object if not * */ Session.prototype.connect = function (token, metadata) { @@ -109,18 +113,23 @@ var Session = /** @class */ (function () { * * The [[Session]] object of the local participant will dispatch a `sessionDisconnected` event. * This event will automatically unsubscribe the leaving participant from every Subscriber object of the session (this includes closing the WebRTCPeer connection and disposing all MediaStreamTracks) - * and also delete the HTML video element associated to it. - * Call `event.preventDefault()` to avoid this beahviour and take care of disposing and cleaning all the Subscriber objects yourself. See [[SessionDisconnectedEvent]] to learn more. + * and also deletes any HTML video element associated to each Subscriber (only those [created by OpenVidu Browser](/docs/how-do-i/manage-videos/#let-openvidu-take-care-of-the-video-players)). + * For every video removed, each Subscriber object will dispatch a `videoElementDestroyed` event. + * Call `event.preventDefault()` uppon event `sessionDisconnected` to avoid this behaviour and take care of disposing and cleaning all the Subscriber objects yourself. + * See [[SessionDisconnectedEvent]] and [[VideoElementEvent]] to learn more to learn more. * * The [[Publisher]] object of the local participant will dispatch a `streamDestroyed` event if there is a [[Publisher]] object publishing to the session. - * This event will automatically stop all media tracks and delete the HTML video element associated to it. - * Call `event.preventDefault()` if you want clean the Publisher object yourself or re-publish it in a different Session (to do so it is a mandatory - * requirement to call `Session.unpublish()` or/and `Session.disconnect()` in the previous session). See [[StreamEvent]] to learn more. + * This event will automatically stop all media tracks and delete any HTML video element associated to it (only those [created by OpenVidu Browser](/docs/how-do-i/manage-videos/#let-openvidu-take-care-of-the-video-players)). + * For every video removed, the Publisher object will dispatch a `videoElementDestroyed` event. + * Call `event.preventDefault()` uppon event `streamDestroyed` if you want to clean the Publisher object on your own or re-publish it in a different Session (to do so it is a mandatory requirement to call `Session.unpublish()` + * or/and `Session.disconnect()` in the previous session). See [[StreamEvent]] and [[VideoElementEvent]] to learn more. * * The [[Session]] object of every other participant connected to the session will dispatch a `streamDestroyed` event if the disconnected participant was publishing. * This event will automatically unsubscribe the Subscriber object from the session (this includes closing the WebRTCPeer connection and disposing all MediaStreamTracks) - * and delete the HTML video element associated to it. - * Call `event.preventDefault()` to avoid this default behaviour and take care of disposing and cleaning the Subscriber object yourself. See [[StreamEvent]] to learn more. + * and also deletes any HTML video element associated to that Subscriber (only those [created by OpenVidu Browser](/docs/how-do-i/manage-videos/#let-openvidu-take-care-of-the-video-players)). + * For every video removed, the Subscriber object will dispatch a `videoElementDestroyed` event. + * Call `event.preventDefault()` uppon event `streamDestroyed` to avoid this default behaviour and take care of disposing and cleaning the Subscriber object yourself. + * See [[StreamEvent]] and [[VideoElementEvent]] to learn more. * * The [[Session]] object of every other participant connected to the session will dispatch a `connectionDestroyed` event in any case. See [[ConnectionEvent]] to learn more. */ @@ -132,15 +141,14 @@ var Session = /** @class */ (function () { * * #### Events dispatched * - * The [[Subscriber]] object will dispatch a `videoElementCreated` event once the HTML video element has been added to DOM (if _targetElement_ not null or undefined) + * The [[Subscriber]] object will dispatch a `videoElementCreated` event once the HTML video element has been added to DOM (only if you + * [let OpenVidu take care of the video players](/docs/how-do-i/manage-videos/#let-openvidu-take-care-of-the-video-players)). See [[VideoElementEvent]] to learn more. * - * The [[Subscriber]] object will dispatch a `videoPlaying` event once the remote video starts playing (only if `videoElementCreated` event has been previously dispatched) - * - * See [[VideoElementEvent]] to learn more. + * The [[Subscriber]] object will dispatch a `streamPlaying` event once the remote stream starts playing. See [[StreamManagerEvent]] to learn more. * * @param stream Stream object to subscribe to - * @param targetElement HTML DOM element (or its `id` attribute) in which the video element of the Subscriber will be inserted (see [[SubscriberProperties.insertMode]]). If null or undefined no default video will be created for this Subscriber - * (you can always access the native MediaStream object by calling _Subscriber.stream.getMediaStream()_ and use it as _srcObject_ of any HTML video element) + * @param targetElement HTML DOM element (or its `id` attribute) in which the video element of the Subscriber will be inserted (see [[SubscriberProperties.insertMode]]). If *null* or *undefined* no default video will be created for this Subscriber. + * You can always call method [[Subscriber.addVideoElement]] or [[Subscriber.createVideoElement]] to manage the video elements on your own (see [Manage video players](/docs/how-do-i/manage-videos) section) * @param completionHandler `error` parameter is null if `subscribe` succeeds, and is defined if it fails. */ Session.prototype.subscribe = function (stream, targetElement, param3, param4) { @@ -179,7 +187,9 @@ var Session = /** @class */ (function () { } }); var subscriber = new Subscriber_1.Subscriber(stream, targetElement, properties); - stream.insertVideo(subscriber.element, properties.insertMode); + if (!!subscriber.targetElement) { + stream.streamManager.createVideoElement(subscriber.targetElement, properties.insertMode); + } return subscriber; }; Session.prototype.subscribeAsync = function (stream, targetElement, properties) { @@ -203,18 +213,19 @@ var Session = /** @class */ (function () { }); }; /** - * Unsubscribes from `subscriber`, automatically removing its HTML video element. + * Unsubscribes from `subscriber`, automatically removing its associated HTML video elements. * * #### Events dispatched * - * The [[Subscriber]] object will dispatch a `videoElementDestroyed` event (only if it previously dispatched a `videoElementCreated` event). See [[VideoElementEvent]] to learn more + * The [[Subscriber]] object will dispatch a `videoElementDestroyed` event for each video associated to it that was removed from DOM. + * Only videos [created by OpenVidu Browser](/docs/how-do-i/manage-videos/#let-openvidu-take-care-of-the-video-players)) will be automatically removed + * + * See [[VideoElementEvent]] to learn more */ Session.prototype.unsubscribe = function (subscriber) { var connectionId = subscriber.stream.connection.connectionId; console.info('Unsubscribing from ' + connectionId); - this.openvidu.sendRequest('unsubscribeFromVideo', { - sender: subscriber.stream.connection.connectionId - }, function (error, response) { + this.openvidu.sendRequest('unsubscribeFromVideo', { sender: subscriber.stream.connection.connectionId }, function (error, response) { if (error) { console.error('Error unsubscribing from ' + connectionId, error); } @@ -224,28 +235,27 @@ var Session = /** @class */ (function () { subscriber.stream.disposeWebRtcPeer(); subscriber.stream.disposeMediaStream(); }); - subscriber.stream.removeVideo(); + subscriber.stream.streamManager.removeAllVideos(); }; /** - * Publishes the participant's audio-video stream contained in `publisher` object to the session + * Publishes to the Session the Publisher object * * #### Events dispatched * * The local [[Publisher]] object will dispatch a `streamCreated` event upon successful termination of this method. See [[StreamEvent]] to learn more. * - * The local [[Publisher]] object will dispatch a `remoteVideoPlaying` event only if [[Publisher.subscribeToRemote]] was called before this method, once the remote video starts playing. - * See [[VideoElementEvent]] to learn more. + * The local [[Publisher]] object will dispatch a `streamPlaying` once the media stream starts playing. See [[StreamManagerEvent]] to learn more. * * The [[Session]] object of every other participant connected to the session will dispatch a `streamCreated` event so they can subscribe to it. See [[StreamEvent]] to learn more. * - * @returns A Promise (to which you can optionally subscribe to) that is resolved if the publisher was successfully published and rejected with an Error object if not + * @returns A Promise (to which you can optionally subscribe to) that is resolved only after the publisher was successfully published and rejected with an Error object if not */ Session.prototype.publish = function (publisher) { var _this = this; return new Promise(function (resolve, reject) { publisher.session = _this; publisher.stream.session = _this; - if (!publisher.stream.isPublisherPublished) { + if (!publisher.stream.isLocalStreamPublished) { // 'Session.unpublish(Publisher)' has NOT been called _this.connection.addStream(publisher.stream); publisher.stream.publish() @@ -260,6 +270,7 @@ var Session = /** @class */ (function () { publisher.initialize() .then(function () { _this.connection.addStream(publisher.stream); + publisher.reestablishStreamPlayingEvent(); publisher.stream.publish() .then(function () { resolve(); @@ -273,19 +284,23 @@ var Session = /** @class */ (function () { }); }; /** - * Unpublishes the participant's audio-video stream contained in `publisher` object. + * Unpublishes from the Session the Publisher object. * * #### Events dispatched * * The [[Publisher]] object of the local participant will dispatch a `streamDestroyed` event. - * This event will automatically stop all media tracks and delete the HTML video element associated to it. - * Call `event.preventDefault()` if you want clean the Publisher object yourself or re-publish it in a different Session. + * This event will automatically stop all media tracks and delete any HTML video element associated to this Publisher + * (only those videos [created by OpenVidu Browser](/docs/how-do-i/manage-videos/#let-openvidu-take-care-of-the-video-players)). + * For every video removed, the Publisher object will dispatch a `videoElementDestroyed` event. + * Call `event.preventDefault()` uppon event `streamDestroyed` if you want to clean the Publisher object on your own or re-publish it in a different Session. * * The [[Session]] object of every other participant connected to the session will dispatch a `streamDestroyed` event. - * This event will automatically unsubscribe the Subscriber object from the session (this includes closing the WebRTCPeer connection and disposing all MediaStreamTracks) and delete the HTML video element associated to it. - * Call `event.preventDefault()` to avoid this default behaviour and take care of disposing and cleaning the Subscriber object yourself. + * This event will automatically unsubscribe the Subscriber object from the session (this includes closing the WebRTCPeer connection and disposing all MediaStreamTracks) and + * delete any HTML video element associated to it (only those [created by OpenVidu Browser](/docs/how-do-i/manage-videos/#let-openvidu-take-care-of-the-video-players)). + * For every video removed, the Subscriber object will dispatch a `videoElementDestroyed` event. + * Call `event.preventDefault()` uppon event `streamDestroyed` to avoid this default behaviour and take care of disposing and cleaning the Subscriber object on your own. * - * See [[StreamEvent]] to learn more. + * See [[StreamEvent]] and [[VideoElementEvent]] to learn more. */ Session.prototype.unpublish = function (publisher) { var stream = publisher.stream; @@ -664,9 +679,12 @@ var Session = /** @class */ (function () { this.openvidu.closeWs(); } if (!!this.connection.stream) { - // Make Publisher object dispatch 'streamDestroyed' event (if there's a local stream) + // Dispose Publisher's local stream this.connection.stream.disposeWebRtcPeer(); - this.connection.stream.emitEvent('stream-destroyed-by-disconnect', [reason]); + if (this.connection.stream.isLocalStreamPublished) { + // Make Publisher object dispatch 'streamDestroyed' event if the Stream was published + this.connection.stream.ee.emitEvent('local-stream-destroyed-by-disconnect', [reason]); + } } if (!this.connection.disposed) { // Make Session object dispatch 'sessionDisconnected' event (if it is not already disposed) diff --git a/openvidu-browser/lib/OpenVidu/Session.js.map b/openvidu-browser/lib/OpenVidu/Session.js.map index 097f3001..adc1f102 100644 --- a/openvidu-browser/lib/OpenVidu/Session.js.map +++ b/openvidu-browser/lib/OpenVidu/Session.js.map @@ -1 +1 @@ -{"version":3,"file":"Session.js","sourceRoot":"","sources":["../../src/OpenVidu/Session.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"Session.js","sourceRoot":"","sources":["../../src/OpenVidu/Session.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/openvidu-browser/lib/OpenVidu/Stream.d.ts b/openvidu-browser/lib/OpenVidu/Stream.d.ts index c086e3ea..635db597 100644 --- a/openvidu-browser/lib/OpenVidu/Stream.d.ts +++ b/openvidu-browser/lib/OpenVidu/Stream.d.ts @@ -1,11 +1,13 @@ import { Connection } from './Connection'; import { Session } from './Session'; +import { StreamManager } from './StreamManager'; import { InboundStreamOptions } from '../OpenViduInternal/Interfaces/Private/InboundStreamOptions'; import { OutboundStreamOptions } from '../OpenViduInternal/Interfaces/Private/OutboundStreamOptions'; -import { VideoInsertMode } from '../OpenViduInternal/Enums/VideoInsertMode'; +import EventEmitter = require('wolfy87-eventemitter'); /** - * Represents each one of the videos send and receive by a user in a session. - * Therefore each [[Publisher]] and [[Subscriber]] has an attribute of type Stream + * Represents each one of the media streams available in OpenVidu Server for certain session. + * Each [[Publisher]] and [[Subscriber]] has an attribute of type Stream, as they give access + * to one of them (sending and receiving it, respectively) */ export declare class Stream { /** @@ -13,7 +15,8 @@ export declare class Stream { */ connection: Connection; /** - * Frame rate of the video in frames per second. This property is only defined if the [[Publisher]] of the stream was initialized passing a _frameRate_ property on [[OpenVidu.initPublisher]] method + * Frame rate of the video in frames per second. This property is only defined if the [[Publisher]] of + * the stream was initialized passing a _frameRate_ property on [[OpenVidu.initPublisher]] method */ frameRate?: number; /** @@ -29,37 +32,29 @@ export declare class Stream { */ streamId: string; /** - * `"CAMERA"` or `"SCREEN"`. undefined if stream is audio-only + * `"CAMERA"` or `"SCREEN"`. *undefined* if stream is audio-only */ typeOfVideo?: string; - private ee; + /** + * StreamManager object ([[Publisher]] or [[Subscriber]]) in charge of displaying this stream in the DOM + */ + streamManager: StreamManager; + /** + * @hidden + */ + ee: EventEmitter; private webRtcPeer; private mediaStream; - private video; - private targetElement; - private parentId; private webRtcStats; private isSubscribeToRemote; /** * @hidden */ - isReadyToPublish: boolean; + isLocalStreamReadyToPublish: boolean; /** * @hidden */ - isPublisherPublished: boolean; - /** - * @hidden - */ - isVideoELementCreated: boolean; - /** - * @hidden - */ - accessIsAllowed: boolean; - /** - * @hidden - */ - accessIsDenied: boolean; + isLocalStreamPublished: boolean; /** * @hidden */ @@ -88,6 +83,10 @@ export declare class Stream { * @hidden */ setMediaStream(mediaStream: MediaStream): void; + /** + * @hidden + */ + updateMediaStreamInVideos(): void; /** * @hidden */ @@ -99,11 +98,7 @@ export declare class Stream { /** * @hidden */ - getVideoElement(): HTMLVideoElement; - /** - * @hidden - */ - subscribeToMyRemote(): void; + subscribeToMyRemote(value: boolean): void; /** * @hidden */ @@ -128,22 +123,6 @@ export declare class Stream { * @hidden */ displayMyRemote(): boolean; - /** - * @hidden - */ - on(eventName: string, listener: any): void; - /** - * @hidden - */ - once(eventName: string, listener: any): void; - /** - * @hidden - */ - insertVideo(targetElement?: HTMLElement, insertMode?: VideoInsertMode): HTMLVideoElement; - /** - * @hidden - */ - removeVideo(): void; /** * @hidden */ @@ -156,10 +135,6 @@ export declare class Stream { * @hidden */ isSendScreen(): boolean; - /** - * @hidden - */ - emitEvent(type: string, eventArray: any[]): void; /** * @hidden */ @@ -181,7 +156,8 @@ export declare class Stream { private processSdpAnswer(sdpAnswer); private initWebRtcStats(); private stopWebRtcStats(); - private isLocal(); - private insertElementWithMode(element, insertMode); - private mirrorVideo(video); + /** + * @hidden + */ + isLocal(): boolean; } diff --git a/openvidu-browser/lib/OpenVidu/Stream.js b/openvidu-browser/lib/OpenVidu/Stream.js index b7fc5c5e..ac332f79 100644 --- a/openvidu-browser/lib/OpenVidu/Stream.js +++ b/openvidu-browser/lib/OpenVidu/Stream.js @@ -20,10 +20,10 @@ var WebRtcStats_1 = require("../OpenViduInternal/WebRtcStats/WebRtcStats"); var PublisherSpeakingEvent_1 = require("../OpenViduInternal/Events/PublisherSpeakingEvent"); var EventEmitter = require("wolfy87-eventemitter"); var kurentoUtils = require("../OpenViduInternal/KurentoUtils/kurento-utils-js"); -var VideoInsertMode_1 = require("../OpenViduInternal/Enums/VideoInsertMode"); /** - * Represents each one of the videos send and receive by a user in a session. - * Therefore each [[Publisher]] and [[Subscriber]] has an attribute of type Stream + * Represents each one of the media streams available in OpenVidu Server for certain session. + * Each [[Publisher]] and [[Subscriber]] has an attribute of type Stream, as they give access + * to one of them (sending and receiving it, respectively) */ var Stream = /** @class */ (function () { /** @@ -31,28 +31,19 @@ var Stream = /** @class */ (function () { */ function Stream(session, options) { var _this = this; + /** + * @hidden + */ this.ee = new EventEmitter(); this.isSubscribeToRemote = false; /** * @hidden */ - this.isReadyToPublish = false; + this.isLocalStreamReadyToPublish = false; /** * @hidden */ - this.isPublisherPublished = false; - /** - * @hidden - */ - this.isVideoELementCreated = false; - /** - * @hidden - */ - this.accessIsAllowed = false; - /** - * @hidden - */ - this.accessIsDenied = false; + this.isLocalStreamPublished = false; this.session = session; if (options.hasOwnProperty('id')) { // InboundStreamOptions: stream belongs to a Subscriber @@ -84,9 +75,8 @@ var Stream = /** @class */ (function () { this.hasAudio = this.isSendAudio(); this.hasVideo = this.isSendVideo(); } - this.on('mediastream-updated', function () { - if (_this.video) - _this.video.srcObject = _this.mediaStream; + this.ee.on('mediastream-updated', function () { + _this.streamManager.updateMediaStream(_this.mediaStream); console.debug('Video srcObject [' + _this.mediaStream + '] updated in stream [' + _this.streamId + ']'); }); } @@ -102,6 +92,11 @@ var Stream = /** @class */ (function () { */ Stream.prototype.setMediaStream = function (mediaStream) { this.mediaStream = mediaStream; + }; + /** + * @hidden + */ + Stream.prototype.updateMediaStreamInVideos = function () { this.ee.emitEvent('mediastream-updated'); }; /** @@ -119,14 +114,8 @@ var Stream = /** @class */ (function () { /** * @hidden */ - Stream.prototype.getVideoElement = function () { - return this.video; - }; - /** - * @hidden - */ - Stream.prototype.subscribeToMyRemote = function () { - this.isSubscribeToRemote = true; + Stream.prototype.subscribeToMyRemote = function (value) { + this.isSubscribeToRemote = value; }; /** * @hidden @@ -154,7 +143,7 @@ var Stream = /** @class */ (function () { Stream.prototype.publish = function () { var _this = this; return new Promise(function (resolve, reject) { - if (_this.isReadyToPublish) { + if (_this.isLocalStreamReadyToPublish) { _this.initWebRtcPeerSend() .then(function () { resolve(); @@ -163,7 +152,7 @@ var Stream = /** @class */ (function () { }); } else { - _this.ee.once('stream-ready-to-publish', function (streamEvent) { + _this.ee.once('stream-ready-to-publish', function () { _this.publish() .then(function () { resolve(); @@ -198,6 +187,7 @@ var Stream = /** @class */ (function () { this.mediaStream.getVideoTracks().forEach(function (track) { track.stop(); }); + delete this.mediaStream; } console.info((!!this.outboundStreamOpts ? 'Local ' : 'Remote ') + "MediaStream from 'Stream' with id [" + this.streamId + '] is now disposed'); }; @@ -207,69 +197,6 @@ var Stream = /** @class */ (function () { Stream.prototype.displayMyRemote = function () { return this.isSubscribeToRemote; }; - /** - * @hidden - */ - Stream.prototype.on = function (eventName, listener) { - this.ee.on(eventName, listener); - }; - /** - * @hidden - */ - Stream.prototype.once = function (eventName, listener) { - this.ee.once(eventName, listener); - }; - /** - * @hidden - */ - Stream.prototype.insertVideo = function (targetElement, insertMode) { - var _this = this; - if (!!targetElement) { - this.video = document.createElement('video'); - this.video.id = (this.isLocal() ? 'local-' : 'remote-') + 'video-' + this.streamId; - this.video.autoplay = true; - this.video.controls = false; - this.video.srcObject = this.mediaStream; - if (this.isLocal() && !this.displayMyRemote()) { - this.video.muted = true; - if (this.outboundStreamOpts.publisherProperties.mirror) { - this.mirrorVideo(this.video); - } - this.video.oncanplay = function () { - console.info("Local 'Stream' with id [" + _this.streamId + '] video is now playing'); - _this.ee.emitEvent('video-is-playing', [{ - element: _this.video - }]); - }; - } - else { - this.video.title = this.streamId; - } - this.targetElement = targetElement; - this.parentId = targetElement.id; - var insMode = !!insertMode ? insertMode : VideoInsertMode_1.VideoInsertMode.APPEND; - this.insertElementWithMode(this.video, insMode); - this.ee.emitEvent('video-element-created-by-stream', [{ - element: this.video - }]); - this.isVideoELementCreated = true; - } - this.isReadyToPublish = true; - this.ee.emitEvent('stream-ready-to-publish'); - return this.video; - }; - /** - * @hidden - */ - Stream.prototype.removeVideo = function () { - if (this.video) { - if (document.getElementById(this.parentId)) { - document.getElementById(this.parentId).removeChild(this.video); - this.ee.emitEvent('video-removed', [this.video]); - } - delete this.video; - } - }; /** * @hidden */ @@ -293,12 +220,6 @@ var Stream = /** @class */ (function () { return (!!this.outboundStreamOpts && this.outboundStreamOpts.publisherProperties.videoSource === 'screen'); }; - /** - * @hidden - */ - Stream.prototype.emitEvent = function (type, eventArray) { - this.ee.emitEvent(type, eventArray); - }; /** * @hidden */ @@ -379,6 +300,12 @@ var Stream = /** @class */ (function () { else { _this.processSdpAnswer(response.sdpAnswer) .then(function () { + _this.isLocalStreamPublished = true; + if (_this.displayMyRemote()) { + // If remote now we can set the srcObject value of video elements + // 'streamPlaying' event will be triggered + _this.updateMediaStreamInVideos(); + } _this.ee.emitEvent('stream-created-by-publisher'); resolve(); })["catch"](function (error) { @@ -404,7 +331,6 @@ var Stream = /** @class */ (function () { _this.webRtcPeer.generateOffer(successCallback); }); } - _this.isPublisherPublished = true; }); }; Stream.prototype.initWebRtcPeerReceive = function () { @@ -460,8 +386,7 @@ var Stream = /** @class */ (function () { var streamId = _this.streamId; var peerConnection = _this.webRtcPeer.peerConnection; peerConnection.setRemoteDescription(answer, function () { - // Avoids to subscribe to your own stream remotely - // except when showMyRemote is true + // Update remote MediaStream object except when local stream if (!_this.isLocal() || _this.displayMyRemote()) { _this.mediaStream = peerConnection.getRemoteStreams()[0]; console.debug('Peer remote stream', _this.mediaStream); @@ -471,28 +396,6 @@ var Stream = /** @class */ (function () { _this.enableSpeakingEvents(); } } - if (!!_this.video) { - // let thumbnailId = this.video.thumb; - _this.video.oncanplay = function () { - if (_this.isLocal() && _this.displayMyRemote()) { - console.info("Your own remote 'Stream' with id [" + _this.streamId + '] video is now playing'); - _this.ee.emitEvent('remote-video-is-playing', [{ - element: _this.video - }]); - } - else if (!_this.isLocal() && !_this.displayMyRemote()) { - console.info("Remote 'Stream' with id [" + _this.streamId + '] video is now playing'); - _this.ee.emitEvent('video-is-playing', [{ - element: _this.video - }]); - } - // show(thumbnailId); - // this.hideSpinner(this.streamId); - }; - } - _this.session.emitEvent('stream-subscribed', [{ - stream: _this - }]); } _this.initWebRtcStats(); resolve(); @@ -510,37 +413,13 @@ var Stream = /** @class */ (function () { this.webRtcStats.stopWebRtcStats(); } }; + /** + * @hidden + */ Stream.prototype.isLocal = function () { // inbound options undefined and outbound options defined return (!this.inboundStreamOpts && !!this.outboundStreamOpts); }; - Stream.prototype.insertElementWithMode = function (element, insertMode) { - if (!!this.targetElement) { - switch (insertMode) { - case VideoInsertMode_1.VideoInsertMode.AFTER: - this.targetElement.parentNode.insertBefore(element, this.targetElement.nextSibling); - break; - case VideoInsertMode_1.VideoInsertMode.APPEND: - this.targetElement.appendChild(element); - break; - case VideoInsertMode_1.VideoInsertMode.BEFORE: - this.targetElement.parentNode.insertBefore(element, this.targetElement); - break; - case VideoInsertMode_1.VideoInsertMode.PREPEND: - this.targetElement.insertBefore(element, this.targetElement.childNodes[0]); - break; - case VideoInsertMode_1.VideoInsertMode.REPLACE: - this.targetElement.parentNode.replaceChild(element, this.targetElement); - break; - default: - this.insertElementWithMode(element, VideoInsertMode_1.VideoInsertMode.APPEND); - } - } - }; - Stream.prototype.mirrorVideo = function (video) { - video.style.transform = 'rotateY(180deg)'; - video.style.webkitTransform = 'rotateY(180deg)'; - }; return Stream; }()); exports.Stream = Stream; diff --git a/openvidu-browser/lib/OpenVidu/Stream.js.map b/openvidu-browser/lib/OpenVidu/Stream.js.map index a69634fe..07e83f83 100644 --- a/openvidu-browser/lib/OpenVidu/Stream.js.map +++ b/openvidu-browser/lib/OpenVidu/Stream.js.map @@ -1 +1 @@ -{"version":3,"file":"Stream.js","sourceRoot":"","sources":["../../src/OpenVidu/Stream.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;AAMH,2EAA0E;AAC1E,4FAA2F;AAC3F,mDAAsD;AAEtD,gFAAkF;AAClF,6EAA4E;AAG5E;;;GAGG;AACH;IAiFI;;OAEG;IACH,gBAAY,OAAgB,EAAE,OAA0D;QAAxF,iBAqCC;QAzFO,OAAE,GAAG,IAAI,YAAY,EAAE,CAAC;QASxB,wBAAmB,GAAG,KAAK,CAAC;QAEpC;;WAEG;QACH,qBAAgB,GAAG,KAAK,CAAC;QACzB;;WAEG;QACH,yBAAoB,GAAG,KAAK,CAAC;QAC7B;;WAEG;QACH,0BAAqB,GAAG,KAAK,CAAC;QAC9B;;WAEG;QACH,oBAAe,GAAG,KAAK,CAAC;QACxB;;WAEG;QACH,mBAAc,GAAG,KAAK,CAAC;QAwBnB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAEvB,IAAI,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,EAAE;YAC9B,uDAAuD;YACvD,IAAI,CAAC,iBAAiB,GAAyB,OAAO,CAAC;YACvD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC;YAC1C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC;YACjD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC;YACjD,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC;YAC1G,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC;SAC7G;aAAM;YACH,uDAAuD;YACvD,IAAI,CAAC,kBAAkB,GAA0B,OAAO,CAAC;YAEzD,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE;gBACpB,IAAI,IAAI,CAAC,YAAY,EAAE,EAAE;oBACrB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;oBACzB,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC;iBAC/B;qBAAM;oBACH,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;oBACzB,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC;iBAC/B;gBACD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,SAAS,CAAC;aAC1E;iBAAM;gBACH,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;gBACxB,OAAO,IAAI,CAAC,WAAW,CAAC;aAC3B;YACD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;YACnC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;SACtC;QAED,IAAI,CAAC,EAAE,CAAC,qBAAqB,EAAE;YAC3B,IAAI,KAAI,CAAC,KAAK;gBAAE,KAAI,CAAC,KAAK,CAAC,SAAS,GAAG,KAAI,CAAC,WAAW,CAAC;YACxD,OAAO,CAAC,KAAK,CAAC,mBAAmB,GAAG,KAAI,CAAC,WAAW,GAAG,uBAAuB,GAAG,KAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC;QAC1G,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,oBAAoB;IAEpB;;OAEG;IACH,+BAAc,GAAd;QACI,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,+BAAc,GAAd,UAAe,WAAwB;QACnC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;IAC7C,CAAC;IAED;;OAEG;IACH,8BAAa,GAAb;QACI,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,qCAAoB,GAApB;QACI,OAAO,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,gCAAe,GAAf;QACI,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,oCAAmB,GAAnB;QACI,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,yCAAwB,GAAxB,UAAyB,kBAAyC;QAC9D,IAAI,CAAC,kBAAkB,GAAG,kBAAkB,CAAC;IACjD,CAAC;IAED;;OAEG;IACH,0BAAS,GAAT;QAAA,iBAUC;QATG,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM;YAC/B,KAAI,CAAC,qBAAqB,EAAE;iBACvB,IAAI,CAAC;gBACF,OAAO,EAAE,CAAC;YACd,CAAC,CAAC,CACD,OAAK,CAAA,CAAC,UAAA,KAAK;gBACR,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACH,wBAAO,GAAP;QAAA,iBAsBC;QArBG,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM;YAC/B,IAAI,KAAI,CAAC,gBAAgB,EAAE;gBACvB,KAAI,CAAC,kBAAkB,EAAE;qBACpB,IAAI,CAAC;oBACF,OAAO,EAAE,CAAC;gBACd,CAAC,CAAC,CACD,OAAK,CAAA,CAAC,UAAA,KAAK;oBACR,MAAM,CAAC,KAAK,CAAC,CAAC;gBAClB,CAAC,CAAC,CAAC;aACV;iBAAM;gBACH,KAAI,CAAC,EAAE,CAAC,IAAI,CAAC,yBAAyB,EAAE,UAAA,WAAW;oBAC/C,KAAI,CAAC,OAAO,EAAE;yBACT,IAAI,CAAC;wBACF,OAAO,EAAE,CAAC;oBACd,CAAC,CAAC,CACD,OAAK,CAAA,CAAC,UAAA,KAAK;wBACR,MAAM,CAAC,KAAK,CAAC,CAAC;oBAClB,CAAC,CAAC,CAAC;gBACX,CAAC,CAAC,CAAC;aACN;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACH,kCAAiB,GAAjB;QACI,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;SAC7B;QACD,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;SAC3B;QAED,IAAI,CAAC,eAAe,EAAE,CAAC;QAEvB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,GAAG,oCAAoC,GAAG,IAAI,CAAC,QAAQ,GAAG,iBAAiB,CAAC,CAAC;IACpJ,CAAC;IAED;;OAEG;IACH,mCAAkB,GAAlB;QACI,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC,UAAC,KAAK;gBAC5C,KAAK,CAAC,IAAI,EAAE,CAAC;YACjB,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC,UAAC,KAAK;gBAC5C,KAAK,CAAC,IAAI,EAAE,CAAC;YACjB,CAAC,CAAC,CAAC;SACN;QACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,qCAAqC,GAAG,IAAI,CAAC,QAAQ,GAAG,mBAAmB,CAAC,CAAC;IACnJ,CAAC;IAED;;OAEG;IACH,gCAAe,GAAf;QACI,OAAO,IAAI,CAAC,mBAAmB,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,mBAAE,GAAF,UAAG,SAAiB,EAAE,QAAa;QAC/B,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACpC,CAAC;IAED;;OAEG;IACH,qBAAI,GAAJ,UAAK,SAAiB,EAAE,QAAa;QACjC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,4BAAW,GAAX,UAAY,aAA2B,EAAE,UAA4B;QAArE,iBA4CC;QA3CG,IAAI,CAAC,CAAC,aAAa,EAAE;YAEjB,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAE7C,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;YACnF,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;YAC3B,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC;YAC5B,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC;YAExC,IAAI,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,EAAE;gBAC3C,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC;gBAExB,IAAI,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,MAAM,EAAE;oBACpD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBAChC;gBAED,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG;oBACnB,OAAO,CAAC,IAAI,CAAC,0BAA0B,GAAG,KAAI,CAAC,QAAQ,GAAG,wBAAwB,CAAC,CAAC;oBACpF,KAAI,CAAC,EAAE,CAAC,SAAS,CAAC,kBAAkB,EAAE,CAAC;4BACnC,OAAO,EAAE,KAAI,CAAC,KAAK;yBACtB,CAAC,CAAC,CAAC;gBACR,CAAC,CAAC;aACL;iBAAM;gBACH,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC;aACpC;YAED,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;YACnC,IAAI,CAAC,QAAQ,GAAG,aAAa,CAAC,EAAE,CAAC;YAEjC,IAAM,OAAO,GAAG,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,iCAAe,CAAC,MAAM,CAAC;YACnE,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAEhD,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,iCAAiC,EAAE,CAAC;oBAClD,OAAO,EAAE,IAAI,CAAC,KAAK;iBACtB,CAAC,CAAC,CAAC;YAEJ,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;SACrC;QAED,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,yBAAyB,CAAC,CAAC;QAE7C,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,4BAAW,GAAX;QACI,IAAI,IAAI,CAAC,KAAK,EAAE;YACZ,IAAI,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;gBACxC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,QAAQ,CAAE,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAChE,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;aACpD;YACD,OAAO,IAAI,CAAC,KAAK,CAAC;SACrB;IACL,CAAC;IAED;;OAEG;IACH,4BAAW,GAAX;QACI,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB;YAC7B,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,WAAW,KAAK,IAAI;YAChE,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,WAAW,KAAK,KAAK,CAAC,CAAC;IAC3E,CAAC;IAED;;OAEG;IACH,4BAAW,GAAX;QACI,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB;YAC7B,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,WAAW,KAAK,IAAI;YAChE,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,WAAW,KAAK,KAAK,CAAC,CAAC;IAC3E,CAAC;IAED;;OAEG;IACH,6BAAY,GAAZ;QACI,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB;YAC7B,IAAI,CAAC,kBAAkB,CAAC,mBAAmB,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC;IAC9E,CAAC;IAED;;OAEG;IACH,0BAAS,GAAT,UAAU,IAAY,EAAE,UAAiB;QACrC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACxC,CAAC;IAED;;OAEG;IACH,0CAAyB,GAAzB;QACI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACnB,IAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC,8BAA8B,IAAI,EAAE,CAAC;YACrG,WAAW,CAAC,QAAQ,GAAG,CAAC,OAAO,WAAW,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;YAC9F,WAAW,CAAC,SAAS,GAAG,CAAC,OAAO,WAAW,CAAC,SAAS,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAElG,IAAI,CAAC,WAAW,GAAG,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;SAClF;IACL,CAAC;IAED;;OAEG;IACH,qCAAoB,GAApB;QAAA,iBAQC;QAPG,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACjC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,EAAE;YAC5B,KAAI,CAAC,OAAO,CAAC,SAAS,CAAC,wBAAwB,EAAE,CAAC,IAAI,+CAAsB,CAAC,KAAI,CAAC,OAAO,EAAE,wBAAwB,EAAE,KAAI,CAAC,UAAU,EAAE,KAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC3J,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,kBAAkB,EAAE;YACpC,KAAI,CAAC,OAAO,CAAC,SAAS,CAAC,uBAAuB,EAAE,CAAC,IAAI,+CAAsB,CAAC,KAAI,CAAC,OAAO,EAAE,uBAAuB,EAAE,KAAI,CAAC,UAAU,EAAE,KAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;QACzJ,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACH,yCAAwB,GAAxB;QAAA,iBAUC;QATG,IAAI,CAAC,yBAAyB,EAAE,CAAC;QACjC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,UAAU,EAAE;YAC5B,KAAI,CAAC,OAAO,CAAC,SAAS,CAAC,wBAAwB,EAAE,CAAC,IAAI,+CAAsB,CAAC,KAAI,CAAC,OAAO,EAAE,wBAAwB,EAAE,KAAI,CAAC,UAAU,EAAE,KAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YACvJ,KAAI,CAAC,qBAAqB,EAAE,CAAC;QACjC,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,kBAAkB,EAAE;YACpC,KAAI,CAAC,OAAO,CAAC,SAAS,CAAC,uBAAuB,EAAE,CAAC,IAAI,+CAAsB,CAAC,KAAI,CAAC,OAAO,EAAE,uBAAuB,EAAE,KAAI,CAAC,UAAU,EAAE,KAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;YACrJ,KAAI,CAAC,qBAAqB,EAAE,CAAC;QACjC,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;OAEG;IACH,sCAAqB,GAArB;QACI,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;QACxB,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;IACjC,CAAC;IAGD,qBAAqB;IAEb,mCAAkB,GAA1B;QAAA,iBAgEC;QA/DG,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM;YAE/B,IAAM,oBAAoB,GAAG;gBACzB,KAAK,EAAE,KAAI,CAAC,WAAW,EAAE;gBACzB,KAAK,EAAE,KAAI,CAAC,WAAW,EAAE;aAC5B,CAAC;YAEF,IAAM,OAAO,GAAQ;gBACjB,WAAW,EAAE,KAAI,CAAC,WAAW;gBAC7B,gBAAgB,EAAE,oBAAoB;gBACtC,cAAc,EAAE,KAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAI,CAAC,UAAU,CAAC;gBACtE,UAAU,EAAE,KAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC,UAAU;aACrE,CAAC;YAEF,IAAM,eAAe,GAAG,UAAC,KAAK,EAAE,aAAa,EAAE,EAAE;gBAC7C,IAAI,KAAK,EAAE;oBACP,MAAM,CAAC,IAAI,KAAK,CAAC,6BAA6B,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;iBAC5E;gBAED,OAAO,CAAC,KAAK,CAAC,kCAAkC;sBAC1C,KAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;gBAEpC,KAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,cAAc,EAAE;oBAC9C,QAAQ,EAAE,aAAa;oBACvB,UAAU,EAAE,KAAI,CAAC,eAAe,EAAE,IAAI,KAAK;oBAC3C,WAAW,EAAE,KAAI,CAAC,WAAW,EAAE;oBAC/B,WAAW,EAAE,KAAI,CAAC,WAAW,EAAE;oBAC/B,WAAW,EAAE,CAAC,CAAC,KAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBACtF,SAAS,EAAE,CAAC,CAAC,KAAI,CAAC,SAAS,CAAC,CAAC,CAAC,KAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;iBACpD,EAAE,UAAC,KAAK,EAAE,QAAQ;oBACf,IAAI,KAAK,EAAE;wBACP,MAAM,CAAC,yBAAyB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;qBAC7D;yBAAM;wBACH,KAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,SAAS,CAAC;6BACpC,IAAI,CAAC;4BACF,KAAI,CAAC,EAAE,CAAC,SAAS,CAAC,6BAA6B,CAAC,CAAC;4BACjD,OAAO,EAAE,CAAC;wBACd,CAAC,CAAC,CACD,OAAK,CAAA,CAAC,UAAA,KAAK;4BACR,MAAM,CAAC,KAAK,CAAC,CAAC;wBAClB,CAAC,CAAC,CAAC;wBACP,OAAO,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;qBACjE;gBACL,CAAC,CAAC,CAAC;YACP,CAAC,CAAC;YAEF,IAAI,KAAI,CAAC,eAAe,EAAE,EAAE;gBACxB,KAAI,CAAC,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC,kBAAkB,CAAC,OAAO,EAAE,UAAA,GAAG;oBACrE,IAAI,GAAG,EAAE;wBACL,MAAM,CAAC,GAAG,CAAC,CAAC;qBACf;oBACD,KAAI,CAAC,UAAU,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;gBACnD,CAAC,CAAC,CAAC;aACN;iBAAM;gBACH,KAAI,CAAC,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC,kBAAkB,CAAC,OAAO,EAAE,UAAA,KAAK;oBACvE,IAAI,KAAK,EAAE;wBACP,MAAM,CAAC,KAAK,CAAC,CAAC;qBACjB;oBACD,KAAI,CAAC,UAAU,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;gBACnD,CAAC,CAAC,CAAC;aACN;YACD,KAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;QACrC,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,sCAAqB,GAA7B;QAAA,iBA4CC;QA3CG,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM;YAE/B,IAAM,gBAAgB,GAAG;gBACrB,KAAK,EAAE,KAAI,CAAC,iBAAiB,CAAC,SAAS;gBACvC,KAAK,EAAE,KAAI,CAAC,iBAAiB,CAAC,SAAS;aAC1C,CAAC;YACF,OAAO,CAAC,KAAK,CAAC,uEAAuE,EACjF,gBAAgB,CAAC,CAAC;YACtB,IAAM,OAAO,GAAG;gBACZ,cAAc,EAAE,KAAI,CAAC,UAAU,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAI,CAAC,UAAU,CAAC;gBACtE,gBAAgB,EAAE,gBAAgB;aACrC,CAAC;YAEF,IAAM,eAAe,GAAG,UAAC,KAAK,EAAE,aAAa,EAAE,EAAE;gBAE7C,IAAI,KAAK,EAAE;oBACP,MAAM,CAAC,IAAI,KAAK,CAAC,+BAA+B,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;iBAC9E;gBACD,OAAO,CAAC,KAAK,CAAC,oCAAoC;sBAC5C,KAAI,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;gBACpC,KAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,kBAAkB,EAAE;oBAClD,MAAM,EAAE,KAAI,CAAC,QAAQ;oBACrB,QAAQ,EAAE,aAAa;iBAC1B,EAAE,UAAC,KAAK,EAAE,QAAQ;oBACf,IAAI,KAAK,EAAE;wBACP,MAAM,CAAC,IAAI,KAAK,CAAC,0BAA0B,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;qBACzE;yBAAM;wBACH,KAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC;4BAC3C,OAAO,EAAE,CAAC;wBACd,CAAC,CAAC,CAAC,OAAK,CAAA,CAAC,UAAA,KAAK;4BACV,MAAM,CAAC,KAAK,CAAC,CAAC;wBAClB,CAAC,CAAC,CAAC;qBACN;gBACL,CAAC,CAAC,CAAC;YACP,CAAC,CAAC;YAEF,KAAI,CAAC,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC,kBAAkB,CAAC,OAAO,EAAE,UAAA,KAAK;gBACvE,IAAI,KAAK,EAAE;oBACP,MAAM,CAAC,KAAK,CAAC,CAAC;iBACjB;gBACD,KAAI,CAAC,UAAU,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;YACnD,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,iCAAgB,GAAxB,UAAyB,SAAS;QAAlC,iBA0DC;QAzDG,OAAO,IAAI,OAAO,CAAC,UAAC,OAAO,EAAE,MAAM;YAC/B,IAAM,MAAM,GAAG,IAAI,qBAAqB,CAAC;gBACrC,IAAI,EAAE,QAAQ;gBACd,GAAG,EAAE,SAAS;aACjB,CAAC,CAAC;YAEH,OAAO,CAAC,KAAK,CAAC,KAAI,CAAC,QAAQ,GAAG,6CAA6C,EAAE,SAAS,CAAC,CAAC;YAExF,IAAM,QAAQ,GAAG,KAAI,CAAC,QAAQ,CAAC;YAC/B,IAAM,cAAc,GAAG,KAAI,CAAC,UAAU,CAAC,cAAc,CAAC;YACtD,cAAc,CAAC,oBAAoB,CAAC,MAAM,EAAE;gBAExC,kDAAkD;gBAClD,mCAAmC;gBACnC,IAAI,CAAC,KAAI,CAAC,OAAO,EAAE,IAAI,KAAI,CAAC,eAAe,EAAE,EAAE;oBAC3C,KAAI,CAAC,WAAW,GAAG,cAAc,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,CAAC;oBACxD,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,KAAI,CAAC,WAAW,CAAC,CAAC;oBAEtD,IAAI,CAAC,CAAC,KAAI,CAAC,WAAW,EAAE;wBAEpB,KAAI,CAAC,EAAE,CAAC,SAAS,CAAC,qBAAqB,CAAC,CAAC;wBAEzC,IAAI,CAAC,CAAC,KAAI,CAAC,WAAW,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,IAAI,KAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE;4BAC9E,KAAI,CAAC,oBAAoB,EAAE,CAAC;yBAC/B;qBACJ;oBAED,IAAI,CAAC,CAAC,KAAI,CAAC,KAAK,EAAE;wBACd,sCAAsC;wBACtC,KAAI,CAAC,KAAK,CAAC,SAAS,GAAG;4BACnB,IAAI,KAAI,CAAC,OAAO,EAAE,IAAI,KAAI,CAAC,eAAe,EAAE,EAAE;gCAC1C,OAAO,CAAC,IAAI,CAAC,oCAAoC,GAAG,KAAI,CAAC,QAAQ,GAAG,wBAAwB,CAAC,CAAC;gCAC9F,KAAI,CAAC,EAAE,CAAC,SAAS,CAAC,yBAAyB,EAAE,CAAC;wCAC1C,OAAO,EAAE,KAAI,CAAC,KAAK;qCACtB,CAAC,CAAC,CAAC;6BACP;iCAAM,IAAI,CAAC,KAAI,CAAC,OAAO,EAAE,IAAI,CAAC,KAAI,CAAC,eAAe,EAAE,EAAE;gCACnD,OAAO,CAAC,IAAI,CAAC,2BAA2B,GAAG,KAAI,CAAC,QAAQ,GAAG,wBAAwB,CAAC,CAAC;gCACrF,KAAI,CAAC,EAAE,CAAC,SAAS,CAAC,kBAAkB,EAAE,CAAC;wCACnC,OAAO,EAAE,KAAI,CAAC,KAAK;qCACtB,CAAC,CAAC,CAAC;6BACP;4BACD,qBAAqB;4BACrB,mCAAmC;wBACvC,CAAC,CAAC;qBACL;oBACD,KAAI,CAAC,OAAO,CAAC,SAAS,CAAC,mBAAmB,EAAE,CAAC;4BACzC,MAAM,EAAE,KAAI;yBACf,CAAC,CAAC,CAAC;iBACP;gBAED,KAAI,CAAC,eAAe,EAAE,CAAC;gBACvB,OAAO,EAAE,CAAC;YAEd,CAAC,EAAE,UAAA,KAAK;gBACJ,MAAM,CAAC,IAAI,KAAK,CAAC,KAAI,CAAC,QAAQ,GAAG,8CAA8C,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC9G,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IAEO,gCAAe,GAAvB;QACI,IAAI,CAAC,WAAW,GAAG,IAAI,yBAAW,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC;IACvC,CAAC;IAEO,gCAAe,GAAvB;QACI,IAAI,CAAC,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,EAAE;YACpD,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,CAAC;SACtC;IACL,CAAC;IAEO,wBAAO,GAAf;QACI,yDAAyD;QACzD,OAAO,CAAC,CAAC,IAAI,CAAC,iBAAiB,IAAI,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;IAClE,CAAC;IAEO,sCAAqB,GAA7B,UAA8B,OAAoB,EAAE,UAA2B;QAC3E,IAAI,CAAC,CAAC,IAAI,CAAC,aAAa,EAAE;YACtB,QAAQ,UAAU,EAAE;gBAChB,KAAK,iCAAe,CAAC,KAAK;oBACtB,IAAI,CAAC,aAAa,CAAC,UAAY,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC;oBACtF,MAAM;gBACV,KAAK,iCAAe,CAAC,MAAM;oBACvB,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;oBACxC,MAAM;gBACV,KAAK,iCAAe,CAAC,MAAM;oBACvB,IAAI,CAAC,aAAa,CAAC,UAAY,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;oBAC1E,MAAM;gBACV,KAAK,iCAAe,CAAC,OAAO;oBACxB,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC3E,MAAM;gBACV,KAAK,iCAAe,CAAC,OAAO;oBACxB,IAAI,CAAC,aAAa,CAAC,UAAY,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;oBAC1E,MAAM;gBACV;oBACI,IAAI,CAAC,qBAAqB,CAAC,OAAO,EAAE,iCAAe,CAAC,MAAM,CAAC,CAAC;aACnE;SACJ;IACL,CAAC;IAEO,4BAAW,GAAnB,UAAoB,KAAuB;QACvC,KAAK,CAAC,KAAK,CAAC,SAAS,GAAG,iBAAiB,CAAC;QAC1C,KAAK,CAAC,KAAK,CAAC,eAAe,GAAG,iBAAiB,CAAC;IACpD,CAAC;IAEL,aAAC;AAAD,CAAC,AA1nBD,IA0nBC;AA1nBY,wBAAM"} \ No newline at end of file +{"version":3,"file":"Stream.js","sourceRoot":"","sources":["../../src/OpenVidu/Stream.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/openvidu-browser/lib/OpenVidu/StreamManager.d.ts b/openvidu-browser/lib/OpenVidu/StreamManager.d.ts new file mode 100644 index 00000000..40cdddd9 --- /dev/null +++ b/openvidu-browser/lib/OpenVidu/StreamManager.d.ts @@ -0,0 +1,124 @@ +import { Stream } from './Stream'; +import { EventDispatcher } from '../OpenViduInternal/Interfaces/Public/EventDispatcher'; +import { StreamManagerVideo } from '../OpenViduInternal/Interfaces/Public/StreamManagerVideo'; +import { Event } from '../OpenViduInternal/Events/Event'; +import { VideoInsertMode } from '../OpenViduInternal/Enums/VideoInsertMode'; +import EventEmitter = require('wolfy87-eventemitter'); +/** + * Interface in charge of displaying the media streams in the HTML DOM. This wraps any [[Publisher]] and [[Subscriber]] object. + * You can insert as many video players fo the same Stream as you want by calling [[StreamManager.addVideoElement]] or + * [[StreamManager.createVideoElement]]. + * + * The use of StreamManager wrapper is particularly useful when you don't need to differentiate between Publisher or Subscriber streams or just + * want to directly manage your own video elements (even more than one video element per Stream). This scenario is pretty common in + * declarative, MVC frontend frameworks such as Angular, React or Vue.js + */ +export declare class StreamManager implements EventDispatcher { + /** + * The Stream represented in the DOM by the Publisher/Subscriber + */ + stream: Stream; + /** + * All the videos displaying the Stream of this Publisher/Subscriber + */ + videos: StreamManagerVideo[]; + /** + * Whether the Stream represented in the DOM is local or remote + * - `false` for [[Publisher]] + * - `true` for [[Subscriber]] + */ + remote: boolean; + /** + * The DOM HTMLElement assigned as target element when creating the video for the Publisher/Subscriber. This property is only defined if: + * - [[Publisher]] has been initialized by calling method [[OpenVidu.initPublisher]] with a valid `targetElement` parameter + * - [[Subscriber]] has been initialized by calling method [[Session.subscribe]] with a valid `targetElement` parameter + */ + targetElement: HTMLElement; + /** + * `id` attribute of the DOM video element displaying the Publisher/Subscriber's stream. This property is only defined if: + * - [[Publisher]] has been initialized by calling method [[OpenVidu.initPublisher]] with a valid `targetElement` parameter + * - [[Subscriber]] has been initialized by calling method [[Session.subscribe]] with a valid `targetElement` parameter + */ + id: string; + /** + * @hidden + */ + firstVideoElement: StreamManagerVideo; + /** + * @hidden + */ + lazyLaunchVideoElementCreatedEvent: boolean; + /** + * @hidden + */ + element: HTMLElement; + /** + * @hidden + */ + protected ee: EventEmitter; + /** + * @hidden + */ + protected canPlayListener: EventListenerOrEventListenerObject; + /** + * @hidden + */ + constructor(stream: Stream, targetElement?: HTMLElement | string); + /** + * See [[EventDispatcher.on]] + */ + on(type: string, handler: (event: Event) => void): EventDispatcher; + /** + * See [[EventDispatcher.once]] + */ + once(type: string, handler: (event: Event) => void): StreamManager; + /** + * See [[EventDispatcher.off]] + */ + off(type: string, handler?: (event: Event) => void): StreamManager; + /** + * Makes `video` element parameter display this [[stream]]. This is useful when you are + * [managing the video elements on your own](/docs/how-do-i/manage-videos/#you-take-care-of-the-video-players) + * + * Calling this method with a video already added to other Publisher/Subscriber will cause the video element to be + * disassociated from that previous Publisher/Subscriber and to be associated to this one. + * + * @returns 1 if the video wasn't associated to any other Publisher/Subscriber and has been successfully added to this one. + * 0 if the video was already added to this Publisher/Subscriber. -1 if the video was previously associated to any other + * Publisher/Subscriber and has been successfully disassociated from that one and properly added to this one. + */ + addVideoElement(video: HTMLVideoElement): number; + /** + * Creates a new video element displaying this [[stream]]. This allows you to have multiple video elements displaying the same media stream. + * + * #### Events dispatched + * + * The Publisher/Subscriber object will dispatch a `videoElementCreated` event once the HTML video element has been added to DOM. See [[VideoElementEvent]] + * + * @param targetElement HTML DOM element (or its `id` attribute) in which the video element of the Publisher/Subscriber will be inserted + * @param insertMode How the video element will be inserted accordingly to `targetElemet` + */ + createVideoElement(targetElement?: string | HTMLElement, insertMode?: VideoInsertMode): HTMLVideoElement; + /** + * @hidden + */ + initializeVideoProperties(video: HTMLVideoElement): void; + /** + * @hidden + */ + removeAllVideos(): void; + /** + * @hidden + */ + disassociateVideo(video: HTMLVideoElement): boolean; + /** + * @hidden + */ + addPlayEventToFirstVideo(): void; + /** + * @hidden + */ + updateMediaStream(mediaStream: MediaStream): void; + private pushNewStreamManagerVideo(streamManagerVideo); + private mirrorVideo(video); +} diff --git a/openvidu-browser/lib/OpenVidu/StreamManager.js b/openvidu-browser/lib/OpenVidu/StreamManager.js new file mode 100644 index 00000000..94700b9d --- /dev/null +++ b/openvidu-browser/lib/OpenVidu/StreamManager.js @@ -0,0 +1,352 @@ +"use strict"; +/* + * (C) Copyright 2017-2018 OpenVidu (https://openvidu.io/) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +exports.__esModule = true; +var StreamManagerEvent_1 = require("../OpenViduInternal/Events/StreamManagerEvent"); +var VideoElementEvent_1 = require("../OpenViduInternal/Events/VideoElementEvent"); +var VideoInsertMode_1 = require("../OpenViduInternal/Enums/VideoInsertMode"); +var EventEmitter = require("wolfy87-eventemitter"); +/** + * Interface in charge of displaying the media streams in the HTML DOM. This wraps any [[Publisher]] and [[Subscriber]] object. + * You can insert as many video players fo the same Stream as you want by calling [[StreamManager.addVideoElement]] or + * [[StreamManager.createVideoElement]]. + * + * The use of StreamManager wrapper is particularly useful when you don't need to differentiate between Publisher or Subscriber streams or just + * want to directly manage your own video elements (even more than one video element per Stream). This scenario is pretty common in + * declarative, MVC frontend frameworks such as Angular, React or Vue.js + */ +var StreamManager = /** @class */ (function () { + /** + * @hidden + */ + function StreamManager(stream, targetElement) { + var _this = this; + /** + * All the videos displaying the Stream of this Publisher/Subscriber + */ + this.videos = []; + /** + * @hidden + */ + this.lazyLaunchVideoElementCreatedEvent = false; + /** + * @hidden + */ + this.ee = new EventEmitter(); + this.stream = stream; + this.stream.streamManager = this; + this.remote = !this.stream.isLocal(); + if (!!targetElement) { + var targEl = void 0; + if (typeof targetElement === 'string') { + targEl = document.getElementById(targetElement); + } + else if (targetElement instanceof HTMLElement) { + targEl = targetElement; + } + if (!!targEl) { + this.firstVideoElement = { + targetElement: targEl, + video: document.createElement('video'), + id: '' + }; + this.targetElement = targEl; + this.element = targEl; + } + } + this.canPlayListener = function () { + if (_this.stream.isLocal()) { + if (!_this.stream.displayMyRemote()) { + console.info("Your local 'Stream' with id [" + _this.stream.streamId + '] video is now playing'); + _this.ee.emitEvent('videoPlaying', [new VideoElementEvent_1.VideoElementEvent(_this.videos[0].video, _this, 'videoPlaying')]); + } + else { + console.info("Your own remote 'Stream' with id [" + _this.stream.streamId + '] video is now playing'); + _this.ee.emitEvent('remoteVideoPlaying', [new VideoElementEvent_1.VideoElementEvent(_this.videos[0].video, _this, 'remoteVideoPlaying')]); + } + } + else { + console.info("Remote 'Stream' with id [" + _this.stream.streamId + '] video is now playing'); + _this.ee.emitEvent('videoPlaying', [new VideoElementEvent_1.VideoElementEvent(_this.videos[0].video, _this, 'videoPlaying')]); + } + _this.ee.emitEvent('streamPlaying', [new StreamManagerEvent_1.StreamManagerEvent(_this)]); + }; + } + /** + * See [[EventDispatcher.on]] + */ + StreamManager.prototype.on = function (type, handler) { + this.ee.on(type, function (event) { + if (event) { + console.info("Event '" + type + "' triggered", event); + } + else { + console.info("Event '" + type + "' triggered"); + } + handler(event); + }); + if (type === 'videoElementCreated') { + if (!!this.stream && this.lazyLaunchVideoElementCreatedEvent) { + this.ee.emitEvent('videoElementCreated', [new VideoElementEvent_1.VideoElementEvent(this.videos[0].video, this, 'videoElementCreated')]); + this.lazyLaunchVideoElementCreatedEvent = false; + } + } + if (type === 'streamPlaying' || type === 'videoPlaying') { + if (this.videos[0] && this.videos[0].video && + this.videos[0].video.currentTime > 0 && + this.videos[0].video.paused === false && + this.videos[0].video.ended === false && + this.videos[0].video.readyState === 4) { + this.ee.emitEvent('streamPlaying', [new StreamManagerEvent_1.StreamManagerEvent(this)]); + this.ee.emitEvent('videoPlaying', [new VideoElementEvent_1.VideoElementEvent(this.videos[0].video, this, 'videoPlaying')]); + } + } + return this; + }; + /** + * See [[EventDispatcher.once]] + */ + StreamManager.prototype.once = function (type, handler) { + this.ee.once(type, function (event) { + if (event) { + console.info("Event '" + type + "' triggered once", event); + } + else { + console.info("Event '" + type + "' triggered once"); + } + handler(event); + }); + if (type === 'videoElementCreated') { + if (!!this.stream && this.lazyLaunchVideoElementCreatedEvent) { + this.ee.emitEvent('videoElementCreated', [new VideoElementEvent_1.VideoElementEvent(this.videos[0].video, this, 'videoElementCreated')]); + } + } + if (type === 'streamPlaying' || type === 'videoPlaying') { + if (this.videos[0] && this.videos[0].video && + this.videos[0].video.currentTime > 0 && + this.videos[0].video.paused === false && + this.videos[0].video.ended === false && + this.videos[0].video.readyState === 4) { + this.ee.emitEvent('streamPlaying', [new StreamManagerEvent_1.StreamManagerEvent(this)]); + this.ee.emitEvent('videoPlaying', [new VideoElementEvent_1.VideoElementEvent(this.videos[0].video, this, 'videoPlaying')]); + } + } + return this; + }; + /** + * See [[EventDispatcher.off]] + */ + StreamManager.prototype.off = function (type, handler) { + if (!handler) { + this.ee.removeAllListeners(type); + } + else { + this.ee.off(type, handler); + } + return this; + }; + /** + * Makes `video` element parameter display this [[stream]]. This is useful when you are + * [managing the video elements on your own](/docs/how-do-i/manage-videos/#you-take-care-of-the-video-players) + * + * Calling this method with a video already added to other Publisher/Subscriber will cause the video element to be + * disassociated from that previous Publisher/Subscriber and to be associated to this one. + * + * @returns 1 if the video wasn't associated to any other Publisher/Subscriber and has been successfully added to this one. + * 0 if the video was already added to this Publisher/Subscriber. -1 if the video was previously associated to any other + * Publisher/Subscriber and has been successfully disassociated from that one and properly added to this one. + */ + StreamManager.prototype.addVideoElement = function (video) { + this.initializeVideoProperties(video); + // If the video element is already part of this StreamManager do nothing + for (var _i = 0, _a = this.videos; _i < _a.length; _i++) { + var v = _a[_i]; + if (v.video === video) { + return 0; + } + } + var returnNumber = 1; + this.initializeVideoProperties(video); + for (var _b = 0, _c = this.stream.session.streamManagers; _b < _c.length; _b++) { + var streamManager = _c[_b]; + if (streamManager.disassociateVideo(video)) { + returnNumber = -1; + break; + } + } + this.stream.session.streamManagers.forEach(function (streamManager) { + streamManager.disassociateVideo(video); + }); + this.pushNewStreamManagerVideo({ + video: video, + id: video.id + }); + console.info('New video element associated to ', this); + return returnNumber; + }; + /** + * Creates a new video element displaying this [[stream]]. This allows you to have multiple video elements displaying the same media stream. + * + * #### Events dispatched + * + * The Publisher/Subscriber object will dispatch a `videoElementCreated` event once the HTML video element has been added to DOM. See [[VideoElementEvent]] + * + * @param targetElement HTML DOM element (or its `id` attribute) in which the video element of the Publisher/Subscriber will be inserted + * @param insertMode How the video element will be inserted accordingly to `targetElemet` + */ + StreamManager.prototype.createVideoElement = function (targetElement, insertMode) { + var targEl; + if (typeof targetElement === 'string') { + targEl = document.getElementById(targEl); + if (!targEl) { + throw new Error("The provided 'targetElement' couldn't be resolved to any HTML element: " + targetElement); + } + } + else if (targetElement instanceof HTMLElement) { + targEl = targetElement; + } + else { + throw new Error("The provided 'targetElement' couldn't be resolved to any HTML element: " + targetElement); + } + var video = document.createElement('video'); + this.initializeVideoProperties(video); + var insMode = !!insertMode ? insertMode : VideoInsertMode_1.VideoInsertMode.APPEND; + switch (insMode) { + case VideoInsertMode_1.VideoInsertMode.AFTER: + targEl.parentNode.insertBefore(video, targEl.nextSibling); + break; + case VideoInsertMode_1.VideoInsertMode.APPEND: + targEl.appendChild(video); + break; + case VideoInsertMode_1.VideoInsertMode.BEFORE: + targEl.parentNode.insertBefore(video, targEl); + break; + case VideoInsertMode_1.VideoInsertMode.PREPEND: + targEl.insertBefore(video, targEl.childNodes[0]); + break; + case VideoInsertMode_1.VideoInsertMode.REPLACE: + targEl.parentNode.replaceChild(video, targEl); + break; + default: + insMode = VideoInsertMode_1.VideoInsertMode.APPEND; + targEl.appendChild(video); + break; + } + var v = { + targetElement: targEl, + video: video, + insertMode: insMode, + id: video.id + }; + this.pushNewStreamManagerVideo(v); + this.ee.emitEvent('videoElementCreated', [new VideoElementEvent_1.VideoElementEvent(v.video, this, 'videoElementCreated')]); + this.lazyLaunchVideoElementCreatedEvent = !!this.firstVideoElement; + return video; + }; + /** + * @hidden + */ + StreamManager.prototype.initializeVideoProperties = function (video) { + video.srcObject = this.stream.getMediaStream(); + video.autoplay = true; + video.controls = false; + if (!video.id) { + video.id = (this.remote ? 'remote-' : 'local-') + 'video-' + this.stream.streamId; + // DEPRECATED property: assign once the property id if the user provided a valid targetElement + if (!this.id && !!this.targetElement) { + this.id = video.id; + } + } + if (!this.remote && !this.stream.displayMyRemote()) { + video.muted = true; + if (this.stream.outboundStreamOpts.publisherProperties.mirror) { + this.mirrorVideo(video); + } + } + }; + /** + * @hidden + */ + StreamManager.prototype.removeAllVideos = function () { + var _this = this; + for (var i = this.stream.session.streamManagers.length - 1; i >= 0; --i) { + if (this.stream.session.streamManagers[i] === this) { + this.stream.session.streamManagers.splice(i, 1); + } + } + this.videos.slice().reverse().forEach(function (streamManagerVideo, index, videos) { + // Remove oncanplay event listener (only OpenVidu browser one, not the user ones) + streamManagerVideo.video.removeEventListener('canplay', _this.canPlayListener); + if (!!streamManagerVideo.targetElement) { + // Only remove videos created by OpenVidu Browser (those generated by passing a valid targetElement in OpenVidu.initPublisher and Session.subscribe + // or those created by StreamManager.createVideoElement). These are also the videos that triggered a videoElementCreated event + streamManagerVideo.video.parentNode.removeChild(streamManagerVideo.video); + _this.ee.emitEvent('videoElementDestroyed', [new VideoElementEvent_1.VideoElementEvent(streamManagerVideo.video, _this, 'videoElementDestroyed')]); + _this.videos.splice(videos.length - 1 - index, 1); + } + else { + // Remove srcObject in all videos managed by the user + streamManagerVideo.video.srcObject = null; + } + }); + }; + /** + * @hidden + */ + StreamManager.prototype.disassociateVideo = function (video) { + var disassociated = false; + for (var i = 0; i < this.videos.length; i++) { + if (this.videos[i].video === video) { + this.videos.splice(i, 1); + disassociated = true; + console.info('Video element disassociated from ', this); + break; + } + } + return disassociated; + }; + /** + * @hidden + */ + StreamManager.prototype.addPlayEventToFirstVideo = function () { + if ((!!this.videos[0]) && (!!this.videos[0].video) && (this.videos[0].video.oncanplay === null)) { + this.videos[0].video.addEventListener('canplay', this.canPlayListener); + } + }; + /** + * @hidden + */ + StreamManager.prototype.updateMediaStream = function (mediaStream) { + this.videos.forEach(function (streamManagerVideo) { + streamManagerVideo.video.srcObject = mediaStream; + }); + }; + StreamManager.prototype.pushNewStreamManagerVideo = function (streamManagerVideo) { + this.videos.push(streamManagerVideo); + this.addPlayEventToFirstVideo(); + if (this.stream.session.streamManagers.indexOf(this) === -1) { + this.stream.session.streamManagers.push(this); + } + }; + StreamManager.prototype.mirrorVideo = function (video) { + video.style.transform = 'rotateY(180deg)'; + video.style.webkitTransform = 'rotateY(180deg)'; + }; + return StreamManager; +}()); +exports.StreamManager = StreamManager; +//# sourceMappingURL=StreamManager.js.map \ No newline at end of file diff --git a/openvidu-browser/lib/OpenVidu/StreamManager.js.map b/openvidu-browser/lib/OpenVidu/StreamManager.js.map new file mode 100644 index 00000000..785d6984 --- /dev/null +++ b/openvidu-browser/lib/OpenVidu/StreamManager.js.map @@ -0,0 +1 @@ +{"version":3,"file":"StreamManager.js","sourceRoot":"","sources":["../../src/OpenVidu/StreamManager.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/openvidu-browser/lib/OpenVidu/Subscriber.d.ts b/openvidu-browser/lib/OpenVidu/Subscriber.d.ts index 667c7bc5..a64cf3fb 100644 --- a/openvidu-browser/lib/OpenVidu/Subscriber.d.ts +++ b/openvidu-browser/lib/OpenVidu/Subscriber.d.ts @@ -1,29 +1,15 @@ import { Stream } from './Stream'; +import { StreamManager } from './StreamManager'; import { SubscriberProperties } from '../OpenViduInternal/Interfaces/Public/SubscriberProperties'; -import { EventDispatcher } from '../OpenViduInternal/Interfaces/Public/EventDispatcher'; -import { VideoElementEvent } from '../OpenViduInternal/Events/VideoElementEvent'; /** * Packs remote media streams. Participants automatically receive them when others publish their streams. Initialized with [[Session.subscribe]] method */ -export declare class Subscriber implements EventDispatcher { - /** - * HTML DOM element in which the Subscriber's video has been inserted - */ - element: HTMLElement; - /** - * DOM id of the Subscriber's video element - */ - id: string; - /** - * The [[Stream]] to which you are subscribing - */ - stream: Stream; - private ee; +export declare class Subscriber extends StreamManager { private properties; /** * @hidden */ - constructor(stream: Stream, targetElement: string | HTMLElement, properties: SubscriberProperties); + constructor(stream: Stream, targEl: string | HTMLElement, properties: SubscriberProperties); /** * Subscribe or unsubscribe from the audio stream (if available). Calling this method twice in a row passing same value will have no effect * @param value `true` to subscribe to the audio stream, `false` to unsubscribe from it @@ -34,16 +20,4 @@ export declare class Subscriber implements EventDispatcher { * @param value `true` to subscribe to the video stream, `false` to unsubscribe from it */ subscribeToVideo(value: boolean): Subscriber; - /** - * See [[EventDispatcher.on]] - */ - on(type: string, handler: (event: VideoElementEvent) => void): EventDispatcher; - /** - * See [[EventDispatcher.once]] - */ - once(type: string, handler: (event: VideoElementEvent) => void): Subscriber; - /** - * See [[EventDispatcher.off]] - */ - off(type: string, handler?: (event: VideoElementEvent) => void): Subscriber; } diff --git a/openvidu-browser/lib/OpenVidu/Subscriber.js b/openvidu-browser/lib/OpenVidu/Subscriber.js index 0d9e126b..a2bbddc2 100644 --- a/openvidu-browser/lib/OpenVidu/Subscriber.js +++ b/openvidu-browser/lib/OpenVidu/Subscriber.js @@ -15,33 +15,32 @@ * limitations under the License. * */ +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); exports.__esModule = true; -var VideoElementEvent_1 = require("../OpenViduInternal/Events/VideoElementEvent"); -var EventEmitter = require("wolfy87-eventemitter"); +var StreamManager_1 = require("./StreamManager"); /** * Packs remote media streams. Participants automatically receive them when others publish their streams. Initialized with [[Session.subscribe]] method */ -var Subscriber = /** @class */ (function () { +var Subscriber = /** @class */ (function (_super) { + __extends(Subscriber, _super); /** * @hidden */ - function Subscriber(stream, targetElement, properties) { - var _this = this; - this.ee = new EventEmitter(); - this.stream = stream; - this.properties = properties; - if (typeof targetElement === 'string') { - var e = document.getElementById(targetElement); - if (!!e) { - this.element = e; - } - } - else if (targetElement instanceof HTMLElement) { - this.element = targetElement; - } - this.stream.once('video-removed', function (element) { - _this.ee.emitEvent('videoElementDestroyed', [new VideoElementEvent_1.VideoElementEvent(element, _this, 'videoElementDestroyed')]); - }); + function Subscriber(stream, targEl, properties) { + var _this = _super.call(this, stream, targEl) || this; + _this.element = _this.targetElement; + _this.stream = stream; + _this.properties = properties; + return _this; } /** * Subscribe or unsubscribe from the audio stream (if available). Calling this method twice in a row passing same value will have no effect @@ -65,103 +64,7 @@ var Subscriber = /** @class */ (function () { console.info("'Subscriber' has " + (value ? 'subscribed to' : 'unsubscribed from') + ' its video stream'); return this; }; - /** - * See [[EventDispatcher.on]] - */ - Subscriber.prototype.on = function (type, handler) { - var _this = this; - this.ee.on(type, function (event) { - if (event) { - console.info("Event '" + type + "' triggered by 'Subscriber'", event); - } - else { - console.info("Event '" + type + "' triggered by 'Subscriber'"); - } - handler(event); - }); - if (type === 'videoElementCreated') { - if (this.stream.isVideoELementCreated) { - this.ee.emitEvent('videoElementCreated', [new VideoElementEvent_1.VideoElementEvent(this.stream.getVideoElement(), this, 'videoElementCreated')]); - } - else { - this.stream.once('video-element-created-by-stream', function (element) { - _this.id = element.id; - _this.ee.emitEvent('videoElementCreated', [new VideoElementEvent_1.VideoElementEvent(element, _this, 'videoElementCreated')]); - }); - } - } - if (type === 'videoPlaying') { - var video = this.stream.getVideoElement(); - if (!this.stream.displayMyRemote() && video && - video.currentTime > 0 && - video.paused === false && - video.ended === false && - video.readyState === 4) { - this.ee.emitEvent('videoPlaying', [new VideoElementEvent_1.VideoElementEvent(this.stream.getVideoElement(), this, 'videoPlaying')]); - } - else { - this.stream.once('video-is-playing', function (element) { - _this.ee.emitEvent('videoPlaying', [new VideoElementEvent_1.VideoElementEvent(element.element, _this, 'videoPlaying')]); - }); - } - } - return this; - }; - /** - * See [[EventDispatcher.once]] - */ - Subscriber.prototype.once = function (type, handler) { - var _this = this; - this.ee.once(type, function (event) { - if (event) { - console.info("Event '" + type + "' triggered once by 'Subscriber'", event); - } - else { - console.info("Event '" + type + "' triggered once by 'Subscriber'"); - } - handler(event); - }); - if (type === 'videoElementCreated') { - if (this.stream.isVideoELementCreated) { - this.ee.emitEvent('videoElementCreated', [new VideoElementEvent_1.VideoElementEvent(this.stream.getVideoElement(), this, 'videoElementCreated')]); - } - else { - this.stream.once('video-element-created-by-stream', function (element) { - _this.id = element.id; - _this.ee.emitEvent('videoElementCreated', [new VideoElementEvent_1.VideoElementEvent(element, _this, 'videoElementCreated')]); - }); - } - } - if (type === 'videoPlaying') { - var video = this.stream.getVideoElement(); - if (!this.stream.displayMyRemote() && video && - video.currentTime > 0 && - video.paused === false && - video.ended === false && - video.readyState === 4) { - this.ee.emitEvent('videoPlaying', [new VideoElementEvent_1.VideoElementEvent(this.stream.getVideoElement(), this, 'videoPlaying')]); - } - else { - this.stream.once('video-is-playing', function (element) { - _this.ee.emitEvent('videoPlaying', [new VideoElementEvent_1.VideoElementEvent(element.element, _this, 'videoPlaying')]); - }); - } - } - return this; - }; - /** - * See [[EventDispatcher.off]] - */ - Subscriber.prototype.off = function (type, handler) { - if (!handler) { - this.ee.removeAllListeners(type); - } - else { - this.ee.off(type, handler); - } - return this; - }; return Subscriber; -}()); +}(StreamManager_1.StreamManager)); exports.Subscriber = Subscriber; //# sourceMappingURL=Subscriber.js.map \ No newline at end of file diff --git a/openvidu-browser/lib/OpenVidu/Subscriber.js.map b/openvidu-browser/lib/OpenVidu/Subscriber.js.map index 9b14acbd..94c04a96 100644 --- a/openvidu-browser/lib/OpenVidu/Subscriber.js.map +++ b/openvidu-browser/lib/OpenVidu/Subscriber.js.map @@ -1 +1 @@ -{"version":3,"file":"Subscriber.js","sourceRoot":"","sources":["../../src/OpenVidu/Subscriber.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;AAKH,kFAAiF;AACjF,mDAAsD;AAGtD;;GAEG;AACH;IAqBI;;OAEG;IACH,oBAAY,MAAc,EAAE,aAAmC,EAAE,UAAgC;QAAjG,iBAgBC;QAvBO,OAAE,GAAG,IAAI,YAAY,EAAE,CAAC;QAQ5B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAE7B,IAAI,OAAO,aAAa,KAAK,QAAQ,EAAE;YACnC,IAAM,CAAC,GAAG,QAAQ,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;YACjD,IAAI,CAAC,CAAC,CAAC,EAAE;gBACL,IAAI,CAAC,OAAO,GAAG,CAAC,CAAC;aACpB;SACJ;aAAM,IAAI,aAAa,YAAY,WAAW,EAAE;YAC7C,IAAI,CAAC,OAAO,GAAG,aAAa,CAAC;SAChC;QAED,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,UAAC,OAAyB;YACxD,KAAI,CAAC,EAAE,CAAC,SAAS,CAAC,uBAAuB,EAAE,CAAC,IAAI,qCAAiB,CAAC,OAAO,EAAE,KAAI,EAAE,uBAAuB,CAAC,CAAC,CAAC,CAAC;QAChH,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;;OAGG;IACH,qCAAgB,GAAhB,UAAiB,KAAc;QAC3B,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC,UAAC,KAAK;YACxD,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;QAC1B,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,mBAAmB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,mBAAmB,CAAC,GAAG,mBAAmB,CAAC,CAAC;QAC1G,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;OAGG;IACH,qCAAgB,GAAhB,UAAiB,KAAc;QAC3B,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC,UAAC,KAAK;YACxD,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;QAC1B,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,mBAAmB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,mBAAmB,CAAC,GAAG,mBAAmB,CAAC,CAAC;QAC1G,OAAO,IAAI,CAAC;IAChB,CAAC;IAGD;;OAEG;IACH,uBAAE,GAAF,UAAG,IAAY,EAAE,OAA2C;QAA5D,iBAoCC;QAnCG,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,EAAE,UAAA,KAAK;YAClB,IAAI,KAAK,EAAE;gBACP,OAAO,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,6BAA6B,EAAE,KAAK,CAAC,CAAC;aACzE;iBAAM;gBACH,OAAO,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,6BAA6B,CAAC,CAAC;aAClE;YACD,OAAO,CAAC,KAAK,CAAC,CAAC;QACnB,CAAC,CAAC,CAAC;QAEH,IAAI,IAAI,KAAK,qBAAqB,EAAE;YAChC,IAAI,IAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE;gBACnC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,qBAAqB,EAAE,CAAC,IAAI,qCAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC;aACjI;iBAAM;gBACH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iCAAiC,EAAE,UAAA,OAAO;oBACvD,KAAI,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;oBACrB,KAAI,CAAC,EAAE,CAAC,SAAS,CAAC,qBAAqB,EAAE,CAAC,IAAI,qCAAiB,CAAC,OAAO,EAAE,KAAI,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC;gBAC5G,CAAC,CAAC,CAAC;aACN;SACJ;QACD,IAAI,IAAI,KAAK,cAAc,EAAE;YACzB,IAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;YAC5C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,IAAI,KAAK;gBACvC,KAAK,CAAC,WAAW,GAAG,CAAC;gBACrB,KAAK,CAAC,MAAM,KAAK,KAAK;gBACtB,KAAK,CAAC,KAAK,KAAK,KAAK;gBACrB,KAAK,CAAC,UAAU,KAAK,CAAC,EAAE;gBACxB,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC,IAAI,qCAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;aACnH;iBAAM;gBACH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,UAAC,OAAO;oBACzC,KAAI,CAAC,EAAE,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC,IAAI,qCAAiB,CAAC,OAAO,CAAC,OAAO,EAAE,KAAI,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;gBACtG,CAAC,CAAC,CAAC;aACN;SACJ;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAGD;;OAEG;IACH,yBAAI,GAAJ,UAAK,IAAY,EAAE,OAA2C;QAA9D,iBAoCC;QAnCG,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,UAAA,KAAK;YACpB,IAAI,KAAK,EAAE;gBACP,OAAO,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,kCAAkC,EAAE,KAAK,CAAC,CAAC;aAC9E;iBAAM;gBACH,OAAO,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,kCAAkC,CAAC,CAAC;aACvE;YACD,OAAO,CAAC,KAAK,CAAC,CAAC;QACnB,CAAC,CAAC,CAAC;QAEH,IAAI,IAAI,KAAK,qBAAqB,EAAE;YAChC,IAAI,IAAI,CAAC,MAAM,CAAC,qBAAqB,EAAE;gBACnC,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,qBAAqB,EAAE,CAAC,IAAI,qCAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC;aACjI;iBAAM;gBACH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iCAAiC,EAAE,UAAA,OAAO;oBACvD,KAAI,CAAC,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC;oBACrB,KAAI,CAAC,EAAE,CAAC,SAAS,CAAC,qBAAqB,EAAE,CAAC,IAAI,qCAAiB,CAAC,OAAO,EAAE,KAAI,EAAE,qBAAqB,CAAC,CAAC,CAAC,CAAC;gBAC5G,CAAC,CAAC,CAAC;aACN;SACJ;QACD,IAAI,IAAI,KAAK,cAAc,EAAE;YACzB,IAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;YAC5C,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,IAAI,KAAK;gBACvC,KAAK,CAAC,WAAW,GAAG,CAAC;gBACrB,KAAK,CAAC,MAAM,KAAK,KAAK;gBACtB,KAAK,CAAC,KAAK,KAAK,KAAK;gBACrB,KAAK,CAAC,UAAU,KAAK,CAAC,EAAE;gBACxB,IAAI,CAAC,EAAE,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC,IAAI,qCAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;aACnH;iBAAM;gBACH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,EAAE,UAAC,OAAO;oBACzC,KAAI,CAAC,EAAE,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC,IAAI,qCAAiB,CAAC,OAAO,CAAC,OAAO,EAAE,KAAI,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC;gBACtG,CAAC,CAAC,CAAC;aACN;SACJ;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAGD;;OAEG;IACH,wBAAG,GAAH,UAAI,IAAY,EAAE,OAA4C;QAC1D,IAAI,CAAC,OAAO,EAAE;YACV,IAAI,CAAC,EAAE,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;SACpC;aAAM;YACH,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;SAC9B;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAEL,iBAAC;AAAD,CAAC,AAnKD,IAmKC;AAnKY,gCAAU"} \ No newline at end of file +{"version":3,"file":"Subscriber.js","sourceRoot":"","sources":["../../src/OpenVidu/Subscriber.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;;;;;;;;;;;AAGH,iDAAgD;AAIhD;;GAEG;AACH;IAAgC,8BAAa;IAIzC;;OAEG;IACH,oBAAY,MAAc,EAAE,MAA4B,EAAE,UAAgC;QAA1F,YACI,kBAAM,MAAM,EAAE,MAAM,CAAC,SAIxB;QAHG,KAAI,CAAC,OAAO,GAAG,KAAI,CAAC,aAAa,CAAC;QAClC,KAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,KAAI,CAAC,UAAU,GAAG,UAAU,CAAC;;IACjC,CAAC;IAED;;;OAGG;IACH,qCAAgB,GAAhB,UAAiB,KAAc;QAC3B,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC,UAAC,KAAK;YACxD,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;QAC1B,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,mBAAmB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,mBAAmB,CAAC,GAAG,mBAAmB,CAAC,CAAC;QAC1G,OAAO,IAAI,CAAC;IAChB,CAAC;IAED;;;OAGG;IACH,qCAAgB,GAAhB,UAAiB,KAAc;QAC3B,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,cAAc,EAAE,CAAC,OAAO,CAAC,UAAC,KAAK;YACxD,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;QAC1B,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,mBAAmB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,mBAAmB,CAAC,GAAG,mBAAmB,CAAC,CAAC;QAC1G,OAAO,IAAI,CAAC;IAChB,CAAC;IAEL,iBAAC;AAAD,CAAC,AAtCD,CAAgC,6BAAa,GAsC5C;AAtCY,gCAAU"} \ No newline at end of file diff --git a/openvidu-browser/lib/OpenViduInternal/Enums/OpenViduError.d.ts b/openvidu-browser/lib/OpenViduInternal/Enums/OpenViduError.d.ts index c55bfc21..40f34234 100644 --- a/openvidu-browser/lib/OpenViduInternal/Enums/OpenViduError.d.ts +++ b/openvidu-browser/lib/OpenViduInternal/Enums/OpenViduError.d.ts @@ -2,19 +2,68 @@ * Defines property [[OpenViduError.name]] */ export declare enum OpenViduErrorName { + /** + * Browser is not supported by OpenVidu. + * Returned uppon unsuccessful [[Session.connect]] + */ BROWSER_NOT_SUPPORTED = "BROWSER_NOT_SUPPORTED", - CAMERA_ACCESS_DENIED = "CAMERA_ACCESS_DENIED", - MICROPHONE_ACCESS_DENIED = "MICROPHONE_ACCESS_DENIED", + /** + * The user hasn't granted permissions to the required input device when the browser asked for them. + * Returned uppon unsuccessful [[OpenVidu.initPublisher]] or [[OpenVidu.getUserMedia]] + */ + DEVICE_ACCESS_DENIED = "DEVICE_ACCESS_DENIED", + /** + * The user hasn't granted permissions to capture some desktop screen when the browser asked for them. + * Returned uppon unsuccessful [[OpenVidu.initPublisher]] or [[OpenVidu.getUserMedia]] + */ SCREEN_CAPTURE_DENIED = "SCREEN_CAPTURE_DENIED", + /** + * Browser does not support screen sharing. + * Returned uppon unsuccessful [[OpenVidu.initPublisher]] + */ SCREEN_SHARING_NOT_SUPPORTED = "SCREEN_SHARING_NOT_SUPPORTED", + /** + * Only for Chrome, there's no screen sharing extension installed + * Returned uppon unsuccessful [[OpenVidu.initPublisher]] + */ SCREEN_EXTENSION_NOT_INSTALLED = "SCREEN_EXTENSION_NOT_INSTALLED", + /** + * Only for Chrome, the screen sharing extension is installed but is disabled + * Returned uppon unsuccessful [[OpenVidu.initPublisher]] + */ SCREEN_EXTENSION_DISABLED = "SCREEN_EXTENSION_DISABLED", + /** + * No video input device found with the provided deviceId (property [[PublisherProperties.videoSource]]) + * Returned uppon unsuccessful [[OpenVidu.initPublisher]] + */ INPUT_VIDEO_DEVICE_NOT_FOUND = "INPUT_VIDEO_DEVICE_NOT_FOUND", + /** + * No audio input device found with the provided deviceId (property [[PublisherProperties.audioSource]]) + * Returned uppon unsuccessful [[OpenVidu.initPublisher]] + */ INPUT_AUDIO_DEVICE_NOT_FOUND = "INPUT_AUDIO_DEVICE_NOT_FOUND", + /** + * Method [[OpenVidu.initPublisher]] has been called with properties `videoSource` and `audioSource` of + * [[PublisherProperties]] parameter both set to *false* or *null* + */ NO_INPUT_SOURCE_SET = "NO_INPUT_SOURCE_SET", + /** + * Some media property of [[PublisherProperties]] such as `frameRate` or `resolution` is not supported + * by the input devices (whenever it is possible they are automatically adjusted to the most similar value). + * Returned uppon unsuccessful [[OpenVidu.initPublisher]] + */ PUBLISHER_PROPERTIES_ERROR = "PUBLISHER_PROPERTIES_ERROR", + /** + * _Not in use yet_ + */ OPENVIDU_PERMISSION_DENIED = "OPENVIDU_PERMISSION_DENIED", + /** + * _Not in use yet_ + */ OPENVIDU_NOT_CONNECTED = "OPENVIDU_NOT_CONNECTED", + /** + * _Not in use yet_ + */ GENERIC_ERROR = "GENERIC_ERROR", } /** diff --git a/openvidu-browser/lib/OpenViduInternal/Enums/OpenViduError.js b/openvidu-browser/lib/OpenViduInternal/Enums/OpenViduError.js index 3e60f3bb..129fa3da 100644 --- a/openvidu-browser/lib/OpenViduInternal/Enums/OpenViduError.js +++ b/openvidu-browser/lib/OpenViduInternal/Enums/OpenViduError.js @@ -21,19 +21,68 @@ exports.__esModule = true; */ var OpenViduErrorName; (function (OpenViduErrorName) { + /** + * Browser is not supported by OpenVidu. + * Returned uppon unsuccessful [[Session.connect]] + */ OpenViduErrorName["BROWSER_NOT_SUPPORTED"] = "BROWSER_NOT_SUPPORTED"; - OpenViduErrorName["CAMERA_ACCESS_DENIED"] = "CAMERA_ACCESS_DENIED"; - OpenViduErrorName["MICROPHONE_ACCESS_DENIED"] = "MICROPHONE_ACCESS_DENIED"; + /** + * The user hasn't granted permissions to the required input device when the browser asked for them. + * Returned uppon unsuccessful [[OpenVidu.initPublisher]] or [[OpenVidu.getUserMedia]] + */ + OpenViduErrorName["DEVICE_ACCESS_DENIED"] = "DEVICE_ACCESS_DENIED"; + /** + * The user hasn't granted permissions to capture some desktop screen when the browser asked for them. + * Returned uppon unsuccessful [[OpenVidu.initPublisher]] or [[OpenVidu.getUserMedia]] + */ OpenViduErrorName["SCREEN_CAPTURE_DENIED"] = "SCREEN_CAPTURE_DENIED"; + /** + * Browser does not support screen sharing. + * Returned uppon unsuccessful [[OpenVidu.initPublisher]] + */ OpenViduErrorName["SCREEN_SHARING_NOT_SUPPORTED"] = "SCREEN_SHARING_NOT_SUPPORTED"; + /** + * Only for Chrome, there's no screen sharing extension installed + * Returned uppon unsuccessful [[OpenVidu.initPublisher]] + */ OpenViduErrorName["SCREEN_EXTENSION_NOT_INSTALLED"] = "SCREEN_EXTENSION_NOT_INSTALLED"; + /** + * Only for Chrome, the screen sharing extension is installed but is disabled + * Returned uppon unsuccessful [[OpenVidu.initPublisher]] + */ OpenViduErrorName["SCREEN_EXTENSION_DISABLED"] = "SCREEN_EXTENSION_DISABLED"; + /** + * No video input device found with the provided deviceId (property [[PublisherProperties.videoSource]]) + * Returned uppon unsuccessful [[OpenVidu.initPublisher]] + */ OpenViduErrorName["INPUT_VIDEO_DEVICE_NOT_FOUND"] = "INPUT_VIDEO_DEVICE_NOT_FOUND"; + /** + * No audio input device found with the provided deviceId (property [[PublisherProperties.audioSource]]) + * Returned uppon unsuccessful [[OpenVidu.initPublisher]] + */ OpenViduErrorName["INPUT_AUDIO_DEVICE_NOT_FOUND"] = "INPUT_AUDIO_DEVICE_NOT_FOUND"; + /** + * Method [[OpenVidu.initPublisher]] has been called with properties `videoSource` and `audioSource` of + * [[PublisherProperties]] parameter both set to *false* or *null* + */ OpenViduErrorName["NO_INPUT_SOURCE_SET"] = "NO_INPUT_SOURCE_SET"; + /** + * Some media property of [[PublisherProperties]] such as `frameRate` or `resolution` is not supported + * by the input devices (whenever it is possible they are automatically adjusted to the most similar value). + * Returned uppon unsuccessful [[OpenVidu.initPublisher]] + */ OpenViduErrorName["PUBLISHER_PROPERTIES_ERROR"] = "PUBLISHER_PROPERTIES_ERROR"; + /** + * _Not in use yet_ + */ OpenViduErrorName["OPENVIDU_PERMISSION_DENIED"] = "OPENVIDU_PERMISSION_DENIED"; + /** + * _Not in use yet_ + */ OpenViduErrorName["OPENVIDU_NOT_CONNECTED"] = "OPENVIDU_NOT_CONNECTED"; + /** + * _Not in use yet_ + */ OpenViduErrorName["GENERIC_ERROR"] = "GENERIC_ERROR"; })(OpenViduErrorName = exports.OpenViduErrorName || (exports.OpenViduErrorName = {})); /** diff --git a/openvidu-browser/lib/OpenViduInternal/Enums/OpenViduError.js.map b/openvidu-browser/lib/OpenViduInternal/Enums/OpenViduError.js.map index 83f0b542..148801a5 100644 --- a/openvidu-browser/lib/OpenViduInternal/Enums/OpenViduError.js.map +++ b/openvidu-browser/lib/OpenViduInternal/Enums/OpenViduError.js.map @@ -1 +1 @@ -{"version":3,"file":"OpenViduError.js","sourceRoot":"","sources":["../../../src/OpenViduInternal/Enums/OpenViduError.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;AAEH;;GAEG;AACH,IAAY,iBAeX;AAfD,WAAY,iBAAiB;IACzB,oEAA+C,CAAA;IAC/C,kEAA6C,CAAA;IAC7C,0EAAqD,CAAA;IACrD,oEAA+C,CAAA;IAC/C,kFAA6D,CAAA;IAC7D,sFAAiE,CAAA;IACjE,4EAAuD,CAAA;IACvD,kFAA6D,CAAA;IAC7D,kFAA6D,CAAA;IAC7D,gEAA2C,CAAA;IAC3C,8EAAyD,CAAA;IACzD,8EAAyD,CAAA;IACzD,sEAAiD,CAAA;IACjD,oDAA+B,CAAA;AACnC,CAAC,EAfW,iBAAiB,GAAjB,yBAAiB,KAAjB,yBAAiB,QAe5B;AAED;;GAEG;AACH;IAKI;;OAEG;IACH,uBAAY,IAAuB,EAAE,OAAe;QAChD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IAC3B,CAAC;IAEL,oBAAC;AAAD,CAAC,AAbD,IAaC;AAbY,sCAAa"} \ No newline at end of file +{"version":3,"file":"OpenViduError.js","sourceRoot":"","sources":["../../../src/OpenViduInternal/Enums/OpenViduError.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;AAEH;;GAEG;AACH,IAAY,iBA6EX;AA7ED,WAAY,iBAAiB;IAEzB;;;OAGG;IACH,oEAA+C,CAAA;IAE/C;;;OAGG;IACH,kEAA6C,CAAA;IAE7C;;;OAGG;IACH,oEAA+C,CAAA;IAE/C;;;OAGG;IACH,kFAA6D,CAAA;IAE7D;;;OAGG;IACH,sFAAiE,CAAA;IAEjE;;;OAGG;IACH,4EAAuD,CAAA;IAEvD;;;OAGG;IACH,kFAA6D,CAAA;IAE7D;;;OAGG;IACH,kFAA6D,CAAA;IAE7D;;;OAGG;IACH,gEAA2C,CAAA;IAE3C;;;;OAIG;IACH,8EAAyD,CAAA;IAEzD;;OAEG;IACH,8EAAyD,CAAA;IAEzD;;OAEG;IACH,sEAAiD,CAAA;IAEjD;;OAEG;IACH,oDAA+B,CAAA;AACnC,CAAC,EA7EW,iBAAiB,GAAjB,yBAAiB,KAAjB,yBAAiB,QA6E5B;AAED;;GAEG;AACH;IAKI;;OAEG;IACH,uBAAY,IAAuB,EAAE,OAAe;QAChD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IAC3B,CAAC;IAEL,oBAAC;AAAD,CAAC,AAbD,IAaC;AAbY,sCAAa"} \ No newline at end of file diff --git a/openvidu-browser/lib/OpenViduInternal/Events/Event.d.ts b/openvidu-browser/lib/OpenViduInternal/Events/Event.d.ts index f2af9532..81d08c88 100644 --- a/openvidu-browser/lib/OpenViduInternal/Events/Event.d.ts +++ b/openvidu-browser/lib/OpenViduInternal/Events/Event.d.ts @@ -1,6 +1,5 @@ -import { Publisher } from '../../OpenVidu/Publisher'; +import { StreamManager } from '../../OpenVidu/StreamManager'; import { Session } from '../../OpenVidu/Session'; -import { Subscriber } from '../../OpenVidu/Subscriber'; export declare abstract class Event { /** * Whether the event has a default behaviour that may be prevented by calling [[Event.preventDefault]] @@ -9,7 +8,7 @@ export declare abstract class Event { /** * The object that dispatched the event */ - target: Session | Subscriber | Publisher; + target: Session | StreamManager; /** * The type of event. This is the same string you pass as first parameter when calling method `on()` of any object implementing [[EventDispatcher]] interface */ @@ -18,17 +17,24 @@ export declare abstract class Event { /** * @hidden */ - constructor(cancelable: any, target: any, type: any); + constructor(cancelable: boolean, target: Session | StreamManager, type: string); /** * Whether the default beahivour of the event has been prevented or not. Call [[Event.preventDefault]] to prevent it */ isDefaultPrevented(): boolean; /** * Prevents the default behaviour of the event. The following events have a default behaviour: - * - `sessionDisconnected`: automatically unsubscribes the leaving participant from every Subscriber object of the session (this includes closing the WebRTCPeer connection and disposing all MediaStreamTracks) - * and also deletes the HTML video element associated to it. - * - `streamDestroyed`: if dispatched by a [[Publisher]] (_you_ have unpublished), automatically stops all media tracks and deletes the HTML video element associated to the stream. If dispatched by [[Session]], - * (_other user_ has unpublished), automatically unsubscribes the proper Subscriber object from the session (this includes closing the WebRTCPeer connection and disposing all MediaStreamTracks) and deletes the HTML video element associated to it. + * + * - `sessionDisconnected`: dispatched by [[Session]] object, automatically unsubscribes the leaving participant from every Subscriber object of the session (this includes closing the WebRTCPeer connection and disposing all MediaStreamTracks) + * and also deletes any HTML video element associated to each Subscriber (only those created by OpenVidu Browser, either by passing a valid parameter as `targetElement` in method [[Session.subscribe]] or + * by calling [[Subscriber.createVideoElement]]). For every video removed, each Subscriber object will also dispatch a `videoElementDestroyed` event. + * + * - `streamDestroyed`: + * - If dispatched by a [[Publisher]] (*you* have unpublished): automatically stops all media tracks and deletes any HTML video element associated to it (only those created by OpenVidu Browser, either by passing a valid parameter as `targetElement` + * in method [[OpenVidu.initPublisher]] or by calling [[Publisher.createVideoElement]]). For every video removed, the Publisher object will also dispatch a `videoElementDestroyed` event. + * - If dispatched by [[Session]] (*other user* has unpublished): automatically unsubscribes the proper Subscriber object from the session (this includes closing the WebRTCPeer connection and disposing all MediaStreamTracks) + * and also deletes any HTML video element associated to that Subscriber (only those created by OpenVidu Browser, either by passing a valid parameter as `targetElement` in method [[Session.subscribe]] or + * by calling [[Subscriber.createVideoElement]]). For every video removed, the Subscriber object will also dispatch a `videoElementDestroyed` event. */ preventDefault(): void; protected abstract callDefaultBehaviour(): any; diff --git a/openvidu-browser/lib/OpenViduInternal/Events/Event.js b/openvidu-browser/lib/OpenViduInternal/Events/Event.js index bf07cb37..ee7274ba 100644 --- a/openvidu-browser/lib/OpenViduInternal/Events/Event.js +++ b/openvidu-browser/lib/OpenViduInternal/Events/Event.js @@ -34,10 +34,17 @@ var Event = /** @class */ (function () { }; /** * Prevents the default behaviour of the event. The following events have a default behaviour: - * - `sessionDisconnected`: automatically unsubscribes the leaving participant from every Subscriber object of the session (this includes closing the WebRTCPeer connection and disposing all MediaStreamTracks) - * and also deletes the HTML video element associated to it. - * - `streamDestroyed`: if dispatched by a [[Publisher]] (_you_ have unpublished), automatically stops all media tracks and deletes the HTML video element associated to the stream. If dispatched by [[Session]], - * (_other user_ has unpublished), automatically unsubscribes the proper Subscriber object from the session (this includes closing the WebRTCPeer connection and disposing all MediaStreamTracks) and deletes the HTML video element associated to it. + * + * - `sessionDisconnected`: dispatched by [[Session]] object, automatically unsubscribes the leaving participant from every Subscriber object of the session (this includes closing the WebRTCPeer connection and disposing all MediaStreamTracks) + * and also deletes any HTML video element associated to each Subscriber (only those created by OpenVidu Browser, either by passing a valid parameter as `targetElement` in method [[Session.subscribe]] or + * by calling [[Subscriber.createVideoElement]]). For every video removed, each Subscriber object will also dispatch a `videoElementDestroyed` event. + * + * - `streamDestroyed`: + * - If dispatched by a [[Publisher]] (*you* have unpublished): automatically stops all media tracks and deletes any HTML video element associated to it (only those created by OpenVidu Browser, either by passing a valid parameter as `targetElement` + * in method [[OpenVidu.initPublisher]] or by calling [[Publisher.createVideoElement]]). For every video removed, the Publisher object will also dispatch a `videoElementDestroyed` event. + * - If dispatched by [[Session]] (*other user* has unpublished): automatically unsubscribes the proper Subscriber object from the session (this includes closing the WebRTCPeer connection and disposing all MediaStreamTracks) + * and also deletes any HTML video element associated to that Subscriber (only those created by OpenVidu Browser, either by passing a valid parameter as `targetElement` in method [[Session.subscribe]] or + * by calling [[Subscriber.createVideoElement]]). For every video removed, the Subscriber object will also dispatch a `videoElementDestroyed` event. */ Event.prototype.preventDefault = function () { // tslint:disable-next-line:no-empty diff --git a/openvidu-browser/lib/OpenViduInternal/Events/Event.js.map b/openvidu-browser/lib/OpenViduInternal/Events/Event.js.map index 2c9f1d92..077df1fd 100644 --- a/openvidu-browser/lib/OpenViduInternal/Events/Event.js.map +++ b/openvidu-browser/lib/OpenViduInternal/Events/Event.js.map @@ -1 +1 @@ -{"version":3,"file":"Event.js","sourceRoot":"","sources":["../../../src/OpenViduInternal/Events/Event.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;AAMH;IAmBI;;OAEG;IACH,eAAY,UAAU,EAAE,MAAM,EAAE,IAAI;QAL5B,qBAAgB,GAAG,KAAK,CAAC;QAM7B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,kCAAkB,GAAlB;QACI,OAAO,IAAI,CAAC,gBAAgB,CAAC;IACjC,CAAC;IAED;;;;;;OAMG;IACH,8BAAc,GAAd;QACI,oCAAoC;QACpC,IAAI,CAAC,oBAAoB,GAAG,cAAQ,CAAC,CAAC;QACtC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;IACjC,CAAC;IAIL,YAAC;AAAD,CAAC,AAlDD,IAkDC;AAlDqB,sBAAK"} \ No newline at end of file +{"version":3,"file":"Event.js","sourceRoot":"","sources":["../../../src/OpenViduInternal/Events/Event.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;AAKH;IAmBI;;OAEG;IACH,eAAY,UAAmB,EAAE,MAA+B,EAAE,IAAY;QALtE,qBAAgB,GAAG,KAAK,CAAC;QAM7B,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,kCAAkB,GAAlB;QACI,OAAO,IAAI,CAAC,gBAAgB,CAAC;IACjC,CAAC;IAED;;;;;;;;;;;;;OAaG;IACH,8BAAc,GAAd;QACI,oCAAoC;QACpC,IAAI,CAAC,oBAAoB,GAAG,cAAQ,CAAC,CAAC;QACtC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;IACjC,CAAC;IAIL,YAAC;AAAD,CAAC,AAzDD,IAyDC;AAzDqB,sBAAK"} \ No newline at end of file diff --git a/openvidu-browser/lib/OpenViduInternal/Events/MediaStreamSetEvent.d.ts b/openvidu-browser/lib/OpenViduInternal/Events/MediaStreamSetEvent.d.ts new file mode 100644 index 00000000..886a0d64 --- /dev/null +++ b/openvidu-browser/lib/OpenViduInternal/Events/MediaStreamSetEvent.d.ts @@ -0,0 +1,22 @@ +import { Event } from './Event'; +import { Stream } from '../../OpenVidu/Stream'; +/** + * Defines the following events: + * - `mediaStreamSet`: dispatched by [[Stream]] + * + * This is useful if you decide to manage the DOM video elements on your own instead of letting OpenVidu take care of them (passing _null_ or _undefined_ as `targetElement` on [[OpenVidu.initPublisher]] or [[Session.subscribe]]) + */ +export declare class MediaStreamSetEvent extends Event { + /** + * The [MediaStream](https://developer.mozilla.org/en-US/docs/Web/API/MediaStream) object recently initialized in the [[Stream]] object. You can directly set `HTMLMediaElement.srcObject = MediaStreamEvent.mediaStream;` + */ + mediaStream: MediaStream; + /** + * @hidden + */ + constructor(mediaStream: MediaStream, target: Stream); + /** + * @hidden + */ + callDefaultBehaviour(): void; +} diff --git a/openvidu-browser/lib/OpenViduInternal/Events/MediaStreamSetEvent.js b/openvidu-browser/lib/OpenViduInternal/Events/MediaStreamSetEvent.js new file mode 100644 index 00000000..4f104448 --- /dev/null +++ b/openvidu-browser/lib/OpenViduInternal/Events/MediaStreamSetEvent.js @@ -0,0 +1,54 @@ +"use strict"; +/* + * (C) Copyright 2017-2018 OpenVidu (https://openvidu.io/) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +exports.__esModule = true; +var Event_1 = require("./Event"); +/** + * Defines the following events: + * - `mediaStreamSet`: dispatched by [[Stream]] + * + * This is useful if you decide to manage the DOM video elements on your own instead of letting OpenVidu take care of them (passing _null_ or _undefined_ as `targetElement` on [[OpenVidu.initPublisher]] or [[Session.subscribe]]) + */ +var MediaStreamSetEvent = /** @class */ (function (_super) { + __extends(MediaStreamSetEvent, _super); + /** + * @hidden + */ + function MediaStreamSetEvent(mediaStream, target) { + var _this = _super.call(this, false, target, 'mediaStreamSet') || this; + _this.mediaStream = mediaStream; + return _this; + } + /** + * @hidden + */ + // tslint:disable-next-line:no-empty + MediaStreamSetEvent.prototype.callDefaultBehaviour = function () { }; + return MediaStreamSetEvent; +}(Event_1.Event)); +exports.MediaStreamSetEvent = MediaStreamSetEvent; +//# sourceMappingURL=MediaStreamSetEvent.js.map \ No newline at end of file diff --git a/openvidu-browser/lib/OpenViduInternal/Events/MediaStreamSetEvent.js.map b/openvidu-browser/lib/OpenViduInternal/Events/MediaStreamSetEvent.js.map new file mode 100644 index 00000000..b1236e4f --- /dev/null +++ b/openvidu-browser/lib/OpenViduInternal/Events/MediaStreamSetEvent.js.map @@ -0,0 +1 @@ +{"version":3,"file":"MediaStreamSetEvent.js","sourceRoot":"","sources":["../../../src/OpenViduInternal/Events/MediaStreamSetEvent.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;;;;;;;;;;;AAEH,iCAAgC;AAIhC;;;;;GAKG;AACH;IAAyC,uCAAK;IAO1C;;OAEG;IACH,6BAAY,WAAwB,EAAE,MAAc;QAApD,YACI,kBAAM,KAAK,EAAE,MAAM,EAAE,gBAAgB,CAAC,SAEzC;QADG,KAAI,CAAC,WAAW,GAAG,WAAW,CAAC;;IACnC,CAAC;IAED;;OAEG;IACH,oCAAoC;IACpC,kDAAoB,GAApB,cAAyB,CAAC;IAE9B,0BAAC;AAAD,CAAC,AArBD,CAAyC,aAAK,GAqB7C;AArBY,kDAAmB"} \ No newline at end of file diff --git a/openvidu-browser/lib/OpenViduInternal/Events/SessionDisconnectedEvent.js b/openvidu-browser/lib/OpenViduInternal/Events/SessionDisconnectedEvent.js index 54a21635..44e076c3 100644 --- a/openvidu-browser/lib/OpenViduInternal/Events/SessionDisconnectedEvent.js +++ b/openvidu-browser/lib/OpenViduInternal/Events/SessionDisconnectedEvent.js @@ -51,7 +51,9 @@ var SessionDisconnectedEvent = /** @class */ (function (_super) { if (!!session.remoteConnections[connectionId].stream) { session.remoteConnections[connectionId].stream.disposeWebRtcPeer(); session.remoteConnections[connectionId].stream.disposeMediaStream(); - session.remoteConnections[connectionId].stream.removeVideo(); + if (session.remoteConnections[connectionId].stream.streamManager) { + session.remoteConnections[connectionId].stream.streamManager.removeAllVideos(); + } delete session.remoteStreamsCreated[session.remoteConnections[connectionId].stream.streamId]; session.remoteConnections[connectionId].dispose(); } diff --git a/openvidu-browser/lib/OpenViduInternal/Events/SessionDisconnectedEvent.js.map b/openvidu-browser/lib/OpenViduInternal/Events/SessionDisconnectedEvent.js.map index 266e5735..0fc6b1b6 100644 --- a/openvidu-browser/lib/OpenViduInternal/Events/SessionDisconnectedEvent.js.map +++ b/openvidu-browser/lib/OpenViduInternal/Events/SessionDisconnectedEvent.js.map @@ -1 +1 @@ -{"version":3,"file":"SessionDisconnectedEvent.js","sourceRoot":"","sources":["../../../src/OpenViduInternal/Events/SessionDisconnectedEvent.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;;;;;;;;;;;AAEH,iCAAgC;AAIhC;;GAEG;AACH;IAA8C,4CAAK;IAQ/C;;OAEG;IACH,kCAAY,MAAe,EAAE,MAAc;QAA3C,YACI,kBAAM,IAAI,EAAE,MAAM,EAAE,qBAAqB,CAAC,SAE7C;QADG,KAAI,CAAC,MAAM,GAAG,MAAM,CAAC;;IACzB,CAAC;IAED;;OAEG;IACH,uDAAoB,GAApB;QAEI,OAAO,CAAC,IAAI,CAAC,kCAAkC,GAAG,IAAI,CAAC,IAAI,GAAG,iCAAiC,CAAC,CAAC;QAEjG,IAAM,OAAO,GAAY,IAAI,CAAC,MAAM,CAAC;QAErC,4CAA4C;QAC5C,KAAK,IAAM,YAAY,IAAI,OAAO,CAAC,iBAAiB,EAAE;YAClD,IAAI,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE;gBAClD,OAAO,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;gBACnE,OAAO,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC;gBACpE,OAAO,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;gBAC7D,OAAO,OAAO,CAAC,oBAAoB,CAAC,OAAO,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBAC7F,OAAO,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC;aACrD;YACD,OAAO,OAAO,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;SAClD;IACL,CAAC;IAEL,+BAAC;AAAD,CAAC,AAtCD,CAA8C,aAAK,GAsClD;AAtCY,4DAAwB"} \ No newline at end of file +{"version":3,"file":"SessionDisconnectedEvent.js","sourceRoot":"","sources":["../../../src/OpenViduInternal/Events/SessionDisconnectedEvent.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;;;;;;;;;;;AAEH,iCAAgC;AAIhC;;GAEG;AACH;IAA8C,4CAAK;IAQ/C;;OAEG;IACH,kCAAY,MAAe,EAAE,MAAc;QAA3C,YACI,kBAAM,IAAI,EAAE,MAAM,EAAE,qBAAqB,CAAC,SAE7C;QADG,KAAI,CAAC,MAAM,GAAG,MAAM,CAAC;;IACzB,CAAC;IAED;;OAEG;IACH,uDAAoB,GAApB;QAEI,OAAO,CAAC,IAAI,CAAC,kCAAkC,GAAG,IAAI,CAAC,IAAI,GAAG,iCAAiC,CAAC,CAAC;QAEjG,IAAM,OAAO,GAAY,IAAI,CAAC,MAAM,CAAC;QAErC,4CAA4C;QAC5C,KAAK,IAAM,YAAY,IAAI,OAAO,CAAC,iBAAiB,EAAE;YAClD,IAAI,CAAC,CAAC,OAAO,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,MAAM,EAAE;gBAClD,OAAO,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;gBACnE,OAAO,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC;gBACpE,IAAI,OAAO,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,aAAa,EAAE;oBAC9D,OAAO,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,eAAe,EAAE,CAAC;iBAClF;gBACD,OAAO,OAAO,CAAC,oBAAoB,CAAC,OAAO,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;gBAC7F,OAAO,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC;aACrD;YACD,OAAO,OAAO,CAAC,iBAAiB,CAAC,YAAY,CAAC,CAAC;SAClD;IACL,CAAC;IAEL,+BAAC;AAAD,CAAC,AAxCD,CAA8C,aAAK,GAwClD;AAxCY,4DAAwB"} \ No newline at end of file diff --git a/openvidu-browser/lib/OpenViduInternal/Events/StreamEvent.js b/openvidu-browser/lib/OpenViduInternal/Events/StreamEvent.js index 92c85ef7..f61e05c7 100644 --- a/openvidu-browser/lib/OpenViduInternal/Events/StreamEvent.js +++ b/openvidu-browser/lib/OpenViduInternal/Events/StreamEvent.js @@ -51,19 +51,21 @@ var StreamEvent = /** @class */ (function (_super) { StreamEvent.prototype.callDefaultBehaviour = function () { if (this.type === 'streamDestroyed') { if (this.target instanceof Session_1.Session) { - console.info("Calling default behaviour upon '" + this.type + "' event dispatched by 'Session'"); // Remote Stream + console.info("Calling default behaviour upon '" + this.type + "' event dispatched by 'Session'"); this.stream.disposeWebRtcPeer(); - this.stream.disposeMediaStream(); - this.stream.removeVideo(); } else if (this.target instanceof Publisher_1.Publisher) { - console.info("Calling default behaviour upon '" + this.type + "' event dispatched by 'Publisher'"); // Local Stream - this.stream.disposeMediaStream(); - this.stream.removeVideo(); - this.stream.isReadyToPublish = false; + console.info("Calling default behaviour upon '" + this.type + "' event dispatched by 'Publisher'"); + this.stream.isLocalStreamReadyToPublish = false; } + // Dispose the MediaStream local object + this.stream.disposeMediaStream(); + // Remove from DOM all video elements associated to this Stream, if there's a StreamManager defined + // (method Session.subscribe must have been called) + if (this.stream.streamManager) + this.stream.streamManager.removeAllVideos(); // Delete stream from Session.remoteStreamsCreated map delete this.stream.session.remoteStreamsCreated[this.stream.streamId]; // Delete StreamOptionsServer from remote Connection diff --git a/openvidu-browser/lib/OpenViduInternal/Events/StreamEvent.js.map b/openvidu-browser/lib/OpenViduInternal/Events/StreamEvent.js.map index 8050dae4..d3985e1f 100644 --- a/openvidu-browser/lib/OpenViduInternal/Events/StreamEvent.js.map +++ b/openvidu-browser/lib/OpenViduInternal/Events/StreamEvent.js.map @@ -1 +1 @@ -{"version":3,"file":"StreamEvent.js","sourceRoot":"","sources":["../../../src/OpenViduInternal/Events/StreamEvent.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;;;;;;;;;;;AAEH,iCAAgC;AAChC,sDAAqD;AACrD,kDAAiD;AAIjD;;;;GAIG;AACH;IAAiC,+BAAK;IAiBlC;;OAEG;IACH,qBAAY,UAAmB,EAAE,MAA2B,EAAE,IAAY,EAAE,MAAc,EAAE,MAAc;QAA1G,YACI,kBAAM,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,SAGlC;QAFG,KAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,KAAI,CAAC,MAAM,GAAG,MAAM,CAAC;;IACzB,CAAC;IAED;;OAEG;IACH,0CAAoB,GAApB;QACI,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,EAAE;YAEjC,IAAI,IAAI,CAAC,MAAM,YAAY,iBAAO,EAAE;gBAEhC,OAAO,CAAC,IAAI,CAAC,kCAAkC,GAAG,IAAI,CAAC,IAAI,GAAG,iCAAiC,CAAC,CAAC;gBAEjG,gBAAgB;gBAChB,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;gBAChC,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC;gBACjC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;aAE7B;iBAAM,IAAI,IAAI,CAAC,MAAM,YAAY,qBAAS,EAAE;gBAEzC,OAAO,CAAC,IAAI,CAAC,kCAAkC,GAAG,IAAI,CAAC,IAAI,GAAG,mCAAmC,CAAC,CAAC;gBAEnG,eAAe;gBACf,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC;gBACjC,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;gBAC1B,IAAI,CAAC,MAAM,CAAC,gBAAgB,GAAG,KAAK,CAAC;aACxC;YAED,sDAAsD;YACtD,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAEtE,oDAAoD;YACpD,IAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;YACpG,IAAI,CAAC,CAAC,gBAAgB,IAAI,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE;gBAClD,IAAM,mBAAmB,GAAG,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC;gBAC7D,KAAK,IAAI,CAAC,GAAG,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE;oBACtD,IAAI,mBAAmB,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;wBACpD,mBAAmB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;qBACpC;iBACJ;aACJ;SAEJ;IACL,CAAC;IAEL,kBAAC;AAAD,CAAC,AApED,CAAiC,aAAK,GAoErC;AApEY,kCAAW"} \ No newline at end of file +{"version":3,"file":"StreamEvent.js","sourceRoot":"","sources":["../../../src/OpenViduInternal/Events/StreamEvent.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;;;;;;;;;;;AAEH,iCAAgC;AAChC,sDAAqD;AACrD,kDAAiD;AAIjD;;;;GAIG;AACH;IAAiC,+BAAK;IAiBlC;;OAEG;IACH,qBAAY,UAAmB,EAAE,MAA2B,EAAE,IAAY,EAAE,MAAc,EAAE,MAAc;QAA1G,YACI,kBAAM,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,SAGlC;QAFG,KAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,KAAI,CAAC,MAAM,GAAG,MAAM,CAAC;;IACzB,CAAC;IAED;;OAEG;IACH,0CAAoB,GAApB;QACI,IAAI,IAAI,CAAC,IAAI,KAAK,iBAAiB,EAAE;YAEjC,IAAI,IAAI,CAAC,MAAM,YAAY,iBAAO,EAAE;gBAChC,gBAAgB;gBAChB,OAAO,CAAC,IAAI,CAAC,kCAAkC,GAAG,IAAI,CAAC,IAAI,GAAG,iCAAiC,CAAC,CAAC;gBACjG,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE,CAAC;aACnC;iBAAM,IAAI,IAAI,CAAC,MAAM,YAAY,qBAAS,EAAE;gBACzC,eAAe;gBACf,OAAO,CAAC,IAAI,CAAC,kCAAkC,GAAG,IAAI,CAAC,IAAI,GAAG,mCAAmC,CAAC,CAAC;gBACnG,IAAI,CAAC,MAAM,CAAC,2BAA2B,GAAG,KAAK,CAAC;aACnD;YAED,uCAAuC;YACvC,IAAI,CAAC,MAAM,CAAC,kBAAkB,EAAE,CAAC;YAEjC,mGAAmG;YACnG,mDAAmD;YACnD,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa;gBAAE,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,eAAe,EAAE,CAAC;YAE3E,sDAAsD;YACtD,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;YAEtE,oDAAoD;YACpD,IAAM,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;YACpG,IAAI,CAAC,CAAC,gBAAgB,IAAI,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE;gBAClD,IAAM,mBAAmB,GAAG,gBAAgB,CAAC,OAAO,CAAC,OAAO,CAAC;gBAC7D,KAAK,IAAI,CAAC,GAAG,mBAAmB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,EAAE;oBACtD,IAAI,mBAAmB,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE;wBACpD,mBAAmB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;qBACpC;iBACJ;aACJ;SAEJ;IACL,CAAC;IAEL,kBAAC;AAAD,CAAC,AAlED,CAAiC,aAAK,GAkErC;AAlEY,kCAAW"} \ No newline at end of file diff --git a/openvidu-browser/lib/OpenViduInternal/Events/StreamManagerEvent.d.ts b/openvidu-browser/lib/OpenViduInternal/Events/StreamManagerEvent.d.ts new file mode 100644 index 00000000..9fdc7d55 --- /dev/null +++ b/openvidu-browser/lib/OpenViduInternal/Events/StreamManagerEvent.d.ts @@ -0,0 +1,16 @@ +import { Event } from './Event'; +import { StreamManager } from '../../OpenVidu/StreamManager'; +/** + * Defines the following events: + * - `streamPlaying`: dispatched by [[StreamManager]] ([[Publisher]] and [[Subscriber]]) + */ +export declare class StreamManagerEvent extends Event { + /** + * @hidden + */ + constructor(target: StreamManager); + /** + * @hidden + */ + callDefaultBehaviour(): void; +} diff --git a/openvidu-browser/lib/OpenViduInternal/Events/StreamManagerEvent.js b/openvidu-browser/lib/OpenViduInternal/Events/StreamManagerEvent.js new file mode 100644 index 00000000..71c3cb19 --- /dev/null +++ b/openvidu-browser/lib/OpenViduInternal/Events/StreamManagerEvent.js @@ -0,0 +1,50 @@ +"use strict"; +/* + * (C) Copyright 2017-2018 OpenVidu (https://openvidu.io/) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +exports.__esModule = true; +var Event_1 = require("./Event"); +/** + * Defines the following events: + * - `streamPlaying`: dispatched by [[StreamManager]] ([[Publisher]] and [[Subscriber]]) + */ +var StreamManagerEvent = /** @class */ (function (_super) { + __extends(StreamManagerEvent, _super); + /** + * @hidden + */ + function StreamManagerEvent(target) { + return _super.call(this, false, target, 'streamPlaying') || this; + } + /** + * @hidden + */ + // tslint:disable-next-line:no-empty + StreamManagerEvent.prototype.callDefaultBehaviour = function () { }; + return StreamManagerEvent; +}(Event_1.Event)); +exports.StreamManagerEvent = StreamManagerEvent; +//# sourceMappingURL=StreamManagerEvent.js.map \ No newline at end of file diff --git a/openvidu-browser/lib/OpenViduInternal/Events/StreamManagerEvent.js.map b/openvidu-browser/lib/OpenViduInternal/Events/StreamManagerEvent.js.map new file mode 100644 index 00000000..6f398d98 --- /dev/null +++ b/openvidu-browser/lib/OpenViduInternal/Events/StreamManagerEvent.js.map @@ -0,0 +1 @@ +{"version":3,"file":"StreamManagerEvent.js","sourceRoot":"","sources":["../../../src/OpenViduInternal/Events/StreamManagerEvent.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;;;;;;;;;;;AAEH,iCAAgC;AAGhC;;;GAGG;AACH;IAAwC,sCAAK;IAEzC;;OAEG;IACH,4BAAY,MAAqB;eAC7B,kBAAM,KAAK,EAAE,MAAM,EAAE,eAAe,CAAC;IACzC,CAAC;IAED;;OAEG;IACH,oCAAoC;IACpC,iDAAoB,GAApB,cAAyB,CAAC;IAE9B,yBAAC;AAAD,CAAC,AAfD,CAAwC,aAAK,GAe5C;AAfY,gDAAkB"} \ No newline at end of file diff --git a/openvidu-browser/lib/OpenViduInternal/Events/VideoElementEvent.d.ts b/openvidu-browser/lib/OpenViduInternal/Events/VideoElementEvent.d.ts index 8dc356bb..cfaf0389 100644 --- a/openvidu-browser/lib/OpenViduInternal/Events/VideoElementEvent.d.ts +++ b/openvidu-browser/lib/OpenViduInternal/Events/VideoElementEvent.d.ts @@ -1,22 +1,20 @@ import { Event } from './Event'; -import { Publisher } from '../../OpenVidu/Publisher'; -import { Subscriber } from '../../OpenVidu/Subscriber'; +import { StreamManager } from '../../OpenVidu/StreamManager'; /** * Defines the following events: - * - `videoElementCreated`: dispatched by [[Publisher]] and [[Subscriber]] - * - `videoElementDestroyed`: dispatched by [[Publisher]] and [[Subscriber]] - * - `videoPlaying`: dispatched by [[Publisher]] and [[Subscriber]] - * - `remoteVideoPlaying`: dispatched by [[Publisher]] if `Publisher.subscribeToRemote()` was called before `Session.publish(Publisher)` + * - `videoElementCreated`: dispatched by [[Publisher]] and [[Subscriber]] whenever a new HTML video element has been inserted into DOM by OpenVidu Browser library. See + * [Manage video players](/docs/how-do-i/manage-videos) section. + * - `videoElementDestroyed`: dispatched by [[Publisher]] and [[Subscriber]] whenever an HTML video element has been removed from DOM by OpenVidu Browser library. */ export declare class VideoElementEvent extends Event { /** - * Video element that was created, destroyed or started playing + * Video element that was created or destroyed */ element: HTMLVideoElement; /** * @hidden */ - constructor(element: HTMLVideoElement, target: Publisher | Subscriber, type: string); + constructor(element: HTMLVideoElement, target: StreamManager, type: string); /** * @hidden */ diff --git a/openvidu-browser/lib/OpenViduInternal/Events/VideoElementEvent.js b/openvidu-browser/lib/OpenViduInternal/Events/VideoElementEvent.js index 21bdf95e..9c5b1410 100644 --- a/openvidu-browser/lib/OpenViduInternal/Events/VideoElementEvent.js +++ b/openvidu-browser/lib/OpenViduInternal/Events/VideoElementEvent.js @@ -29,10 +29,9 @@ exports.__esModule = true; var Event_1 = require("./Event"); /** * Defines the following events: - * - `videoElementCreated`: dispatched by [[Publisher]] and [[Subscriber]] - * - `videoElementDestroyed`: dispatched by [[Publisher]] and [[Subscriber]] - * - `videoPlaying`: dispatched by [[Publisher]] and [[Subscriber]] - * - `remoteVideoPlaying`: dispatched by [[Publisher]] if `Publisher.subscribeToRemote()` was called before `Session.publish(Publisher)` + * - `videoElementCreated`: dispatched by [[Publisher]] and [[Subscriber]] whenever a new HTML video element has been inserted into DOM by OpenVidu Browser library. See + * [Manage video players](/docs/how-do-i/manage-videos) section. + * - `videoElementDestroyed`: dispatched by [[Publisher]] and [[Subscriber]] whenever an HTML video element has been removed from DOM by OpenVidu Browser library. */ var VideoElementEvent = /** @class */ (function (_super) { __extends(VideoElementEvent, _super); diff --git a/openvidu-browser/lib/OpenViduInternal/Events/VideoElementEvent.js.map b/openvidu-browser/lib/OpenViduInternal/Events/VideoElementEvent.js.map index 0c07168c..07ba2932 100644 --- a/openvidu-browser/lib/OpenViduInternal/Events/VideoElementEvent.js.map +++ b/openvidu-browser/lib/OpenViduInternal/Events/VideoElementEvent.js.map @@ -1 +1 @@ -{"version":3,"file":"VideoElementEvent.js","sourceRoot":"","sources":["../../../src/OpenViduInternal/Events/VideoElementEvent.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;;;;;;;;;;;AAEH,iCAAgC;AAKhC;;;;;;GAMG;AACH;IAAuC,qCAAK;IAOxC;;OAEG;IACH,2BAAY,OAAyB,EAAE,MAA8B,EAAE,IAAY;QAAnF,YACI,kBAAM,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,SAE7B;QADG,KAAI,CAAC,OAAO,GAAG,OAAO,CAAC;;IAC3B,CAAC;IAED;;OAEG;IACH,oCAAoC;IACpC,gDAAoB,GAApB,cAAyB,CAAC;IAE9B,wBAAC;AAAD,CAAC,AArBD,CAAuC,aAAK,GAqB3C;AArBY,8CAAiB"} \ No newline at end of file +{"version":3,"file":"VideoElementEvent.js","sourceRoot":"","sources":["../../../src/OpenViduInternal/Events/VideoElementEvent.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;;;;;;;;;;;AAEH,iCAAgC;AAIhC;;;;;GAKG;AACH;IAAuC,qCAAK;IAOxC;;OAEG;IACH,2BAAY,OAAyB,EAAE,MAAqB,EAAE,IAAY;QAA1E,YACI,kBAAM,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,SAE7B;QADG,KAAI,CAAC,OAAO,GAAG,OAAO,CAAC;;IAC3B,CAAC;IAED;;OAEG;IACH,oCAAoC;IACpC,gDAAoB,GAApB,cAAyB,CAAC;IAE9B,wBAAC;AAAD,CAAC,AArBD,CAAuC,aAAK,GAqB3C;AArBY,8CAAiB"} \ No newline at end of file diff --git a/openvidu-browser/lib/OpenViduInternal/Interfaces/Public/EventDispatcher.d.ts b/openvidu-browser/lib/OpenViduInternal/Interfaces/Public/EventDispatcher.d.ts index 8cf2057f..c31d4f61 100644 --- a/openvidu-browser/lib/OpenViduInternal/Interfaces/Public/EventDispatcher.d.ts +++ b/openvidu-browser/lib/OpenViduInternal/Interfaces/Public/EventDispatcher.d.ts @@ -2,14 +2,20 @@ import { Event as Event } from '../../Events/Event'; export interface EventDispatcher { /** * Adds function `handler` to handle event `type` + * + * @returns The EventDispatcher object */ on(type: string, handler: (event: Event) => void): EventDispatcher; /** * Adds function `handler` to handle event `type` just once. The handler will be automatically removed after first execution + * + * @returns The object that dispatched the event */ - once(type: string, handler: (event: Event) => void): any; + once(type: string, handler: (event: Event) => void): Object; /** * Removes a `handler` from event `type`. If no handler is provided, all handlers will be removed from the event + * + * @returns The object that dispatched the event */ - off(type: string, handler?: (event: Event) => void): any; + off(type: string, handler?: (event: Event) => void): Object; } diff --git a/openvidu-browser/lib/OpenViduInternal/Interfaces/Public/MediaElement.d.ts b/openvidu-browser/lib/OpenViduInternal/Interfaces/Public/MediaElement.d.ts new file mode 100644 index 00000000..61879cda --- /dev/null +++ b/openvidu-browser/lib/OpenViduInternal/Interfaces/Public/MediaElement.d.ts @@ -0,0 +1,23 @@ +import { EventDispatcher } from './EventDispatcher'; +import { Stream } from '../../../OpenVidu/Stream'; +/** + * Interface representing a media element of the DOM. Can be local ([[Publisher]]) or remote ([[Subscriber]]) + */ +export interface MediaElement extends EventDispatcher { + /** + * DOM id of the MediaElement's video + */ + id: string; + /** + * Wheter the MediaElement refers to a local stream ([[Publisher]]) or a remote stream ([[Subscriber]]) + */ + remote: boolean; + /** + * The [[Stream]] of the MediaElement + */ + stream: Stream; + /** + * HTML DOM element in which the MediaElement's video has been inserted + */ + element: HTMLElement; +} diff --git a/openvidu-browser/lib/OpenViduInternal/Interfaces/Public/MediaElement.js b/openvidu-browser/lib/OpenViduInternal/Interfaces/Public/MediaElement.js new file mode 100644 index 00000000..c3bdd796 --- /dev/null +++ b/openvidu-browser/lib/OpenViduInternal/Interfaces/Public/MediaElement.js @@ -0,0 +1,19 @@ +"use strict"; +/* + * (C) Copyright 2017-2018 OpenVidu (https://openvidu.io/) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +exports.__esModule = true; +//# sourceMappingURL=MediaElement.js.map \ No newline at end of file diff --git a/openvidu-browser/lib/OpenViduInternal/Interfaces/Public/MediaElement.js.map b/openvidu-browser/lib/OpenViduInternal/Interfaces/Public/MediaElement.js.map new file mode 100644 index 00000000..c7a05439 --- /dev/null +++ b/openvidu-browser/lib/OpenViduInternal/Interfaces/Public/MediaElement.js.map @@ -0,0 +1 @@ +{"version":3,"file":"MediaElement.js","sourceRoot":"","sources":["../../../../src/OpenViduInternal/Interfaces/Public/MediaElement.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG"} \ No newline at end of file diff --git a/openvidu-browser/lib/OpenViduInternal/Interfaces/Public/MediaManager.d.ts b/openvidu-browser/lib/OpenViduInternal/Interfaces/Public/MediaManager.d.ts new file mode 100644 index 00000000..264afe5f --- /dev/null +++ b/openvidu-browser/lib/OpenViduInternal/Interfaces/Public/MediaManager.d.ts @@ -0,0 +1,75 @@ +import { Stream } from '../../../OpenVidu/Stream'; +import { EventDispatcher } from './EventDispatcher'; +import { Event } from '../../Events/Event'; +import { VideoInsertMode } from '../../Enums/VideoInsertMode'; +import EventEmitter = require('wolfy87-eventemitter'); +/** + * Interface in charge of displaying the media streams in the HTML DOM. This wraps any Publisher and Subscriber object, as well as + * any extra representation in the DOM you assign to some Stream by calling [[Stream.addVideoElement]]. + * + * The use of this interface is useful when you don't need to differentiate between streams and just want to directly manage videos + */ +export declare class MediaManager implements EventDispatcher { + /** + * The Stream represented in the DOM by the MediaManager + */ + stream: Stream; + /** + * Whether the MediaManager is representing in the DOM a local Stream ([[Publisher]]) or a remote Stream ([[Subscriber]]) + */ + remote: boolean; + /** + * The DOM HTMLElement assigned as targetElement when initializing the MediaManager. This property is defined when [[OpenVidu.initPublisher]] + * or [[Session.subscribe]] methods have been called passing a valid `targetElement` parameter. It is undefined when [[OpenVidu.initPublisher]] + * or [[Session.subscribe]] methods have been called passing *null* or *undefined* as `targetElement` parameter or when the MediaManager hass been + * created by calling [[Stream.addVideoElement]] + */ + targetElement?: HTMLElement; + /** + * The DOM HTMLVideoElement displaying the MediaManager's stream + */ + video: HTMLVideoElement; + /** + * `id` attribute of the DOM HTMLVideoElement displaying the MediaManager's stream + */ + id: string; + /** + * @hidden + */ + isVideoElementCreated: boolean; + protected ee: EventEmitter; + protected customEe: EventEmitter; + /** + * @hidden + */ + constructor(stream: Stream, targetElement?: HTMLElement | string); + /** + * See [[EventDispatcher.on]] + */ + on(type: string, handler: (event: Event) => void): EventDispatcher; + /** + * See [[EventDispatcher.once]] + */ + once(type: string, handler: (event: Event) => void): MediaManager; + /** + * See [[EventDispatcher.off]] + */ + off(type: string, handler?: (event: Event) => void): MediaManager; + /** + * @hidden + */ + insertVideo(targetElement?: HTMLElement, insertMode?: VideoInsertMode): HTMLVideoElement; + /** + * @hidden + */ + insertVideoWithMode(insertMode: VideoInsertMode): void; + /** + * @hidden + */ + removeVideo(): void; + /** + * @hidden + */ + addOnCanPlayEvent(): void; + private mirrorVideo(); +} diff --git a/openvidu-browser/lib/OpenViduInternal/Interfaces/Public/MediaManager.js b/openvidu-browser/lib/OpenViduInternal/Interfaces/Public/MediaManager.js new file mode 100644 index 00000000..64de69df --- /dev/null +++ b/openvidu-browser/lib/OpenViduInternal/Interfaces/Public/MediaManager.js @@ -0,0 +1,261 @@ +"use strict"; +/* + * (C) Copyright 2017-2018 OpenVidu (https://openvidu.io/) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +exports.__esModule = true; +var VideoInsertMode_1 = require("../../Enums/VideoInsertMode"); +var VideoElementEvent_1 = require("../../Events/VideoElementEvent"); +var EventEmitter = require("wolfy87-eventemitter"); +/** + * Interface in charge of displaying the media streams in the HTML DOM. This wraps any Publisher and Subscriber object, as well as + * any extra representation in the DOM you assign to some Stream by calling [[Stream.addVideoElement]]. + * + * The use of this interface is useful when you don't need to differentiate between streams and just want to directly manage videos + */ +var MediaManager = /** @class */ (function () { + /** + * @hidden + */ + function MediaManager(stream, targetElement) { + var _this = this; + /** + * @hidden + */ + this.isVideoElementCreated = false; + this.ee = new EventEmitter(); + this.customEe = new EventEmitter(); + this.stream = stream; + this.stream.mediaManagers.push(this); + if (typeof targetElement === 'string') { + var e = document.getElementById(targetElement); + if (!!e) { + this.targetElement = e; + } + } + else if (targetElement instanceof HTMLElement) { + this.targetElement = targetElement; + } + if (!this.targetElement) { + console.warn("The provided 'targetElement' couldn't be resolved to any HTML element: " + targetElement); + } + this.customEe.on('video-removed', function (element) { + _this.ee.emitEvent('videoElementDestroyed', [new VideoElementEvent_1.VideoElementEvent(element, _this, 'videoElementDestroyed')]); + }); + } + /** + * See [[EventDispatcher.on]] + */ + MediaManager.prototype.on = function (type, handler) { + var _this = this; + this.ee.on(type, function (event) { + if (event) { + console.info("Event '" + type + "' triggered", event); + } + else { + console.info("Event '" + type + "' triggered"); + } + handler(event); + }); + if (type === 'videoElementCreated') { + if (!!this.stream && this.isVideoElementCreated) { + this.ee.emitEvent('videoElementCreated', [new VideoElementEvent_1.VideoElementEvent(this.video, this, 'videoElementCreated')]); + } + else { + this.customEe.on('video-element-created', function (element) { + _this.id = element.id; + _this.ee.emitEvent('videoElementCreated', [new VideoElementEvent_1.VideoElementEvent(element.element, _this, 'videoElementCreated')]); + }); + } + } + if (type === 'videoPlaying') { + if (!this.stream.displayMyRemote() && !!this.video && + this.video.currentTime > 0 && + this.video.paused === false && + this.video.ended === false && + this.video.readyState === 4) { + this.ee.emitEvent('videoPlaying', [new VideoElementEvent_1.VideoElementEvent(this.video, this, 'videoPlaying')]); + } + else { + this.customEe.once('video-is-playing', function (element) { + _this.ee.emitEvent('videoPlaying', [new VideoElementEvent_1.VideoElementEvent(element.element, _this, 'videoPlaying')]); + }); + } + } + return this; + }; + /** + * See [[EventDispatcher.once]] + */ + MediaManager.prototype.once = function (type, handler) { + var _this = this; + this.ee.once(type, function (event) { + if (event) { + console.info("Event '" + type + "' triggered once", event); + } + else { + console.info("Event '" + type + "' triggered once"); + } + handler(event); + }); + if (type === 'videoElementCreated') { + if (!!this.stream && this.isVideoElementCreated) { + this.ee.emitEvent('videoElementCreated', [new VideoElementEvent_1.VideoElementEvent(this.video, this, 'videoElementCreated')]); + } + else { + this.customEe.once('video-element-created', function (element) { + _this.id = element.id; + _this.ee.emitEvent('videoElementCreated', [new VideoElementEvent_1.VideoElementEvent(element.element, _this, 'videoElementCreated')]); + }); + } + } + if (type === 'videoPlaying') { + if (!this.stream.displayMyRemote() && this.video && + this.video.currentTime > 0 && + this.video.paused === false && + this.video.ended === false && + this.video.readyState === 4) { + this.ee.emitEvent('videoPlaying', [new VideoElementEvent_1.VideoElementEvent(this.video, this, 'videoPlaying')]); + } + else { + this.customEe.once('video-is-playing', function (element) { + _this.ee.emitEvent('videoPlaying', [new VideoElementEvent_1.VideoElementEvent(element.element, _this, 'videoPlaying')]); + }); + } + } + return this; + }; + /** + * See [[EventDispatcher.off]] + */ + MediaManager.prototype.off = function (type, handler) { + if (!handler) { + this.ee.removeAllListeners(type); + } + else { + this.ee.off(type, handler); + } + return this; + }; + /** + * @hidden + */ + MediaManager.prototype.insertVideo = function (targetElement, insertMode) { + var _this = this; + if (!!targetElement) { + this.video = document.createElement('video'); + this.video.id = (this.stream.isLocal() ? 'local-' : 'remote-') + 'video-' + this.stream.streamId; + this.video.autoplay = true; + this.video.controls = false; + this.video.srcObject = this.stream.getMediaStream(); + if (this.stream.isLocal() && !this.stream.displayMyRemote()) { + this.video.muted = true; + if (this.stream.outboundStreamOpts.publisherProperties.mirror) { + this.mirrorVideo(); + } + this.video.oncanplay = function () { + console.info("Local 'Stream' with id [" + _this.stream.streamId + '] video is now playing'); + _this.customEe.emitEvent('video-is-playing', [{ + element: _this.video + }]); + }; + } + else { + this.video.title = this.stream.streamId; + } + this.targetElement = targetElement; + var insMode = !!insertMode ? insertMode : VideoInsertMode_1.VideoInsertMode.APPEND; + this.insertVideoWithMode(insMode); + this.customEe.emitEvent('video-element-created', [{ + element: this.video + }]); + this.isVideoElementCreated = true; + } + this.stream.isReadyToPublish = true; + this.customEe.emitEvent('stream-ready-to-publish'); + return this.video; + }; + /** + * @hidden + */ + MediaManager.prototype.insertVideoWithMode = function (insertMode) { + if (!!this.targetElement) { + switch (insertMode) { + case VideoInsertMode_1.VideoInsertMode.AFTER: + this.targetElement.parentNode.insertBefore(this.video, this.targetElement.nextSibling); + break; + case VideoInsertMode_1.VideoInsertMode.APPEND: + this.targetElement.appendChild(this.video); + break; + case VideoInsertMode_1.VideoInsertMode.BEFORE: + this.targetElement.parentNode.insertBefore(this.video, this.targetElement); + break; + case VideoInsertMode_1.VideoInsertMode.PREPEND: + this.targetElement.insertBefore(this.video, this.targetElement.childNodes[0]); + break; + case VideoInsertMode_1.VideoInsertMode.REPLACE: + this.targetElement.parentNode.replaceChild(this.video, this.targetElement); + break; + default: + this.insertVideoWithMode(VideoInsertMode_1.VideoInsertMode.APPEND); + } + } + }; + /** + * @hidden + */ + MediaManager.prototype.removeVideo = function () { + if (!!this.video) { + var videoDOM = document.getElementById(this.id); + if (!!videoDOM) { + videoDOM.parentNode.removeChild(videoDOM); + this.customEe.emitEvent('video-removed', [this.video]); + } + delete this.video; + } + }; + /** + * @hidden + */ + MediaManager.prototype.addOnCanPlayEvent = function () { + var _this = this; + if (!!this.video) { + // let thumbnailId = this.video.thumb; + this.video.oncanplay = function () { + if (_this.stream.isLocal() && _this.stream.displayMyRemote()) { + console.info("Your own remote 'Stream' with id [" + _this.stream.streamId + '] video is now playing'); + _this.customEe.emitEvent('remote-video-is-playing', [{ + element: _this.video + }]); + } + else if (!_this.stream.isLocal() && !_this.stream.displayMyRemote()) { + console.info("Remote 'Stream' with id [" + _this.stream.streamId + '] video is now playing'); + _this.customEe.emitEvent('video-is-playing', [{ + element: _this.video + }]); + } + // show(thumbnailId); + // this.hideSpinner(this.streamId); + }; + } + }; + MediaManager.prototype.mirrorVideo = function () { + this.video.style.transform = 'rotateY(180deg)'; + this.video.style.webkitTransform = 'rotateY(180deg)'; + }; + return MediaManager; +}()); +exports.MediaManager = MediaManager; +//# sourceMappingURL=MediaManager.js.map \ No newline at end of file diff --git a/openvidu-browser/lib/OpenViduInternal/Interfaces/Public/MediaManager.js.map b/openvidu-browser/lib/OpenViduInternal/Interfaces/Public/MediaManager.js.map new file mode 100644 index 00000000..3b58d9b0 --- /dev/null +++ b/openvidu-browser/lib/OpenViduInternal/Interfaces/Public/MediaManager.js.map @@ -0,0 +1 @@ +{"version":3,"file":"MediaManager.js","sourceRoot":"","sources":["../../../../src/OpenViduInternal/Interfaces/Public/MediaManager.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/openvidu-browser/lib/OpenViduInternal/Interfaces/Public/PublisherProperties.d.ts b/openvidu-browser/lib/OpenViduInternal/Interfaces/Public/PublisherProperties.d.ts index 7d5857e9..cafc7c6c 100644 --- a/openvidu-browser/lib/OpenViduInternal/Interfaces/Public/PublisherProperties.d.ts +++ b/openvidu-browser/lib/OpenViduInternal/Interfaces/Public/PublisherProperties.d.ts @@ -26,12 +26,12 @@ export interface PublisherProperties { */ mirror?: boolean; /** - * Whether to initially publish to the session with the audio unmuted or muted. Only makes sense if property `audioSource` is NOT set to false. You can change the audio state later during the session with [[Publisher.publishAudio]] + * Whether to initially publish to the session with the audio unmuted or muted. Only makes sense if property `audioSource` is NOT set to *false* or *null*. You can change the audio state later during the session with [[Publisher.publishAudio]] * @default true */ publishAudio?: boolean; /** - * Whether to initially publish to the session with the video enabled or disabled. Only makes sense if property `videoSource` is NOT set to false. You can change the video state later during the session with [[Publisher.publishVideo]] + * Whether to initially publish to the session with the video enabled or disabled. Only makes sense if property `videoSource` is NOT set to *false* or *null*. You can change the video state later during the session with [[Publisher.publishVideo]] * @default true */ publishVideo?: boolean; diff --git a/openvidu-browser/lib/OpenViduInternal/Interfaces/Public/StreamManagerVideo.d.ts b/openvidu-browser/lib/OpenViduInternal/Interfaces/Public/StreamManagerVideo.d.ts new file mode 100644 index 00000000..2ae4d73a --- /dev/null +++ b/openvidu-browser/lib/OpenViduInternal/Interfaces/Public/StreamManagerVideo.d.ts @@ -0,0 +1,31 @@ +import { VideoInsertMode } from '../../Enums/VideoInsertMode'; +export interface StreamManagerVideo { + /** + * DOM video element displaying the StreamManager's stream + */ + video: HTMLVideoElement; + /** + * `id` attribute of the DOM video element displaying the StreamManager's stream + */ + id: string; + /** + * The DOM HTMLElement assigned as target element when creating a video for the StreamManager. This property is defined when: + * - [[OpenVidu.initPublisher]] or [[Session.subscribe]] methods have been called passing a valid `targetElement` parameter. + * - [[SessionManager.createVideoElement]] has been called. + * + * This property is undefined when: + * - [[OpenVidu.initPublisher]] or [[Session.subscribe]] methods have been called passing *null* or *undefined* as `targetElement` parameter. + * - [[SessionManager.addVideoElement]] has been called. + */ + targetElement?: HTMLElement; + /** + * How the DOM video element should be inserted with respect to `targetElement`. This property is defined when: + * - [[OpenVidu.initPublisher]] or [[Session.subscribe]] methods have been called passing a valid `targetElement` parameter. + * - [[SessionManager.createVideoElement]] has been called. + * + * This property is undefined when: + * - [[OpenVidu.initPublisher]] or [[Session.subscribe]] methods have been called passing *null* or *undefined* as `targetElement` parameter. + * - [[SessionManager.addVideoElement]] has been called. + */ + insertMode?: VideoInsertMode; +} diff --git a/openvidu-browser/lib/OpenViduInternal/Interfaces/Public/StreamManagerVideo.js b/openvidu-browser/lib/OpenViduInternal/Interfaces/Public/StreamManagerVideo.js new file mode 100644 index 00000000..1dc84706 --- /dev/null +++ b/openvidu-browser/lib/OpenViduInternal/Interfaces/Public/StreamManagerVideo.js @@ -0,0 +1,19 @@ +"use strict"; +/* + * (C) Copyright 2017-2018 OpenVidu (https://openvidu.io/) + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +exports.__esModule = true; +//# sourceMappingURL=StreamManagerVideo.js.map \ No newline at end of file diff --git a/openvidu-browser/lib/OpenViduInternal/Interfaces/Public/StreamManagerVideo.js.map b/openvidu-browser/lib/OpenViduInternal/Interfaces/Public/StreamManagerVideo.js.map new file mode 100644 index 00000000..1fe8fe96 --- /dev/null +++ b/openvidu-browser/lib/OpenViduInternal/Interfaces/Public/StreamManagerVideo.js.map @@ -0,0 +1 @@ +{"version":3,"file":"StreamManagerVideo.js","sourceRoot":"","sources":["../../../../src/OpenViduInternal/Interfaces/Public/StreamManagerVideo.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG"} \ No newline at end of file diff --git a/openvidu-browser/lib/index.d.ts b/openvidu-browser/lib/index.d.ts index 008bf0aa..a7b65887 100644 --- a/openvidu-browser/lib/index.d.ts +++ b/openvidu-browser/lib/index.d.ts @@ -2,6 +2,7 @@ export { OpenVidu } from './OpenVidu/OpenVidu'; export { Session } from './OpenVidu/Session'; export { Publisher } from './OpenVidu/Publisher'; export { Subscriber } from './OpenVidu/Subscriber'; +export { StreamManager } from './OpenVidu/StreamManager'; export { Stream } from './OpenVidu/Stream'; export { Connection } from './OpenVidu/Connection'; export { LocalRecorder } from './OpenVidu/LocalRecorder'; @@ -15,10 +16,12 @@ export { RecordingEvent } from './OpenViduInternal/Events/RecordingEvent'; export { SessionDisconnectedEvent } from './OpenViduInternal/Events/SessionDisconnectedEvent'; export { SignalEvent } from './OpenViduInternal/Events/SignalEvent'; export { StreamEvent } from './OpenViduInternal/Events/StreamEvent'; +export { StreamManagerEvent } from './OpenViduInternal/Events/StreamManagerEvent'; export { VideoElementEvent } from './OpenViduInternal/Events/VideoElementEvent'; export { Device } from './OpenViduInternal/Interfaces/Public/Device'; export { EventDispatcher } from './OpenViduInternal/Interfaces/Public/EventDispatcher'; export { OpenViduAdvancedConfiguration } from './OpenViduInternal/Interfaces/Public/OpenViduAdvancedConfiguration'; export { PublisherProperties } from './OpenViduInternal/Interfaces/Public/PublisherProperties'; export { SignalOptions } from './OpenViduInternal/Interfaces/Public/SignalOptions'; +export { StreamManagerVideo } from './OpenViduInternal/Interfaces/Public/StreamManagerVideo'; export { SubscriberProperties } from './OpenViduInternal/Interfaces/Public/SubscriberProperties'; diff --git a/openvidu-browser/lib/index.js b/openvidu-browser/lib/index.js index 90a528fd..b58ebbfe 100644 --- a/openvidu-browser/lib/index.js +++ b/openvidu-browser/lib/index.js @@ -8,6 +8,8 @@ var Publisher_1 = require("./OpenVidu/Publisher"); exports.Publisher = Publisher_1.Publisher; var Subscriber_1 = require("./OpenVidu/Subscriber"); exports.Subscriber = Subscriber_1.Subscriber; +var StreamManager_1 = require("./OpenVidu/StreamManager"); +exports.StreamManager = StreamManager_1.StreamManager; var Stream_1 = require("./OpenVidu/Stream"); exports.Stream = Stream_1.Stream; var Connection_1 = require("./OpenVidu/Connection"); @@ -34,6 +36,8 @@ var SignalEvent_1 = require("./OpenViduInternal/Events/SignalEvent"); exports.SignalEvent = SignalEvent_1.SignalEvent; var StreamEvent_1 = require("./OpenViduInternal/Events/StreamEvent"); exports.StreamEvent = StreamEvent_1.StreamEvent; +var StreamManagerEvent_1 = require("./OpenViduInternal/Events/StreamManagerEvent"); +exports.StreamManagerEvent = StreamManagerEvent_1.StreamManagerEvent; var VideoElementEvent_1 = require("./OpenViduInternal/Events/VideoElementEvent"); exports.VideoElementEvent = VideoElementEvent_1.VideoElementEvent; //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/openvidu-browser/lib/index.js.map b/openvidu-browser/lib/index.js.map index 2335a60c..2262b841 100644 --- a/openvidu-browser/lib/index.js.map +++ b/openvidu-browser/lib/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAAA,gDAA+C;AAAtC,8BAAA,QAAQ,CAAA;AACjB,8CAA6C;AAApC,4BAAA,OAAO,CAAA;AAChB,kDAAiD;AAAxC,gCAAA,SAAS,CAAA;AAClB,oDAAmD;AAA1C,kCAAA,UAAU,CAAA;AACnB,4CAA2C;AAAlC,0BAAA,MAAM,CAAA;AACf,oDAAmD;AAA1C,kCAAA,UAAU,CAAA;AACnB,0DAAyD;AAAhD,wCAAA,aAAa,CAAA;AAEtB,kFAAiF;AAAxE,kDAAA,kBAAkB,CAAA;AAC3B,wEAAuE;AAA9D,wCAAA,aAAa,CAAA;AACtB,4EAA2E;AAAlE,4CAAA,eAAe,CAAA;AAExB,yDAAwD;AAA/C,wBAAA,KAAK,CAAA;AACd,6EAA4E;AAAnE,4CAAA,eAAe,CAAA;AACxB,2FAA0F;AAAjF,0DAAA,sBAAsB,CAAA;AAC/B,2EAA0E;AAAjE,0CAAA,cAAc,CAAA;AACvB,+FAA8F;AAArF,8DAAA,wBAAwB,CAAA;AACjC,qEAAoE;AAA3D,oCAAA,WAAW,CAAA;AACpB,qEAAoE;AAA3D,oCAAA,WAAW,CAAA;AACpB,iFAAgF;AAAvE,gDAAA,iBAAiB,CAAA"} \ No newline at end of file +{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAAA,gDAA+C;AAAtC,8BAAA,QAAQ,CAAA;AACjB,8CAA6C;AAApC,4BAAA,OAAO,CAAA;AAChB,kDAAiD;AAAxC,gCAAA,SAAS,CAAA;AAClB,oDAAmD;AAA1C,kCAAA,UAAU,CAAA;AACnB,0DAAyD;AAAhD,wCAAA,aAAa,CAAA;AACtB,4CAA2C;AAAlC,0BAAA,MAAM,CAAA;AACf,oDAAmD;AAA1C,kCAAA,UAAU,CAAA;AACnB,0DAAyD;AAAhD,wCAAA,aAAa,CAAA;AAEtB,kFAAiF;AAAxE,kDAAA,kBAAkB,CAAA;AAC3B,wEAAuE;AAA9D,wCAAA,aAAa,CAAA;AACtB,4EAA2E;AAAlE,4CAAA,eAAe,CAAA;AAExB,yDAAwD;AAA/C,wBAAA,KAAK,CAAA;AACd,6EAA4E;AAAnE,4CAAA,eAAe,CAAA;AACxB,2FAA0F;AAAjF,0DAAA,sBAAsB,CAAA;AAC/B,2EAA0E;AAAjE,0CAAA,cAAc,CAAA;AACvB,+FAA8F;AAArF,8DAAA,wBAAwB,CAAA;AACjC,qEAAoE;AAA3D,oCAAA,WAAW,CAAA;AACpB,qEAAoE;AAA3D,oCAAA,WAAW,CAAA;AACpB,mFAAkF;AAAzE,kDAAA,kBAAkB,CAAA;AAC3B,iFAAgF;AAAvE,gDAAA,iBAAiB,CAAA"} \ No newline at end of file diff --git a/openvidu-browser/src/OpenVidu/LocalRecorder.ts b/openvidu-browser/src/OpenVidu/LocalRecorder.ts index 05592f88..75eb3a73 100644 --- a/openvidu-browser/src/OpenVidu/LocalRecorder.ts +++ b/openvidu-browser/src/OpenVidu/LocalRecorder.ts @@ -52,6 +52,7 @@ export class LocalRecorder { this.state = LocalRecorderState.READY; } + /** * Starts the recording of the Stream. [[state]] property must be `READY`. After method succeeds is set to `RECORDING` * @returns A Promise (to which you can optionally subscribe to) that is resolved if the recording successfully started and rejected with an Error object if not diff --git a/openvidu-browser/src/OpenVidu/OpenVidu.ts b/openvidu-browser/src/OpenVidu/OpenVidu.ts index 6385c0ce..00ebef8a 100644 --- a/openvidu-browser/src/OpenVidu/OpenVidu.ts +++ b/openvidu-browser/src/OpenVidu/OpenVidu.ts @@ -90,12 +90,13 @@ export class OpenVidu { * * The [[Publisher]] object will dispatch an `accessAllowed` or `accessDenied` event once it has been granted access to the requested input devices or not. * - * The [[Publisher]] object will dispatch a `videoElementCreated` event once the HTML video element has been added to DOM (if _targetElement_ not null or undefined, or if you call [[Publisher.createVideoElement]]) + * The [[Publisher]] object will dispatch a `videoElementCreated` event once a HTML video element has been added to DOM (only if you + * [let OpenVidu take care of the video players](/docs/how-do-i/manage-videos/#let-openvidu-take-care-of-the-video-players)). See [[VideoElementEvent]] to learn more. * - * The [[Publisher]] object will dispatch a `streamPlaying` event once the local streams starts playing + * The [[Publisher]] object will dispatch a `streamPlaying` event once the local streams starts playing. See [[StreamManagerEvent]] to learn more. * - * @param targetElement HTML DOM element (or its `id` attribute) in which the video element of the Publisher will be inserted (see [[PublisherProperties.insertMode]]). If null or undefined no default video will be created for this Publisher - * (you can always call method [[Stream.addVideoElement]] for the object [[Publisher.stream]] to manage the video elements on your own) + * @param targetElement HTML DOM element (or its `id` attribute) in which the video element of the Publisher will be inserted (see [[PublisherProperties.insertMode]]). If *null* or *undefined* no default video will be created for this Publisher. + * You can always call method [[Publisher.addVideoElement]] or [[Publisher.createVideoElement]] to manage the video elements on your own (see [Manage video players](/docs/how-do-i/manage-videos) section) * @param completionHandler `error` parameter is null if `initPublisher` succeeds, and is defined if it fails. * `completionHandler` function is called before the Publisher dispatches an `accessAllowed` or an `accessDenied` event */ diff --git a/openvidu-browser/src/OpenVidu/Publisher.ts b/openvidu-browser/src/OpenVidu/Publisher.ts index d2052524..022dd668 100644 --- a/openvidu-browser/src/OpenVidu/Publisher.ts +++ b/openvidu-browser/src/OpenVidu/Publisher.ts @@ -41,7 +41,7 @@ export class Publisher extends StreamManager { accessAllowed = false; /** - * Whether you have called [[Publisher.subscribeToRemote]] with value `true` or `false` (false by default) + * Whether you have called [[Publisher.subscribeToRemote]] with value `true` or `false` (*false* by default) */ isSubscribedToRemote = false; @@ -68,6 +68,7 @@ export class Publisher extends StreamManager { }); } + /** * Publish or unpublish the audio stream (if available). Calling this method twice in a row passing same value will have no effect * @param value `true` to publish the audio stream, `false` to unpublish it @@ -77,6 +78,7 @@ export class Publisher extends StreamManager { console.info("'Publisher' has " + (value ? 'published' : 'unpublished') + ' its audio stream'); } + /** * Publish or unpublish the video stream (if available). Calling this method twice in a row passing same value will have no effect * @param value `true` to publish the video stream, `false` to unpublish it @@ -86,8 +88,9 @@ export class Publisher extends StreamManager { console.info("'Publisher' has " + (value ? 'published' : 'unpublished') + ' its video stream'); } + /** - * Call this method before [[Session.publish]] to subscribe to your Publisher's stream as any other user would do. The local video will be automatically replaced by the remote video + * Call this method before [[Session.publish]] to subscribe to your Publisher's remote stream instead of using the local stream, as any other user would do. */ subscribeToRemote(value?: boolean): void { value = (value !== undefined) ? value : true; diff --git a/openvidu-browser/src/OpenVidu/Session.ts b/openvidu-browser/src/OpenVidu/Session.ts index 27d11315..ee83dca2 100644 --- a/openvidu-browser/src/OpenVidu/Session.ts +++ b/openvidu-browser/src/OpenVidu/Session.ts @@ -42,7 +42,7 @@ import EventEmitter = require('wolfy87-eventemitter'); /** * Represents a video call. It can also be seen as a videoconference room where multiple users can connect. - * Participants who publish their videos to a session will be seen by the rest of users connected to that specific session. + * Participants who publish their videos to a session can be seen by the rest of users connected to that specific session. * Initialized with [[OpenVidu.initSession]] method */ export class Session implements EventDispatcher { @@ -53,12 +53,12 @@ export class Session implements EventDispatcher { connection: Connection; /** - * Unique identifier of the Session. This is the same value you pass when calling [[OpenVidu.initSession]] + * Unique identifier of the Session */ sessionId: string; /** - * Collection of all StreamManagers of this Session ([[Publishers]] and [[Subscribers]]) + * Collection of all StreamManagers of this Session ([[Publisher]] and [[Subscriber]]) */ streamManagers: StreamManager[] = []; @@ -114,14 +114,14 @@ export class Session implements EventDispatcher { * - Then one for each remote Connection previously connected to the Session, if any. Any other remote user connecting to the Session after you have * successfully connected will also dispatch a `connectionCreated` event when they do so. * - * The [[Session]] object of the local participant will also dispatch a `streamCreated` event for each remote active [[Publisher]] after dispatching all remote - * `connectionCreated` events. + * The [[Session]] object of the local participant will also dispatch a `streamCreated` event for each remote active [[Publisher]] that was already streaming + * when connecting, just after dispatching all remote `connectionCreated` events. * * The [[Session]] object of every other participant connected to the session will dispatch a `connectionCreated` event. * * See [[ConnectionEvent]] and [[StreamEvent]] to learn more. * - * @returns A Promise to which you must subscribe that is resolved if the recording successfully started and rejected with an Error object if not + * @returns A Promise to which you must subscribe that is resolved if the the connection to the Session was successful and rejected with an Error object if not * */ connect(token: string, metadata?: any): Promise { @@ -154,18 +154,23 @@ export class Session implements EventDispatcher { * * The [[Session]] object of the local participant will dispatch a `sessionDisconnected` event. * This event will automatically unsubscribe the leaving participant from every Subscriber object of the session (this includes closing the WebRTCPeer connection and disposing all MediaStreamTracks) - * and also delete the HTML video element associated to it. - * Call `event.preventDefault()` to avoid this beahviour and take care of disposing and cleaning all the Subscriber objects yourself. See [[SessionDisconnectedEvent]] to learn more. + * and also deletes any HTML video element associated to each Subscriber (only those [created by OpenVidu Browser](/docs/how-do-i/manage-videos/#let-openvidu-take-care-of-the-video-players)). + * For every video removed, each Subscriber object will dispatch a `videoElementDestroyed` event. + * Call `event.preventDefault()` uppon event `sessionDisconnected` to avoid this behaviour and take care of disposing and cleaning all the Subscriber objects yourself. + * See [[SessionDisconnectedEvent]] and [[VideoElementEvent]] to learn more to learn more. * * The [[Publisher]] object of the local participant will dispatch a `streamDestroyed` event if there is a [[Publisher]] object publishing to the session. - * This event will automatically stop all media tracks and delete the HTML video element associated to it. - * Call `event.preventDefault()` if you want clean the Publisher object yourself or re-publish it in a different Session (to do so it is a mandatory - * requirement to call `Session.unpublish()` or/and `Session.disconnect()` in the previous session). See [[StreamEvent]] to learn more. + * This event will automatically stop all media tracks and delete any HTML video element associated to it (only those [created by OpenVidu Browser](/docs/how-do-i/manage-videos/#let-openvidu-take-care-of-the-video-players)). + * For every video removed, the Publisher object will dispatch a `videoElementDestroyed` event. + * Call `event.preventDefault()` uppon event `streamDestroyed` if you want to clean the Publisher object on your own or re-publish it in a different Session (to do so it is a mandatory requirement to call `Session.unpublish()` + * or/and `Session.disconnect()` in the previous session). See [[StreamEvent]] and [[VideoElementEvent]] to learn more. * * The [[Session]] object of every other participant connected to the session will dispatch a `streamDestroyed` event if the disconnected participant was publishing. * This event will automatically unsubscribe the Subscriber object from the session (this includes closing the WebRTCPeer connection and disposing all MediaStreamTracks) - * and delete the HTML video element associated to it. - * Call `event.preventDefault()` to avoid this default behaviour and take care of disposing and cleaning the Subscriber object yourself. See [[StreamEvent]] to learn more. + * and also deletes any HTML video element associated to that Subscriber (only those [created by OpenVidu Browser](/docs/how-do-i/manage-videos/#let-openvidu-take-care-of-the-video-players)). + * For every video removed, the Subscriber object will dispatch a `videoElementDestroyed` event. + * Call `event.preventDefault()` uppon event `streamDestroyed` to avoid this default behaviour and take care of disposing and cleaning the Subscriber object yourself. + * See [[StreamEvent]] and [[VideoElementEvent]] to learn more. * * The [[Session]] object of every other participant connected to the session will dispatch a `connectionDestroyed` event in any case. See [[ConnectionEvent]] to learn more. */ @@ -183,15 +188,14 @@ export class Session implements EventDispatcher { * * #### Events dispatched * - * The [[Subscriber]] object will dispatch a `videoElementCreated` event once the HTML video element has been added to DOM (if _targetElement_ not null or undefined, or if you call [[Subscriber.createVideoElement]]) + * The [[Subscriber]] object will dispatch a `videoElementCreated` event once the HTML video element has been added to DOM (only if you + * [let OpenVidu take care of the video players](/docs/how-do-i/manage-videos/#let-openvidu-take-care-of-the-video-players)). See [[VideoElementEvent]] to learn more. * - * The [[Subscriber]] object will dispatch a `streamPlaying` event once the remote stream starts playing - * - * See [[VideoElementEvent]] to learn more. + * The [[Subscriber]] object will dispatch a `streamPlaying` event once the remote stream starts playing. See [[StreamManagerEvent]] to learn more. * * @param stream Stream object to subscribe to - * @param targetElement HTML DOM element (or its `id` attribute) in which the video element of the Subscriber will be inserted (see [[SubscriberProperties.insertMode]]). If null or undefined no default video will be created for this Subscriber - * (you can always call method [[Stream.addVideoElement]] for the object [[Subscriber.stream]] to manage the video elements on your own) + * @param targetElement HTML DOM element (or its `id` attribute) in which the video element of the Subscriber will be inserted (see [[SubscriberProperties.insertMode]]). If *null* or *undefined* no default video will be created for this Subscriber. + * You can always call method [[Subscriber.addVideoElement]] or [[Subscriber.createVideoElement]] to manage the video elements on your own (see [Manage video players](/docs/how-do-i/manage-videos) section) * @param completionHandler `error` parameter is null if `subscribe` succeeds, and is defined if it fails. */ subscribe(stream: Stream, targetElement: string | HTMLElement, param3?: ((error: Error | undefined) => void) | SubscriberProperties, param4?: ((error: Error | undefined) => void)): Subscriber { @@ -269,11 +273,14 @@ export class Session implements EventDispatcher { /** - * Unsubscribes from `subscriber`, automatically removing its HTML video element. + * Unsubscribes from `subscriber`, automatically removing its associated HTML video elements. * * #### Events dispatched * - * The [[Subscriber]] object will dispatch a `videoElementDestroyed` event (only if it previously dispatched a `videoElementCreated` event). See [[VideoElementEvent]] to learn more + * The [[Subscriber]] object will dispatch a `videoElementDestroyed` event for each video associated to it that was removed from DOM. + * Only videos [created by OpenVidu Browser](/docs/how-do-i/manage-videos/#let-openvidu-take-care-of-the-video-players)) will be automatically removed + * + * See [[VideoElementEvent]] to learn more */ unsubscribe(subscriber: Subscriber): void { const connectionId = subscriber.stream.connection.connectionId; @@ -298,7 +305,7 @@ export class Session implements EventDispatcher { /** - * Publishes the participant's audio-video stream contained in `publisher` object to the session + * Publishes to the Session the Publisher object * * #### Events dispatched * @@ -308,7 +315,7 @@ export class Session implements EventDispatcher { * * The [[Session]] object of every other participant connected to the session will dispatch a `streamCreated` event so they can subscribe to it. See [[StreamEvent]] to learn more. * - * @returns A Promise (to which you can optionally subscribe to) that is resolved if the publisher was successfully published and rejected with an Error object if not + * @returns A Promise (to which you can optionally subscribe to) that is resolved only after the publisher was successfully published and rejected with an Error object if not */ publish(publisher: Publisher): Promise { return new Promise((resolve, reject) => { @@ -347,19 +354,23 @@ export class Session implements EventDispatcher { /** - * Unpublishes the participant's audio-video stream contained in `publisher` object. + * Unpublishes from the Session the Publisher object. * * #### Events dispatched * * The [[Publisher]] object of the local participant will dispatch a `streamDestroyed` event. - * This event will automatically stop all media tracks and delete the HTML video element associated to it. - * Call `event.preventDefault()` if you want clean the Publisher object yourself or re-publish it in a different Session. + * This event will automatically stop all media tracks and delete any HTML video element associated to this Publisher + * (only those videos [created by OpenVidu Browser](/docs/how-do-i/manage-videos/#let-openvidu-take-care-of-the-video-players)). + * For every video removed, the Publisher object will dispatch a `videoElementDestroyed` event. + * Call `event.preventDefault()` uppon event `streamDestroyed` if you want to clean the Publisher object on your own or re-publish it in a different Session. * * The [[Session]] object of every other participant connected to the session will dispatch a `streamDestroyed` event. - * This event will automatically unsubscribe the Subscriber object from the session (this includes closing the WebRTCPeer connection and disposing all MediaStreamTracks) and delete the HTML video element associated to it. - * Call `event.preventDefault()` to avoid this default behaviour and take care of disposing and cleaning the Subscriber object yourself. + * This event will automatically unsubscribe the Subscriber object from the session (this includes closing the WebRTCPeer connection and disposing all MediaStreamTracks) and + * delete any HTML video element associated to it (only those [created by OpenVidu Browser](/docs/how-do-i/manage-videos/#let-openvidu-take-care-of-the-video-players)). + * For every video removed, the Subscriber object will dispatch a `videoElementDestroyed` event. + * Call `event.preventDefault()` uppon event `streamDestroyed` to avoid this default behaviour and take care of disposing and cleaning the Subscriber object on your own. * - * See [[StreamEvent]] to learn more. + * See [[StreamEvent]] and [[VideoElementEvent]] to learn more. */ unpublish(publisher: Publisher): void { diff --git a/openvidu-browser/src/OpenVidu/Stream.ts b/openvidu-browser/src/OpenVidu/Stream.ts index 32ede4bd..4fc16e12 100644 --- a/openvidu-browser/src/OpenVidu/Stream.ts +++ b/openvidu-browser/src/OpenVidu/Stream.ts @@ -32,7 +32,7 @@ import * as kurentoUtils from '../OpenViduInternal/KurentoUtils/kurento-utils-js /** * Represents each one of the media streams available in OpenVidu Server for certain session. * Each [[Publisher]] and [[Subscriber]] has an attribute of type Stream, as they give access - * to at least one of them (sending and receiving it, respectively) + * to one of them (sending and receiving it, respectively) */ export class Stream { @@ -48,14 +48,12 @@ export class Stream { frameRate?: number; /** - * Whether the stream has a video track or not. This attribute may change if the Publisher publishing the Stream - * calls [[Publisher.publishVideo]]. You can listen to event [[StreamPropertyChangedEvent]] to know when this happens + * Whether the stream has a video track or not */ hasVideo: boolean; /** - * Whether the stream has an audio track or not. This attribute may change if the Publisher publishing the Stream - * calls [[Publisher.publishAudio]]. You can listen to event [[StreamPropertyChangedEvent]] to know when this happens + * Whether the stream has an audio track or not */ hasAudio: boolean; diff --git a/openvidu-browser/src/OpenVidu/StreamManager.ts b/openvidu-browser/src/OpenVidu/StreamManager.ts index f173a92a..c2529f57 100644 --- a/openvidu-browser/src/OpenVidu/StreamManager.ts +++ b/openvidu-browser/src/OpenVidu/StreamManager.ts @@ -37,8 +37,6 @@ import EventEmitter = require('wolfy87-eventemitter'); */ export class StreamManager implements EventDispatcher { - CURRENTVIDEO: HTMLVideoElement; - /** * The Stream represented in the DOM by the Publisher/Subscriber */ @@ -57,7 +55,7 @@ export class StreamManager implements EventDispatcher { remote: boolean; /** - * The DOM HTMLElement assigned as target element when creating the first video for the Publisher/Subscriber. This property is only defined if: + * The DOM HTMLElement assigned as target element when creating the video for the Publisher/Subscriber. This property is only defined if: * - [[Publisher]] has been initialized by calling method [[OpenVidu.initPublisher]] with a valid `targetElement` parameter * - [[Subscriber]] has been initialized by calling method [[Session.subscribe]] with a valid `targetElement` parameter */ @@ -209,9 +207,8 @@ export class StreamManager implements EventDispatcher { } /** - * Makes `video` element parameter display this Stream. This is useful when you are managing the video elements on your own - * (parameter `targetElement` of methods [[OpenVidu.initPublisher]] or [[Session.subscribe]] is set to *null* or *undefined*) - * or if you want to have multiple video elements displaying the same media stream. + * Makes `video` element parameter display this [[stream]]. This is useful when you are + * [managing the video elements on your own](/docs/how-do-i/manage-videos/#you-take-care-of-the-video-players) * * Calling this method with a video already added to other Publisher/Subscriber will cause the video element to be * disassociated from that previous Publisher/Subscriber and to be associated to this one. @@ -257,10 +254,14 @@ export class StreamManager implements EventDispatcher { } /** - * Creates a new video element displaying this Stream. This allows you to have multiple video elements displaying the same media stream. + * Creates a new video element displaying this [[stream]]. This allows you to have multiple video elements displaying the same media stream. * - * @param targetElement HTML DOM element (or its `id` attribute) in which the video element of the Publisher/Subscriber will be inserted. - * If *null* or *undefined* no default video will be created. You can always call later method [[StreamManager.addVideoElement]] or [[StreamManager.createVideoElement]] + * #### Events dispatched + * + * The Publisher/Subscriber object will dispatch a `videoElementCreated` event once the HTML video element has been added to DOM. See [[VideoElementEvent]] + * + * @param targetElement HTML DOM element (or its `id` attribute) in which the video element of the Publisher/Subscriber will be inserted + * @param insertMode How the video element will be inserted accordingly to `targetElemet` */ createVideoElement(targetElement?: string | HTMLElement, insertMode?: VideoInsertMode): HTMLVideoElement { let targEl; @@ -325,6 +326,10 @@ export class StreamManager implements EventDispatcher { video.controls = false; if (!video.id) { video.id = (this.remote ? 'remote-' : 'local-') + 'video-' + this.stream.streamId; + // DEPRECATED property: assign once the property id if the user provided a valid targetElement + if (!this.id && !!this.targetElement) { + this.id = video.id; + } } if (!this.remote && !this.stream.displayMyRemote()) { video.muted = true; diff --git a/openvidu-browser/src/OpenViduInternal/Enums/OpenViduError.ts b/openvidu-browser/src/OpenViduInternal/Enums/OpenViduError.ts index 125b2912..8206b0b8 100644 --- a/openvidu-browser/src/OpenViduInternal/Enums/OpenViduError.ts +++ b/openvidu-browser/src/OpenViduInternal/Enums/OpenViduError.ts @@ -19,18 +19,81 @@ * Defines property [[OpenViduError.name]] */ export enum OpenViduErrorName { + + /** + * Browser is not supported by OpenVidu. + * Returned uppon unsuccessful [[Session.connect]] + */ BROWSER_NOT_SUPPORTED = 'BROWSER_NOT_SUPPORTED', + + /** + * The user hasn't granted permissions to the required input device when the browser asked for them. + * Returned uppon unsuccessful [[OpenVidu.initPublisher]] or [[OpenVidu.getUserMedia]] + */ DEVICE_ACCESS_DENIED = 'DEVICE_ACCESS_DENIED', + + /** + * The user hasn't granted permissions to capture some desktop screen when the browser asked for them. + * Returned uppon unsuccessful [[OpenVidu.initPublisher]] or [[OpenVidu.getUserMedia]] + */ SCREEN_CAPTURE_DENIED = 'SCREEN_CAPTURE_DENIED', + + /** + * Browser does not support screen sharing. + * Returned uppon unsuccessful [[OpenVidu.initPublisher]] + */ SCREEN_SHARING_NOT_SUPPORTED = 'SCREEN_SHARING_NOT_SUPPORTED', + + /** + * Only for Chrome, there's no screen sharing extension installed + * Returned uppon unsuccessful [[OpenVidu.initPublisher]] + */ SCREEN_EXTENSION_NOT_INSTALLED = 'SCREEN_EXTENSION_NOT_INSTALLED', + + /** + * Only for Chrome, the screen sharing extension is installed but is disabled + * Returned uppon unsuccessful [[OpenVidu.initPublisher]] + */ SCREEN_EXTENSION_DISABLED = 'SCREEN_EXTENSION_DISABLED', + + /** + * No video input device found with the provided deviceId (property [[PublisherProperties.videoSource]]) + * Returned uppon unsuccessful [[OpenVidu.initPublisher]] + */ INPUT_VIDEO_DEVICE_NOT_FOUND = 'INPUT_VIDEO_DEVICE_NOT_FOUND', + + /** + * No audio input device found with the provided deviceId (property [[PublisherProperties.audioSource]]) + * Returned uppon unsuccessful [[OpenVidu.initPublisher]] + */ INPUT_AUDIO_DEVICE_NOT_FOUND = 'INPUT_AUDIO_DEVICE_NOT_FOUND', + + /** + * Method [[OpenVidu.initPublisher]] has been called with properties `videoSource` and `audioSource` of + * [[PublisherProperties]] parameter both set to *false* or *null* + */ NO_INPUT_SOURCE_SET = 'NO_INPUT_SOURCE_SET', + + /** + * Some media property of [[PublisherProperties]] such as `frameRate` or `resolution` is not supported + * by the input devices (whenever it is possible they are automatically adjusted to the most similar value). + * Returned uppon unsuccessful [[OpenVidu.initPublisher]] + */ PUBLISHER_PROPERTIES_ERROR = 'PUBLISHER_PROPERTIES_ERROR', + + /** + * _Not in use yet_ + */ OPENVIDU_PERMISSION_DENIED = 'OPENVIDU_PERMISSION_DENIED', + + /** + * _Not in use yet_ + */ OPENVIDU_NOT_CONNECTED = 'OPENVIDU_NOT_CONNECTED', + + /** + * _Not in use yet_ + */ GENERIC_ERROR = 'GENERIC_ERROR' } diff --git a/openvidu-browser/src/OpenViduInternal/Events/Event.ts b/openvidu-browser/src/OpenViduInternal/Events/Event.ts index 3c1c9c32..a69228ea 100644 --- a/openvidu-browser/src/OpenViduInternal/Events/Event.ts +++ b/openvidu-browser/src/OpenViduInternal/Events/Event.ts @@ -55,10 +55,17 @@ export abstract class Event { /** * Prevents the default behaviour of the event. The following events have a default behaviour: - * - `sessionDisconnected`: automatically unsubscribes the leaving participant from every Subscriber object of the session (this includes closing the WebRTCPeer connection and disposing all MediaStreamTracks) - * and also deletes the HTML video element associated to it. - * - `streamDestroyed`: if dispatched by a [[Publisher]] (_you_ have unpublished), automatically stops all media tracks and deletes the HTML video element associated to the stream. If dispatched by [[Session]], - * (_other user_ has unpublished), automatically unsubscribes the proper Subscriber object from the session (this includes closing the WebRTCPeer connection and disposing all MediaStreamTracks) and deletes the HTML video element associated to it. + * + * - `sessionDisconnected`: dispatched by [[Session]] object, automatically unsubscribes the leaving participant from every Subscriber object of the session (this includes closing the WebRTCPeer connection and disposing all MediaStreamTracks) + * and also deletes any HTML video element associated to each Subscriber (only those created by OpenVidu Browser, either by passing a valid parameter as `targetElement` in method [[Session.subscribe]] or + * by calling [[Subscriber.createVideoElement]]). For every video removed, each Subscriber object will also dispatch a `videoElementDestroyed` event. + * + * - `streamDestroyed`: + * - If dispatched by a [[Publisher]] (*you* have unpublished): automatically stops all media tracks and deletes any HTML video element associated to it (only those created by OpenVidu Browser, either by passing a valid parameter as `targetElement` + * in method [[OpenVidu.initPublisher]] or by calling [[Publisher.createVideoElement]]). For every video removed, the Publisher object will also dispatch a `videoElementDestroyed` event. + * - If dispatched by [[Session]] (*other user* has unpublished): automatically unsubscribes the proper Subscriber object from the session (this includes closing the WebRTCPeer connection and disposing all MediaStreamTracks) + * and also deletes any HTML video element associated to that Subscriber (only those created by OpenVidu Browser, either by passing a valid parameter as `targetElement` in method [[Session.subscribe]] or + * by calling [[Subscriber.createVideoElement]]). For every video removed, the Subscriber object will also dispatch a `videoElementDestroyed` event. */ preventDefault() { // tslint:disable-next-line:no-empty diff --git a/openvidu-browser/src/OpenViduInternal/Events/VideoElementEvent.ts b/openvidu-browser/src/OpenViduInternal/Events/VideoElementEvent.ts index a3c31bc1..ca1077da 100644 --- a/openvidu-browser/src/OpenViduInternal/Events/VideoElementEvent.ts +++ b/openvidu-browser/src/OpenViduInternal/Events/VideoElementEvent.ts @@ -21,8 +21,9 @@ import { StreamManager } from '../../OpenVidu/StreamManager'; /** * Defines the following events: - * - `videoElementCreated`: dispatched by [[Publisher]] and [[Subscriber]] whenever a new HTML video element has been inserted into DOM - * - `videoElementDestroyed`: dispatched by [[Publisher]] and [[Subscriber]] whenever an HTML video element has been removed from DOM + * - `videoElementCreated`: dispatched by [[Publisher]] and [[Subscriber]] whenever a new HTML video element has been inserted into DOM by OpenVidu Browser library. See + * [Manage video players](/docs/how-do-i/manage-videos) section. + * - `videoElementDestroyed`: dispatched by [[Publisher]] and [[Subscriber]] whenever an HTML video element has been removed from DOM by OpenVidu Browser library. */ export class VideoElementEvent extends Event { diff --git a/openvidu-browser/src/OpenViduInternal/Interfaces/Public/PublisherProperties.ts b/openvidu-browser/src/OpenViduInternal/Interfaces/Public/PublisherProperties.ts index 60b382c3..1e38228f 100644 --- a/openvidu-browser/src/OpenViduInternal/Interfaces/Public/PublisherProperties.ts +++ b/openvidu-browser/src/OpenViduInternal/Interfaces/Public/PublisherProperties.ts @@ -49,13 +49,13 @@ export interface PublisherProperties { mirror?: boolean; /** - * Whether to initially publish to the session with the audio unmuted or muted. Only makes sense if property `audioSource` is NOT set to false. You can change the audio state later during the session with [[Publisher.publishAudio]] + * Whether to initially publish to the session with the audio unmuted or muted. Only makes sense if property `audioSource` is NOT set to *false* or *null*. You can change the audio state later during the session with [[Publisher.publishAudio]] * @default true */ publishAudio?: boolean; /** - * Whether to initially publish to the session with the video enabled or disabled. Only makes sense if property `videoSource` is NOT set to false. You can change the video state later during the session with [[Publisher.publishVideo]] + * Whether to initially publish to the session with the video enabled or disabled. Only makes sense if property `videoSource` is NOT set to *false* or *null*. You can change the video state later during the session with [[Publisher.publishVideo]] * @default true */ publishVideo?: boolean;