whole_func_string: 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);
  	  }
func_code_string: 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);
  	  }
func_documentation_string: Update source Sources are not checked for support so be careful