--- a/wp/wp-includes/js/mediaelement/wp-mediaelement.js Tue Jun 09 11:14:17 2015 +0000
+++ b/wp/wp-includes/js/mediaelement/wp-mediaelement.js Mon Oct 14 17:39:30 2019 +0200
@@ -1,34 +1,82 @@
-/* global mejs, _wpmejsSettings */
-(function ($) {
- // add mime-type aliases to MediaElement plugin support
- mejs.plugins.silverlight[0].types.push('video/x-ms-wmv');
- mejs.plugins.silverlight[0].types.push('audio/x-ms-wma');
+/* global _wpmejsSettings, mejsL10n */
+(function( window, $ ) {
- $(function () {
+ window.wp = window.wp || {};
+
+ function wpMediaElement() {
var settings = {};
- if ( typeof _wpmejsSettings !== 'undefined' ) {
- settings = _wpmejsSettings;
+ /**
+ * Initialize media elements.
+ *
+ * Ensures media elements that have already been initialized won't be
+ * processed again.
+ *
+ * @since 4.4.0
+ *
+ * @returns {void}
+ */
+ function initialize() {
+ 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.
+ * @returns {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-video'] + '</a>';
+ }
+ };
+
+ // Only initialize new media elements.
+ $( '.wp-audio-shortcode, .wp-video-shortcode' )
+ .not( '.mejs-container' )
+ .filter(function () {
+ return ! $( this ).parent().hasClass( 'mejs-mediaelement' );
+ })
+ .mediaelementplayer( settings );
}
- settings.success = settings.success || function (mejs) {
- var autoplay, loop;
-
- if ( 'flash' === mejs.pluginType ) {
- autoplay = mejs.attributes.autoplay && 'false' !== mejs.attributes.autoplay;
- loop = mejs.attributes.loop && 'false' !== mejs.attributes.loop;
-
- autoplay && mejs.addEventListener( 'canplay', function () {
- mejs.play();
- }, false );
+ return {
+ initialize: initialize
+ };
+ }
- loop && mejs.addEventListener( 'ended', function () {
- mejs.play();
- }, false );
- }
- };
+ window.wp.mediaelement = new wpMediaElement();
- $('.wp-audio-shortcode, .wp-video-shortcode').mediaelementplayer( settings );
- });
+ $( window.wp.mediaelement.initialize );
-}(jQuery));
+})( window, jQuery );