import { Panorama } from './Panorama';
import { Media } from '../auxiliary/Media';
import { EVENTS } from '../Constants';
/**
* @classdesc Camera panorama
* @description See {@link https://developer.mozilla.org/en-US/docs/Web/API/MediaStreamConstraints|MediaStreamConstraints} for constraints
* @param {object} - camera constraints
* @constructor
*/
function CameraPanorama ( constraints ) {
Panorama.call( this );
this.media = new Media( constraints );
this.type = 'camera_panorama';
this.addEventListener( EVENTS.ENTER, this.start.bind( this ) );
this.addEventListener( EVENTS.LEAVE, this.stop.bind( this ) );
this.addEventListener( EVENTS.CONTAINER, this.onPanolensContainer.bind( this ) );
this.addEventListener( 'panolens-scene', this.onPanolensScene.bind( this ) );
}
CameraPanorama.prototype = Object.assign( Object.create( Panorama.prototype ), {
constructor: CameraPanorama,
/**
* On container event
* @param {object} event
* @memberOf CameraPanorama
* @instance
*/
onPanolensContainer: function ( { container } ) {
this.media.setContainer( container );
},
/**
* On scene event
* @param {object} event
* @memberOf CameraPanorama
* @instance
*/
onPanolensScene: function ( { scene } ) {
this.media.setScene( scene );
},
/**
* Start camera streaming
* @memberOf CameraPanorama
* @instance
* @returns {Promise}
*/
start: function () {
return this.media.start();
},
/**
* Stop camera streaming
* @memberOf CameraPanorama
* @instance
*/
stop: function () {
this.media.stop();
},
} );
export { CameraPanorama };