Вход Регистрация
Файл: wordpress/wp-includes/js/media-audiovideo.js
Строк: 796
<?php
(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){
/*globals wp, _ */

var media wp.media,
    
baseSettings window._wpmejsSettings || {},
    
l10n window._wpMediaViewsL10n || {};

/**
 * @mixin
 */
wp.media.mixin = {
    
mejsSettingsbaseSettings,

    
removeAllPlayers: function() {
        var 
p;

        if ( 
window.mejs && window.mejs.players ) {
            for ( 
p in window.mejs.players ) {
                
window.mejs.players[p].pause();
                
this.removePlayerwindow.mejs.players[p] );
            }
        }
    },

    
/**
     * Override the MediaElement method for removing a player.
     *    MediaElement tries to pull the audio/video tag out of
     *    its container and re-add it to the DOM.
     */
    
removePlayer: function(t) {
        var 
featureIndexfeature;

        if ( ! 
t.options ) {
            return;
        }

        
// invoke features cleanup
        
for ( featureIndex in t.options.features ) {
            
feature t.options.features[featureIndex];
            if ( 
t['clean' feature] ) {
                try {
                    
t['clean' feature](t);
                } catch (
e) {}
            }
        }

        if ( ! 
t.isDynamic ) {
            
t.$node.remove();
        }

        if ( 
'native' !== t.media.pluginType ) {
            
t.$media.remove();
        }

        
delete window.mejs.players[t.id];

        
t.container.remove();
        
t.globalUnbind();
        
delete t.node.player;
    },

    
/**
     * Allows any class that has set 'player' to a MediaElementPlayer
     *  instance to remove the player when listening to events.
     *
     *  Examples: modal closes, shortcode properties are removed, etc.
     */
    
unsetPlayers : function() {
        if ( 
this.players && this.players.length ) {
            
_.eachthis.players, function (player) {
                
player.pause();
                
wp.media.mixin.removePlayerplayer );
            } );
            
this.players = [];
        }
    }
};

/**
 * Autowire "collection"-type shortcodes
 */
wp.media.playlist = new wp.media.collection({
    
tag'playlist',
    
editTitle l10n.editPlaylistTitle,
    
defaults : {
        
idwp.media.view.settings.post.id,
        
style'light',
        
tracklisttrue,
        
tracknumberstrue,
        
imagestrue,
        
artiststrue,
        
type'audio'
    
}
});

/**
 * Shortcode modeling for audio
 *  `edit()` prepares the shortcode for the media modal
 *  `shortcode()` builds the new shortcode after update
 *
 * @namespace
 */
wp.media.audio = {
    
coerce wp.media.coerce,

    
defaults : {
        
id wp.media.view.settings.post.id,
        
src '',
        
loop false,
        
autoplay false,
        
preload 'none',
        
width 400
    
},

    
edit : function( data ) {
        var 
frameshortcode wp.shortcode.next'audio'data ).shortcode;

        
frame wp.media({
            
frame'audio',
            
state'audio-details',
            
metadata_.defaultsshortcode.attrs.namedthis.defaults )
        });

        return 
frame;
    },

    
shortcode : function( model ) {
        var 
content;

        
_.eachthis.defaults, function( valuekey ) {
            
modelkey ] = this.coercemodelkey );

            if ( 
value === modelkey ] ) {
                
delete modelkey ];
            }
        }, 
this );

        
content model.content;
        
delete model.content;

        return new 
wp.shortcode({
            
tag'audio',
            
attrsmodel,
            
contentcontent
        
});
    }
};

/**
 * Shortcode modeling for video
 *  `edit()` prepares the shortcode for the media modal
 *  `shortcode()` builds the new shortcode after update
 *
 * @namespace
 */
wp.media.video = {
    
coerce wp.media.coerce,

    
defaults : {
        
id wp.media.view.settings.post.id,
        
src '',
        
poster '',
        
loop false,
        
autoplay false,
        
preload 'metadata',
        
content '',
        
width 640,
        
height 360
    
},

    
edit : function( data ) {
        var 
frame,
            
shortcode wp.shortcode.next'video'data ).shortcode,
            
attrs;

        
attrs shortcode.attrs.named;
        
attrs.content shortcode.content;

        
frame wp.media({
            
frame'video',
            
state'video-details',
            
metadata_.defaultsattrsthis.defaults )
        });

        return 
frame;
    },

    
shortcode : function( model ) {
        var 
content;

        
_.eachthis.defaults, function( valuekey ) {
            
modelkey ] = this.coercemodelkey );

            if ( 
value === modelkey ] ) {
                
delete modelkey ];
            }
        }, 
this );

        
content model.content;
        
delete model.content;

        return new 
wp.shortcode({
            
tag'video',
            
attrsmodel,
            
contentcontent
        
});
    }
};

media.model.PostMedia = require( './models/post-media.js' );
media.controller.AudioDetails = require( './controllers/audio-details.js' );
media.controller.VideoDetails = require( './controllers/video-details.js' );
media.view.MediaFrame.MediaDetails = require( './views/frame/media-details.js' );
media.view.MediaFrame.AudioDetails = require( './views/frame/audio-details.js' );
media.view.MediaFrame.VideoDetails = require( './views/frame/video-details.js' );
media.view.MediaDetails = require( './views/media-details.js' );
media.view.AudioDetails = require( './views/audio-details.js' );
media.view.VideoDetails = require( './views/video-details.js' );

},{
"./controllers/audio-details.js":2,"./controllers/video-details.js":3,"./models/post-media.js":4,"./views/audio-details.js":5,"./views/frame/audio-details.js":6,"./views/frame/media-details.js":7,"./views/frame/video-details.js":8,"./views/media-details.js":9,"./views/video-details.js":10}],2:[function(require,module,exports){
/*globals wp */

/**
 * wp.media.controller.AudioDetails
 *
 * The controller for the Audio Details state
 *
 * @class
 * @augments wp.media.controller.State
 * @augments Backbone.Model
 */
var State wp.media.controller.State,
    
l10n wp.media.view.l10n,
    
AudioDetails;

AudioDetails State.extend({
    
defaults: {
        
id'audio-details',
        
toolbar'audio-details',
        
titlel10n.audioDetailsTitle,
        
content'audio-details',
        
menu'audio-details',
        
routerfalse,
        
priority60
    
},

    
initialize: function( options ) {
        
this.media options.media;
        
State.prototype.initialize.applythisarguments );
    }
});

module.exports AudioDetails;

},{}],
3:[function(require,module,exports){
/*globals wp */

/**
 * wp.media.controller.VideoDetails
 *
 * The controller for the Video Details state
 *
 * @class
 * @augments wp.media.controller.State
 * @augments Backbone.Model
 */
var State wp.media.controller.State,
    
l10n wp.media.view.l10n,
    
VideoDetails;

VideoDetails State.extend({
    
defaults: {
        
id'video-details',
        
toolbar'video-details',
        
titlel10n.videoDetailsTitle,
        
content'video-details',
        
menu'video-details',
        
routerfalse,
        
priority60
    
},

    
initialize: function( options ) {
        
this.media options.media;
        
State.prototype.initialize.applythisarguments );
    }
});

module.exports VideoDetails;

},{}],
4:[function(require,module,exports){
/*globals wp, Backbone, _ */

/**
 * wp.media.model.PostMedia
 *
 * Shared model class for audio and video. Updates the model after
 *   "Add Audio|Video Source" and "Replace Audio|Video" states return
 *
 * @class
 * @augments Backbone.Model
 */
var PostMedia Backbone.Model.extend({
    
initialize: function() {
        
this.attachment false;
    },

    
setSource: function( attachment ) {
        
this.attachment attachment;
        
this.extension attachment.get'filename' ).split('.').pop();

        if ( 
this.get'src' ) && this.extension === this.get'src' ).split('.').pop() ) {
            
this.unset( 'src' );
        }

        if ( 
_.containswp.media.view.settings.embedExtsthis.extension ) ) {
            
this.setthis.extensionthis.attachment.get'url' ) );
        } else {
            
this.unset( this.extension );
        }
    },

    
changeAttachment: function( attachment ) {
        
this.setSourceattachment );

        
this.unset( 'src' );
        
_.each_.withoutwp.media.view.settings.embedExtsthis.extension ), function( ext ) {
            
this.unset( ext );
        }, 
this );
    }
});

module.exports PostMedia;

},{}],
5:[function(require,module,exports){
/*globals wp */

/**
 * wp.media.view.AudioDetails
 *
 * @class
 * @augments wp.media.view.MediaDetails
 * @augments wp.media.view.Settings.AttachmentDisplay
 * @augments wp.media.view.Settings
 * @augments wp.media.View
 * @augments wp.Backbone.View
 * @augments Backbone.View
 */
var MediaDetails wp.media.view.MediaDetails,
    
AudioDetails;

AudioDetails MediaDetails.extend({
    
className'audio-details',
    
template:  wp.template('audio-details'),

    
setMedia: function() {
        var 
audio this.$('.wp-audio-shortcode');

        if ( 
audio.find'source' ).length ) {
            if ( 
audio.is(':hidden') ) {
                
audio.show();
            }
            
this.media MediaDetails.prepareSrcaudio.get(0) );
        } else {
            
audio.hide();
            
this.media false;
        }

        return 
this;
    }
});

module.exports AudioDetails;

},{}],
6:[function(require,module,exports){
/*globals wp */

/**
 * wp.media.view.MediaFrame.AudioDetails
 *
 * @class
 * @augments wp.media.view.MediaFrame.MediaDetails
 * @augments wp.media.view.MediaFrame.Select
 * @augments wp.media.view.MediaFrame
 * @augments wp.media.view.Frame
 * @augments wp.media.View
 * @augments wp.Backbone.View
 * @augments Backbone.View
 * @mixes wp.media.controller.StateMachine
 */
var MediaDetails wp.media.view.MediaFrame.MediaDetails,
    
MediaLibrary wp.media.controller.MediaLibrary,

    
l10n wp.media.view.l10n,
    
AudioDetails;

AudioDetails MediaDetails.extend({
    
defaults: {
        
id:      'audio',
        
url:     '',
        
menu:    'audio-details',
        
content'audio-details',
        
toolbar'audio-details',
        
type:    'link',
        
title:    l10n.audioDetailsTitle,
        
priority120
    
},

    
initialize: function( options ) {
        
options.DetailsView wp.media.view.AudioDetails;
        
options.cancelText l10n.audioDetailsCancel;
        
options.addText l10n.audioAddSourceTitle;

        
MediaDetails.prototype.initialize.callthisoptions );
    },

    
bindHandlers: function() {
        
MediaDetails.prototype.bindHandlers.applythisarguments );

        
this.on'toolbar:render:replace-audio'this.renderReplaceToolbarthis );
        
this.on'toolbar:render:add-audio-source'this.renderAddSourceToolbarthis );
    },

    
createStates: function() {
        
this.states.add([
            new 
wp.media.controller.AudioDetails( {
                
mediathis.media
            
} ),

            new 
MediaLibrary( {
                
type'audio',
                
id'replace-audio',
                
titlel10n.audioReplaceTitle,
                
toolbar'replace-audio',
                
mediathis.media,
                
menu'audio-details'
            
} ),

            new 
MediaLibrary( {
                
type'audio',
                
id'add-audio-source',
                
titlel10n.audioAddSourceTitle,
                
toolbar'add-audio-source',
                
mediathis.media,
                
menufalse
            
} )
        ]);
    }
});

module.exports AudioDetails;

},{}],
7:[function(require,module,exports){
/*globals wp */

/**
 * wp.media.view.MediaFrame.MediaDetails
 *
 * @class
 * @augments wp.media.view.MediaFrame.Select
 * @augments wp.media.view.MediaFrame
 * @augments wp.media.view.Frame
 * @augments wp.media.View
 * @augments wp.Backbone.View
 * @augments Backbone.View
 * @mixes wp.media.controller.StateMachine
 */
var Select wp.media.view.MediaFrame.Select,
    
l10n wp.media.view.l10n,
    
MediaDetails;

MediaDetails Select.extend({
    
defaults: {
        
id:      'media',
        
url:     '',
        
menu:    'media-details',
        
content'media-details',
        
toolbar'media-details',
        
type:    'link',
        
priority120
    
},

    
initialize: function( options ) {
        
this.DetailsView options.DetailsView;
        
this.cancelText options.cancelText;
        
this.addText options.addText;

        
this.media = new wp.media.model.PostMediaoptions.metadata );
        
this.options.selection = new wp.media.model.Selectionthis.media.attachment, { multiplefalse } );
        
Select.prototype.initialize.applythisarguments );
    },

    
bindHandlers: function() {
        var 
menu this.defaults.menu;

        
Select.prototype.bindHandlers.applythisarguments );

        
this.on'menu:create:' menuthis.createMenuthis );
        
this.on'content:render:' menuthis.renderDetailsContentthis );
        
this.on'menu:render:' menuthis.renderMenuthis );
        
this.on'toolbar:render:' menuthis.renderDetailsToolbarthis );
    },

    
renderDetailsContent: function() {
        var 
view = new this.DetailsView({
            
controllerthis,
            
modelthis.state().media,
            
attachmentthis.state().media.attachment
        
}).render();

        
this.content.setview );
    },

    
renderMenu: function( view ) {
        var 
lastState this.lastState(),
            
previous lastState && lastState.id,
            
frame this;

        
view.set({
            
cancel: {
                
text:     this.cancelText,
                
priority20,
                
click:    function() {
                    if ( 
previous ) {
                        
frame.setStateprevious );
                    } else {
                        
frame.close();
                    }
                }
            },
            
separateCancel: new wp.media.View({
                
className'separator',
                
priority40
            
})
        });

    },

    
setPrimaryButton: function(texthandler) {
        
this.toolbar.set( new wp.media.view.Toolbar({
            
controllerthis,
            
items: {
                
button: {
                    
style:    'primary',
                    
text:     text,
                    
priority80,
                    
click:    function() {
                        var 
controller this.controller;
                        
handler.callthiscontrollercontroller.state() );
                        
// Restore and reset the default state.
                        
controller.setStatecontroller.options.state );
                        
controller.reset();
                    }
                }
            }
        }) );
    },

    
renderDetailsToolbar: function() {
        
this.setPrimaryButtonl10n.update, function( controllerstate ) {
            
controller.close();
            
state.trigger'update'controller.media.toJSON() );
        } );
    },

    
renderReplaceToolbar: function() {
        
this.setPrimaryButtonl10n.replace, function( controllerstate ) {
            var 
attachment state.get'selection' ).single();
            
controller.media.changeAttachmentattachment );
            
state.trigger'replace'controller.media.toJSON() );
        } );
    },

    
renderAddSourceToolbar: function() {
        
this.setPrimaryButtonthis.addText, function( controllerstate ) {
            var 
attachment state.get'selection' ).single();
            
controller.media.setSourceattachment );
            
state.trigger'add-source'controller.media.toJSON() );
        } );
    }
});

module.exports MediaDetails;

},{}],
8:[function(require,module,exports){
/*globals wp, _ */

/**
 * wp.media.view.MediaFrame.VideoDetails
 *
 * @class
 * @augments wp.media.view.MediaFrame.MediaDetails
 * @augments wp.media.view.MediaFrame.Select
 * @augments wp.media.view.MediaFrame
 * @augments wp.media.view.Frame
 * @augments wp.media.View
 * @augments wp.Backbone.View
 * @augments Backbone.View
 * @mixes wp.media.controller.StateMachine
 */
var MediaDetails wp.media.view.MediaFrame.MediaDetails,
    
MediaLibrary wp.media.controller.MediaLibrary,
    
l10n wp.media.view.l10n,
    
VideoDetails;

VideoDetails MediaDetails.extend({
    
defaults: {
        
id:      'video',
        
url:     '',
        
menu:    'video-details',
        
content'video-details',
        
toolbar'video-details',
        
type:    'link',
        
title:    l10n.videoDetailsTitle,
        
priority120
    
},

    
initialize: function( options ) {
        
options.DetailsView wp.media.view.VideoDetails;
        
options.cancelText l10n.videoDetailsCancel;
        
options.addText l10n.videoAddSourceTitle;

        
MediaDetails.prototype.initialize.callthisoptions );
    },

    
bindHandlers: function() {
        
MediaDetails.prototype.bindHandlers.applythisarguments );

        
this.on'toolbar:render:replace-video'this.renderReplaceToolbarthis );
        
this.on'toolbar:render:add-video-source'this.renderAddSourceToolbarthis );
        
this.on'toolbar:render:select-poster-image'this.renderSelectPosterImageToolbarthis );
        
this.on'toolbar:render:add-track'this.renderAddTrackToolbarthis );
    },

    
createStates: function() {
        
this.states.add([
            new 
wp.media.controller.VideoDetails({
                
mediathis.media
            
}),

            new 
MediaLibrary( {
                
type'video',
                
id'replace-video',
                
titlel10n.videoReplaceTitle,
                
toolbar'replace-video',
                
mediathis.media,
                
menu'video-details'
            
} ),

            new 
MediaLibrary( {
                
type'video',
                
id'add-video-source',
                
titlel10n.videoAddSourceTitle,
                
toolbar'add-video-source',
                
mediathis.media,
                
menufalse
            
} ),

            new 
MediaLibrary( {
                
type'image',
                
id'select-poster-image',
                
titlel10n.videoSelectPosterImageTitle,
                
toolbar'select-poster-image',
                
mediathis.media,
                
menu'video-details'
            
} ),

            new 
MediaLibrary( {
                
type'text',
                
id'add-track',
                
titlel10n.videoAddTrackTitle,
                
toolbar'add-track',
                
mediathis.media,
                
menu'video-details'
            
} )
        ]);
    },

    
renderSelectPosterImageToolbar: function() {
        
this.setPrimaryButtonl10n.videoSelectPosterImageTitle, function( controllerstate ) {
            var 
urls = [], attachment state.get'selection' ).single();

            
controller.media.set'poster'attachment.get'url' ) );
            
state.trigger'set-poster-image'controller.media.toJSON() );

            
_.eachwp.media.view.settings.embedExts, function (ext) {
                if ( 
controller.media.getext ) ) {
                    
urls.pushcontroller.media.getext ) );
                }
            } );

            
wp.ajax.send'set-attachment-thumbnail', {
                
data : {
                    
urlsurls,
                    
thumbnail_idattachment.get'id' )
                }
            } );
        } );
    },

    
renderAddTrackToolbar: function() {
        
this.setPrimaryButtonl10n.videoAddTrackTitle, function( controllerstate ) {
            var 
attachment state.get'selection' ).single(),
                
content controller.media.get'content' );

            if ( -
=== content.indexOfattachment.get'url' ) ) ) {
                
content += [
                    
'<track srclang="en" label="English"kind="subtitles" src="',
                    
attachment.get'url' ),
                    
'" />'
                
].join('');

                
controller.media.set'content'content );
            }
            
state.trigger'add-track'controller.media.toJSON() );
        } );
    }
});

module.exports VideoDetails;

},{}],
9:[function(require,module,exports){
/*global wp, jQuery, _, MediaElementPlayer */

/**
 * wp.media.view.MediaDetails
 *
 * @class
 * @augments wp.media.view.Settings.AttachmentDisplay
 * @augments wp.media.view.Settings
 * @augments wp.media.View
 * @augments wp.Backbone.View
 * @augments Backbone.View
 */
var AttachmentDisplay wp.media.view.Settings.AttachmentDisplay,
    $ = 
jQuery,
    
MediaDetails;

MediaDetails AttachmentDisplay.extend({
    
initialize: function() {
        
_.bindAll(this'success');
        
this.players = [];
        
this.listenTothis.controller'close'wp.media.mixin.unsetPlayers );
        
this.on'ready'this.setPlayer );
        
this.on'media:setting:remove'wp.media.mixin.unsetPlayersthis );
        
this.on'media:setting:remove'this.render );
        
this.on'media:setting:remove'this.setPlayer );
        
this.events _.extendthis.events, {
            
'click .remove-setting' 'removeSetting',
            
'change .content-track' 'setTracks',
            
'click .remove-track' 'setTracks',
            
'click .add-media-source' 'addSource'
        
} );

        
AttachmentDisplay.prototype.initialize.applythisarguments );
    },

    
prepare: function() {
        return 
_.defaults({
            
modelthis.model.toJSON()
        }, 
this.options );
    },

    
/**
     * Remove a setting's UI when the model unsets it
     *
     * @fires wp.media.view.MediaDetails#media:setting:remove
     *
     * @param {Event} e
     */
    
removeSetting : function(e) {
        var 
wrap = $( e.currentTarget ).parent(), setting;
        
setting wrap.find'input' ).data'setting' );

        if ( 
setting ) {
            
this.model.unset( setting );
            
this.trigger'media:setting:remove'this );
        }

        
wrap.remove();
    },

    
/**
     *
     * @fires wp.media.view.MediaDetails#media:setting:remove
     */
    
setTracks : function() {
        var 
tracks '';

        
_.eachthis.$('.content-track'), function(track) {
            
tracks += $( track ).val();
        } );

        
this.model.set'content'tracks );
        
this.trigger'media:setting:remove'this );
    },

    
addSource : function( ) {
        
this.controller.lastMime = $( e.currentTarget ).data'mime' );
        
this.controller.setState'add-' this.controller.defaults.id '-source' );
    },

    
loadPlayer: function () {
        
this.players.push( new MediaElementPlayerthis.mediathis.settings ) );
        
this.scriptXhr false;
    },

    
/**
     * @global MediaElementPlayer
     */
    
setPlayer : function() {
        var 
baseSettings;

        if ( 
this.players.length || ! this.media || this.scriptXhr ) {
            return;
        }

        if ( 
this.model.get'src' ).indexOf'vimeo' ) > -&& ! ( 'Froogaloop' in window ) ) {
            
baseSettings wp.media.mixin.mejsSettings;
            
this.scriptXhr = $.getScriptbaseSettings.pluginPath 'froogaloop.min.js'_.bindthis.loadPlayerthis ) );
        } else {
            
this.loadPlayer();
        }
    },

    
/**
     * @abstract
     */
    
setMedia : function() {
        return 
this;
    },

    
success : function(mejs) {
        var 
autoplay mejs.attributes.autoplay && 'false' !== mejs.attributes.autoplay;

        if ( 
'flash' === mejs.pluginType && autoplay ) {
            
mejs.addEventListener'canplay', function() {
                
mejs.play();
            }, 
false );
        }

        
this.mejs mejs;
    },

    
/**
     * @returns {media.view.MediaDetails} Returns itself to allow chaining
     */
    
render: function() {
        
AttachmentDisplay.prototype.render.applythisarguments );

        
setTimeout_.bind( function() {
            
this.resetFocus();
        }, 
this ), 10 );

        
this.settings _.defaults( {
            
success this.success
        
}, wp.media.mixin.mejsSettings );

        return 
this.setMedia();
    },

    
resetFocus: function() {
        
this.$( '.embed-media-settings' ).scrollTop);
    }
}, {
    
instances 0,
    
/**
     * When multiple players in the DOM contain the same src, things get weird.
     *
     * @param {HTMLElement} elem
     * @returns {HTMLElement}
     */
    
prepareSrc : function( elem ) {
        var 
MediaDetails.instances++;
        
_.each( $( elem ).find'source' ), function( source ) {
            
source.src = [
                
source.src,
                
source.src.indexOf('?') > -'&' '?',
                
'_=',
                
i
            
].join('');
        } );

        return 
elem;
    }
});

module.exports MediaDetails;

},{}],
10:[function(require,module,exports){
/*globals wp */

/**
 * wp.media.view.VideoDetails
 *
 * @class
 * @augments wp.media.view.MediaDetails
 * @augments wp.media.view.Settings.AttachmentDisplay
 * @augments wp.media.view.Settings
 * @augments wp.media.View
 * @augments wp.Backbone.View
 * @augments Backbone.View
 */
var MediaDetails wp.media.view.MediaDetails,
    
VideoDetails;

VideoDetails MediaDetails.extend({
    
className'video-details',
    
template:  wp.template('video-details'),

    
setMedia: function() {
        var 
video this.$('.wp-video-shortcode');

        if ( 
video.find'source' ).length ) {
            if ( 
video.is(':hidden') ) {
                
video.show();
            }

            if ( ! 
video.hasClass'youtube-video' ) && ! video.hasClass'vimeo-video' ) ) {
                
this.media MediaDetails.prepareSrcvideo.get(0) );
            } else {
                
this.media video.get(0);
            }
        } else {
            
video.hide();
            
this.media false;
        }

        return 
this;
    }
});

module.exports VideoDetails;

},{}]},{},[
1]);
?>
Онлайн: 0
Реклама