Spaces:
Sleeping
Sleeping
/* global _wpmejsSettings, mejsL10n */ | |
(function( window, $ ) { | |
window.wp = window.wp || {}; | |
function wpMediaElement() { | |
var settings = {}; | |
/** | |
* Initialize media elements. | |
* | |
* Ensures media elements that have already been initialized won't be | |
* processed again. | |
* | |
* @memberOf wp.mediaelement | |
* | |
* @since 4.4.0 | |
* | |
* @return {void} | |
*/ | |
function initialize() { | |
var selectors = []; | |
if ( typeof _wpmejsSettings !== 'undefined' ) { | |
settings = $.extend( true, {}, _wpmejsSettings ); | |
} | |
settings.classPrefix = 'mejs-'; | |
settings.success = settings.success || function ( mejs ) { | |
var autoplay, loop; | |
if ( mejs.rendererName && -1 !== mejs.rendererName.indexOf( 'flash' ) ) { | |
autoplay = mejs.attributes.autoplay && 'false' !== mejs.attributes.autoplay; | |
loop = mejs.attributes.loop && 'false' !== mejs.attributes.loop; | |
if ( autoplay ) { | |
mejs.addEventListener( 'canplay', function() { | |
mejs.play(); | |
}, false ); | |
} | |
if ( loop ) { | |
mejs.addEventListener( 'ended', function() { | |
mejs.play(); | |
}, false ); | |
} | |
} | |
}; | |
/** | |
* Custom error handler. | |
* | |
* Sets up a custom error handler in case a video render fails, and provides a download | |
* link as the fallback. | |
* | |
* @since 4.9.3 | |
* | |
* @param {object} media The wrapper that mimics all the native events/properties/methods for all renderers. | |
* @param {object} node The original HTML video, audio, or iframe tag where the media was loaded. | |
* @return {string} | |
*/ | |
settings.customError = function ( media, node ) { | |
// Make sure we only fall back to a download link for flash files. | |
if ( -1 !== media.rendererName.indexOf( 'flash' ) || -1 !== media.rendererName.indexOf( 'flv' ) ) { | |
return '<a href="' + node.src + '">' + mejsL10n.strings['mejs.download-file'] + '</a>'; | |
} | |
}; | |
if ( 'undefined' === typeof settings.videoShortcodeLibrary || 'mediaelement' === settings.videoShortcodeLibrary ) { | |
selectors.push( '.wp-video-shortcode' ); | |
} | |
if ( 'undefined' === typeof settings.audioShortcodeLibrary || 'mediaelement' === settings.audioShortcodeLibrary ) { | |
selectors.push( '.wp-audio-shortcode' ); | |
} | |
if ( ! selectors.length ) { | |
return; | |
} | |
// Only initialize new media elements. | |
$( selectors.join( ', ' ) ) | |
.not( '.mejs-container' ) | |
.filter(function () { | |
return ! $( this ).parent().hasClass( 'mejs-mediaelement' ); | |
}) | |
.mediaelementplayer( settings ); | |
} | |
return { | |
initialize: initialize | |
}; | |
} | |
/** | |
* @namespace wp.mediaelement | |
* @memberOf wp | |
*/ | |
window.wp.mediaelement = new wpMediaElement(); | |
$( window.wp.mediaelement.initialize ); | |
})( window, jQuery ); | |