: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
if (_constants.IS_ANDROID && /\/mp(3|4)$/i.test(type) || ~['application/x-mpegurl', 'vnd.apple.mpegurl', 'audio/mpegurl', 'audio/hls', 'video/hls'].indexOf(type.toLowerCase()) && _constants.SUPPORTS_NATIVE_HLS) {
} else if (mediaElement.canPlayType) {
return mediaElement.canPlayType(type.toLowerCase()).replace(/no/, '');
create: function create(mediaElement, options, mediaFiles) {
var id = mediaElement.id + '_' + options.prefix;
if (mediaElement.originalNode === undefined || mediaElement.originalNode === null) {
node = _document2.default.createElement('audio');
mediaElement.appendChild(node);
node = mediaElement.originalNode;
node.setAttribute('id', id);
var props = _mejs2.default.html5media.properties,
assignGettersSetters = function assignGettersSetters(propName) {
var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
node['get' + capName] = function () {
node['set' + capName] = function (value) {
if (_mejs2.default.html5media.readOnlyProperties.indexOf(propName) === -1) {
for (var i = 0, _total = props.length; i < _total; i++) {
assignGettersSetters(props[i]);
var events = _mejs2.default.html5media.events.concat(['click', 'mouseover', 'mouseout']).filter(function (e) {
assignEvents = function assignEvents(eventName) {
node.addEventListener(eventName, function (e) {
var _event = (0, _general.createEvent)(e.type, e.target);
mediaElement.dispatchEvent(_event);
for (var _i = 0, _total2 = events.length; _i < _total2; _i++) {
assignEvents(events[_i]);
node.setSize = function (width, height) {
node.style.width = width + 'px';
node.style.height = height + 'px';
node.hide = function () {
node.style.display = 'none';
node.show = function () {
total = mediaFiles.length;
for (; index < total; index++) {
if (_renderer.renderer.renderers[options.prefix].canPlayType(mediaFiles[index].type)) {
node.setAttribute('src', mediaFiles[index].src);
node.addEventListener('error', function (e) {
if (e && e.target && e.target.error && e.target.error.code === 4 && isActive) {
if (index < total && mediaFiles[index + 1] !== undefined) {
node.src = mediaFiles[index++].src;
mediaElement.generateError('Media error: Format(s) not supported or source(s) not found', mediaFiles);
var event = (0, _general.createEvent)('rendererready', node);
mediaElement.dispatchEvent(event);
_window2.default.HtmlMediaElement = _mejs2.default.HtmlMediaElement = HtmlMediaElement;
_renderer.renderer.add(HtmlMediaElement);
},{"16":16,"18":18,"2":2,"3":3,"7":7,"8":8}],15:[function(_dereq_,module,exports){
var _window = _dereq_(3);
var _window2 = _interopRequireDefault(_window);
var _document = _dereq_(2);
var _document2 = _interopRequireDefault(_document);
var _mejs2 = _interopRequireDefault(_mejs);
var _renderer = _dereq_(8);
var _general = _dereq_(18);
var _media = _dereq_(19);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
enqueueIframe: function enqueueIframe(settings) {
YouTubeApi.isLoaded = typeof YT !== 'undefined' && YT.loaded;
if (YouTubeApi.isLoaded) {
YouTubeApi.createIframe(settings);
YouTubeApi.loadIframeApi();
YouTubeApi.iframeQueue.push(settings);
loadIframeApi: function loadIframeApi() {
if (!YouTubeApi.isIframeStarted) {
(0, _dom.loadScript)('https://www.youtube.com/player_api');
YouTubeApi.isIframeStarted = true;
iFrameReady: function iFrameReady() {
YouTubeApi.isLoaded = true;
YouTubeApi.isIframeLoaded = true;
while (YouTubeApi.iframeQueue.length > 0) {
var settings = YouTubeApi.iframeQueue.pop();
YouTubeApi.createIframe(settings);
createIframe: function createIframe(settings) {
return new YT.Player(settings.containerId, settings);
getYouTubeId: function getYouTubeId(url) {
if (url.indexOf('?') > 0) {
youTubeId = YouTubeApi.getYouTubeIdFromParam(url);
youTubeId = YouTubeApi.getYouTubeIdFromUrl(url);
youTubeId = YouTubeApi.getYouTubeIdFromUrl(url);
var id = youTubeId.substring(youTubeId.lastIndexOf('/') + 1);
youTubeId = id.split('?');
getYouTubeIdFromParam: function getYouTubeIdFromParam(url) {
if (url === undefined || url === null || !url.trim().length) {
var parts = url.split('?'),
parameters = parts[1].split('&');
for (var i = 0, total = parameters.length; i < total; i++) {
var paramParts = parameters[i].split('=');
if (paramParts[0] === 'v') {
youTubeId = paramParts[1];
getYouTubeIdFromUrl: function getYouTubeIdFromUrl(url) {
if (url === undefined || url === null || !url.trim().length) {
var parts = url.split('?');
return url.substring(url.lastIndexOf('/') + 1);
getYouTubeNoCookieUrl: function getYouTubeNoCookieUrl(url) {
if (url === undefined || url === null || !url.trim().length || url.indexOf('//www.youtube') === -1) {
var parts = url.split('/');
parts[2] = parts[2].replace('.com', '-nocookie.com');
var YouTubeIframeRenderer = {
prefix: 'youtube_iframe',
canPlayType: function canPlayType(type) {
return ~['video/youtube', 'video/x-youtube'].indexOf(type.toLowerCase());
create: function create(mediaElement, options, mediaFiles) {
youtube.options = options;
youtube.id = mediaElement.id + '_' + options.prefix;
youtube.mediaElement = mediaElement;
var props = _mejs2.default.html5media.properties,
assignGettersSetters = function assignGettersSetters(propName) {
var capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
youtube['get' + capName] = function () {
if (youTubeApi !== null) {
return youTubeApi.getCurrentTime();
return youTubeApi.getDuration();
volume = youTubeApi.getVolume() / 100;
return youTubeApi.getPlaybackRate();
return youTubeApi.isMuted();
var percentLoaded = youTubeApi.getVideoLoadedFraction(),
duration = youTubeApi.getDuration();
start: function start() {
return percentLoaded * duration;
return youTubeApi.getVideoUrl();
youtube['set' + capName] = function (value) {
if (youTubeApi !== null) {
var url = typeof value === 'string' ? value : value[0].src,
_videoId = YouTubeApi.getYouTubeId(url);
if (mediaElement.originalNode.autoplay) {
youTubeApi.loadVideoById(_videoId);
youTubeApi.cueVideoById(_videoId);
youTubeApi.seekTo(value);
var event = (0, _general.createEvent)('volumechange', youtube);
mediaElement.dispatchEvent(event);
youTubeApi.setVolume(value * 100);
var event = (0, _general.createEvent)('volumechange', youtube);
mediaElement.dispatchEvent(event);
youTubeApi.setPlaybackRate(value);
var event = (0, _general.createEvent)('ratechange', youtube);
mediaElement.dispatchEvent(event);
var event = (0, _general.createEvent)('canplay', youtube);
mediaElement.dispatchEvent(event);
apiStack.push({ type: 'set', propName: propName, value: value });
for (var i = 0, total = props.length; i < total; i++) {
assignGettersSetters(props[i]);
var methods = _mejs2.default.html5media.methods,
assignMethods = function assignMethods(methodName) {
youtube[methodName] = function () {
if (youTubeApi !== null) {
return youTubeApi.playVideo();
return youTubeApi.pauseVideo();
apiStack.push({ type: 'call', methodName: methodName });
for (var _i = 0, _total = methods.length; _i < _total; _i++) {
assignMethods(methods[_i]);
var errorHandler = function errorHandler(error) {
message = 'The request contains an invalid parameter value. Verify that video ID has 11 characters and that contains no invalid characters, such as exclamation points or asterisks.';
message = 'The requested content cannot be played in an HTML5 player or another error related to the HTML5 player has occurred.';
message = 'The video requested was not found. Either video has been removed or has been marked as private.';
message = 'The owner of the requested video does not allow it to be played in embedded players.';
message = 'Unknown error.';
mediaElement.generateError('Code ' + error.data + ': ' + message, mediaFiles);
var youtubeContainer = _document2.default.createElement('div');
youtubeContainer.id = youtube.id;
if (youtube.options.youtube.nocookie) {
mediaElement.originalNode.src = YouTubeApi.getYouTubeNoCookieUrl(mediaFiles[0].src);
mediaElement.originalNode.parentNode.insertBefore(youtubeContainer, mediaElement.originalNode);
mediaElement.originalNode.style.display = 'none';
var isAudio = mediaElement.originalNode.tagName.toLowerCase() === 'audio',
height = isAudio ? '1' : mediaElement.originalNode.height,
width = isAudio ? '1' : mediaElement.originalNode.width,
videoId = YouTubeApi.getYouTubeId(mediaFiles[0].src),
containerId: youtubeContainer.id,
host: youtube.options.youtube && youtube.options.youtube.nocookie ? 'https://www.youtube-nocookie.com' : undefined,
playerVars: Object.assign({
}, youtube.options.youtube),
origin: _window2.default.location.host,
onReady: function onReady(e) {
mediaElement.youTubeApi = youTubeApi = e.target;
mediaElement.youTubeState = {
for (var _i2 = 0, _total2 = apiStack.length; _i2 < _total2; _i2++) {
var stackItem = apiStack[_i2];
if (stackItem.type === 'set') {
var propName = stackItem.propName,
capName = '' + propName.substring(0, 1).toUpperCase() + propName.substring(1);
youtube['set' + capName](stackItem.value);
} else if (stackItem.type === 'call') {
youtube[stackItem.methodName]();
youTubeIframe = youTubeApi.getIframe();