demo/dist/demo.js
function change(input) {
	    var _this2 = this;

	    if (!getDeep(input, 'sources.length')) {
	      this.debug.warn('Invalid source format');
	      return;
	    } // Cancel current network requests


	    html5.cancelRequests.call(this); // Destroy instance and re-setup

	    this.destroy.call(this, function () {
	      // Reset quality options
	      _this2.options.quality = []; // Remove elements

	      removeElement(_this2.media);
	      _this2.media = null; // Reset class name

	      if (is$1.element(_this2.elements.container)) {
	        _this2.elements.container.removeAttribute('class');
	      } // Set the type and provider


	      var sources = input.sources,
	          type = input.type;

	      var _sources = _slicedToArray(sources, 1),
	          _sources$ = _sources[0],
	          _sources$$provider = _sources$.provider,
	          provider = _sources$$provider === void 0 ? providers.html5 : _sources$$provider,
	          src = _sources$.src;

	      var tagName = provider === 'html5' ? type : 'div';
	      var attributes = provider === 'html5' ? {} : {
	        src: src
	      };
	      Object.assign(_this2, {
	        provider: provider,
	        type: type,
	        // Check for support
	        supported: support.check(type, provider, _this2.config.playsinline),
	        // Create new element
	        media: createElement(tagName, attributes)
	      }); // Inject the new element

	      _this2.elements.container.appendChild(_this2.media); // Autoplay the new source?


	      if (is$1.boolean(input.autoplay)) {
	        _this2.config.autoplay = input.autoplay;
	      } // Set attributes for audio and video


	      if (_this2.isHTML5) {
	        if (_this2.config.crossorigin) {
	          _this2.media.setAttribute('crossorigin', '');
	        }

	        if (_this2.config.autoplay) {
	          _this2.media.setAttribute('autoplay', '');
	        }

	        if (!is$1.empty(input.poster)) {
	          _this2.poster = input.poster;
	        }

	        if (_this2.config.loop.active) {
	          _this2.media.setAttribute('loop', '');
	        }

	        if (_this2.config.muted) {
	          _this2.media.setAttribute('muted', '');
	        }

	        if (_this2.config.playsinline) {
	          _this2.media.setAttribute('playsinline', '');
	        }
	      } // Restore class hook


	      ui.addStyleHook.call(_this2); // Set new sources for html5

	      if (_this2.isHTML5) {
	        source.insertElements.call(_this2, 'source', sources);
	      } // Set video title


	      _this2.config.title = input.title; // Set up from scratch

	      media.setup.call(_this2); // HTML5 stuff

	      if (_this2.isHTML5) {
	        // Setup captions
	        if (Object.keys(input).includes('tracks')) {
	          source.insertElements.call(_this2, 'track', input.tracks);
	        }
	      } // If HTML5 or embed but not fully supported, setupInterface and call ready now


	      if (_this2.isHTML5 || _this2.isEmbed && !_this2.supported.ui) {
	        // Setup interface
	        ui.build.call(_this2);
	      } // Load HTML5 sources


	      if (_this2.isHTML5) {
	        _this2.media.load();
	      } // Reload thumbnails


	      if (_this2.previewThumbnails) {
	        _this2.previewThumbnails.load();
	      } // Update the fullscreen support


	      _this2.fullscreen.update();
	    }, true);
	  }
function change(input) {
	    var _this2 = this;

	    if (!getDeep(input, 'sources.length')) {
	      this.debug.warn('Invalid source format');
	      return;
	    } // Cancel current network requests


	    html5.cancelRequests.call(this); // Destroy instance and re-setup

	    this.destroy.call(this, function () {
	      // Reset quality options
	      _this2.options.quality = []; // Remove elements

	      removeElement(_this2.media);
	      _this2.media = null; // Reset class name

	      if (is$1.element(_this2.elements.container)) {
	        _this2.elements.container.removeAttribute('class');
	      } // Set the type and provider


	      var sources = input.sources,
	          type = input.type;

	      var _sources = _slicedToArray(sources, 1),
	          _sources$ = _sources[0],
	          _sources$$provider = _sources$.provider,
	          provider = _sources$$provider === void 0 ? providers.html5 : _sources$$provider,
	          src = _sources$.src;

	      var tagName = provider === 'html5' ? type : 'div';
	      var attributes = provider === 'html5' ? {} : {
	        src: src
	      };
	      Object.assign(_this2, {
	        provider: provider,
	        type: type,
	        // Check for support
	        supported: support.check(type, provider, _this2.config.playsinline),
	        // Create new element
	        media: createElement(tagName, attributes)
	      }); // Inject the new element

	      _this2.elements.container.appendChild(_this2.media); // Autoplay the new source?


	      if (is$1.boolean(input.autoplay)) {
	        _this2.config.autoplay = input.autoplay;
	      } // Set attributes for audio and video


	      if (_this2.isHTML5) {
	        if (_this2.config.crossorigin) {
	          _this2.media.setAttribute('crossorigin', '');
	        }

	        if (_this2.config.autoplay) {
	          _this2.media.setAttribute('autoplay', '');
	        }

	        if (!is$1.empty(input.poster)) {
	          _this2.poster = input.poster;
	        }

	        if (_this2.config.loop.active) {
	          _this2.media.setAttribute('loop', '');
	        }

	        if (_this2.config.muted) {
	          _this2.media.setAttribute('muted', '');
	        }

	        if (_this2.config.playsinline) {
	          _this2.media.setAttribute('playsinline', '');
	        }
	      } // Restore class hook


	      ui.addStyleHook.call(_this2); // Set new sources for html5

	      if (_this2.isHTML5) {
	        source.insertElements.call(_this2, 'source', sources);
	      } // Set video title


	      _this2.config.title = input.title; // Set up from scratch

	      media.setup.call(_this2); // HTML5 stuff

	      if (_this2.isHTML5) {
	        // Setup captions
	        if (Object.keys(input).includes('tracks')) {
	          source.insertElements.call(_this2, 'track', input.tracks);
	        }
	      } // If HTML5 or embed but not fully supported, setupInterface and call ready now


	      if (_this2.isHTML5 || _this2.isEmbed && !_this2.supported.ui) {
	        // Setup interface
	        ui.build.call(_this2);
	      } // Load HTML5 sources


	      if (_this2.isHTML5) {
	        _this2.media.load();
	      } // Reload thumbnails


	      if (_this2.previewThumbnails) {
	        _this2.previewThumbnails.load();
	      } // Update the fullscreen support


	      _this2.fullscreen.update();
	    }, true);
	  }
function change ( input ) { var _this2 = this ; if ( ! getDeep ( input , 'sources.length' ) ) { this . debug . warn ( 'Invalid source format' ) ; return ; } // Cancel current network requests html5 . cancelRequests . call ( this ) ; // Destroy instance and re-setup this . destroy . call ( this , function ( ) { // Reset quality options _this2 . options . quality = [ ] ; // Remove elements removeElement ( _this2 . media ) ; _this2 . media = null ; // Reset class name if ( is$1 . element ( _this2 . elements . container ) ) { _this2 . elements . container . removeAttribute ( 'class' ) ; } // Set the type and provider var sources = input . sources , type = input . type ; var _sources = _slicedToArray ( sources , 1 ) , _sources$ = _sources [ 0 ] , _sources$$provider = _sources$ . provider , provider = _sources$$provider === void 0 ? providers . html5 : _sources$$provider , src = _sources$ . src ; var tagName = provider === 'html5' ? type : 'div' ; var attributes = provider === 'html5' ? { } : { src : src } ; Object . assign ( _this2 , { provider : provider , type : type , // Check for support supported : support . check ( type , provider , _this2 . config . playsinline ) , // Create new element media : createElement ( tagName , attributes ) } ) ; // Inject the new element _this2 . elements . container . appendChild ( _this2 . media ) ; // Autoplay the new source? if ( is$1 . boolean ( input . autoplay ) ) { _this2 . config . autoplay = input . autoplay ; } // Set attributes for audio and video if ( _this2 . isHTML5 ) { if ( _this2 . config . crossorigin ) { _this2 . media . setAttribute ( 'crossorigin' , '' ) ; } if ( _this2 . config . autoplay ) { _this2 . media . setAttribute ( 'autoplay' , '' ) ; } if ( ! is$1 . empty ( input . poster ) ) { _this2 . poster = input . poster ; } if ( _this2 . config . loop . active ) { _this2 . media . setAttribute ( 'loop' , '' ) ; } if ( _this2 . config . muted ) { _this2 . media . setAttribute ( 'muted' , '' ) ; } if ( _this2 . config . playsinline ) { _this2 . media . setAttribute ( 'playsinline' , '' ) ; } } // Restore class hook ui . addStyleHook . call ( _this2 ) ; // Set new sources for html5 if ( _this2 . isHTML5 ) { source . insertElements . call ( _this2 , 'source' , sources ) ; } // Set video title _this2 . config . title = input . title ; // Set up from scratch media . setup . call ( _this2 ) ; // HTML5 stuff if ( _this2 . isHTML5 ) { // Setup captions if ( Object . keys ( input ) . includes ( 'tracks' ) ) { source . insertElements . call ( _this2 , 'track' , input . tracks ) ; } } // If HTML5 or embed but not fully supported, setupInterface and call ready now if ( _this2 . isHTML5 || _this2 . isEmbed && ! _this2 . supported . ui ) { // Setup interface ui . build . call ( _this2 ) ; } // Load HTML5 sources if ( _this2 . isHTML5 ) { _this2 . media . load ( ) ; } // Reload thumbnails if ( _this2 . previewThumbnails ) { _this2 . previewThumbnails . load ( ) ; } // Update the fullscreen support _this2 . fullscreen . update ( ) ; } , true ) ; }
Update source Sources are not checked for support so be careful
Update source Sources are not checked for support so be careful