1/** 2 * Comment Likes - JavaScript 3 * 4 * This handles liking and unliking comments, as well as viewing who has 5 * liked a particular comment. 6 * 7 * @dependency Swipe (dynamically loaded when needed) 8 * 9 * @package Comment_Likes 10 * @subpackage JavaScript 11 */ 12(function () { 13 function init() { 14 let extWin; 15 let extWinCheck; 16 let commentLikeEvent; 17 18 // Only run once. 19 if (window.comment_likes_loaded) { 20 return; 21 } 22 window.comment_likes_loaded = true; 23 24 // Client-side cache of who liked a particular comment to avoid 25 // having to hit the server multiple times for the same data. 26 const commentLikeCache = {}; 27 28 let swipeLibPromise; 29 30 // Load the Swipe library, if it's not already loaded. 31 function swipeLibLoader() { 32 if (!swipeLibPromise) { 33 swipeLibPromise = new Promise((resolve, reject) => { 34 if (window.Swipe) { 35 resolve(window.Swipe); 36 } else { 37 const swipeScript = document.createElement('script'); 38 swipeScript.src = comment_like_text.swipeUrl; 39 swipeScript.async = true; 40 document.body.appendChild(swipeScript); 41 swipeScript.addEventListener('load', () => resolve(window.Swipe)); 42 swipeScript.addEventListener('error', error => reject(error)); 43 } 44 }); 45 } 46 return swipeLibPromise; 47 } 48 49 /** 50 * Parse the comment ID from a comment like link. 51 */ 52 function getCommentId(link) { 53 const commentId = 54 link && link.getAttribute('href') && link.getAttribute('href').split('like_comment='); 55 return commentId[1].split('&_wpnonce=')[0]; 56 } 57 58 /** 59 * Handle an ajax action on the comment like link. 60 */ 61 function handleLinkAction(link, action, commentId, callback) { 62 const nonce = 63 link && link.getAttribute('href') && link.getAttribute('href').split('_wpnonce=')[1]; 64 65 fetch('/wp-admin/admin-ajax.php', { 66 method: 'POST', 67 body: new URLSearchParams({ 68 action: action, 69 _wpnonce: nonce, 70 like_comment: commentId, 71 blog_id: Number(link.dataset.blog), 72 }), 73 headers: { 74 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8', 75 'X-Requested-With': 'XMLHttpRequest', 76 Accept: 'application/json', 77 'cache-control': 'no-cache', 78 pragma: 'no-cache', 79 }, 80 }) 81 .then(response => response.json()) 82 .then(callback); 83 } 84 85 function startPolling() { 86 // Append cookie polling login iframe to this window to wait for user to finish logging in (or cancel) 87 const loginIframe = document.createElement('iframe'); 88 loginIframe.id = 'wp-login-polling-iframe'; 89 loginIframe.src = 'https://wordpress.com/public.api/connect/?iframe=true'; 90 document.body.appendChild(loginIframe); 91 loginIframe.style.display = 'none'; 92 } 93 94 function stopPolling() { 95 const iframe = document.querySelector('#wp-login-polling-iframe'); 96 if (iframe) { 97 iframe.remove(); 98 } 99 } 100 101 function hide(el) { 102 if (el && el.style) { 103 el.style.display = 'none'; 104 } 105 } 106 107 function show(el) { 108 if (el && el.style) { 109 el.style.removeProperty('display'); 110 } 111 } 112 113 // Overlay used for displaying comment like info. 114 class Overlay { 115 constructor() { 116 // Overlay element. 117 this.el = document.createElement('div'); 118 this.el.classList.add('comment-likes-overlay'); 119 document.body.appendChild(this.el); 120 hide(this.el); 121 122 this.el.addEventListener('mouseenter', () => { 123 // Don't hide the overlay if the user is mousing over it. 124 overlay.cancelHide(); 125 }); 126 127 this.el.addEventListener('mouseleave', () => overlay.requestHide()); 128 129 // Inner contents of overlay. 130 this.innerEl = null; 131 132 // Instance of the Swipe library. 133 this.swipe = null; 134 135 // Timeout used for hiding the overlay. 136 this.hideTimeout = null; 137 } 138 139 // Initialise the overlay for use, removing any old content. 140 clear() { 141 // Unload any previous instance of Swipe (to avoid leaking a global 142 // event handler). This is done before clearing the contents of the 143 // overlay because Swipe expects the slides to still be present. 144 if (this.swipe) { 145 this.swipe.kill(); 146 this.swipe = null; 147 } 148 this.el.innerHTML = ''; 149 this.innerEl = document.createElement('div'); 150 this.innerEl.classList.add('inner'); 151 this.el.appendChild(this.innerEl); 152 } 153 154 /** 155 * Construct a list (<ul>) of user (gravatar, name) details. 156 * 157 * @param data liker data returned from the server 158 * @param klass CSS class to apply to the <ul> element 159 * @param start index of user to start at 160 * @param length number of users to include in the list 161 * 162 * @return A container element with the list 163 */ 164 getUserBits(data, klass, start, length) { 165 start = start || 0; 166 let last = start + (length || data.length); 167 last = last > data.length ? data.length : last; 168 const container = document.createElement('div'); 169 container.classList.add('liker-list'); 170 let html = `<ul class="${klass || ''}">`; 171 for (let i = start; i < last; ++i) { 172 const user = data[i]; 173 html += ` 174 <li> 175 <a rel="nofollow" title="${user.display_name_esc}" href="${user.profile_url_esc}"> 176 <img src="${user.avatar_url_esc}" alt="${user.display_name_esc}" /> 177 <span class="user-name">${user.display_name_esc}</span> 178 </a> 179 </li> 180 `; 181 } 182 html += '</ul>'; 183 container.innerHTML = html; 184 return container; 185 } 186 187 /** 188 * Render the display of who has liked this comment. The type of 189 * display depends on how many people have liked the comment. 190 * If more than 10 people have liked the comment, this function 191 * renders navigation controls and sets up the Swipe library for 192 * changing between pages. 193 * 194 * @param link the element over which the user is hovering 195 * @param data the results retrieved from the server 196 */ 197 showLikes(link, data) { 198 this.clear(); 199 200 link.dataset.likeCount = data.length; 201 if (data.length === 0) { 202 // No likers after all. 203 hide(this.el); 204 return; 205 } 206 207 this.innerEl.style.padding = '12px'; 208 209 if (data.length < 6) { 210 // Only one column needed. 211 this.innerEl.style.maxWidth = '200px'; 212 this.innerEl.innerHTML = ''; 213 this.innerEl.appendChild(this.getUserBits(data, 'single')); 214 this.setPosition(link); 215 } else if (data.length < 11) { 216 // Two columns, but only one page. 217 this.innerEl.innerHTML = ''; 218 this.innerEl.appendChild(this.getUserBits(data, 'double')); 219 this.setPosition(link); 220 } else { 221 // Multiple pages. 222 this.renderLikesWithPagination(data, link); 223 } 224 } 225 226 /**
227 * Render multiple pages of likes with pagination controls. 228 * This function is intended to be called by `showLikes` above. 229 * 230 * @param data the results retrieved from the server 231 */ 232 renderLikesWithPagination(data, link) { 233 swipeLibLoader().then(() => { 234 const page_count = Math.ceil(data.length / 10); 235 // Swipe requires two nested containers. 236 const swipe = document.createElement('div'); 237 swipe.classList.add('swipe'); 238 this.innerEl.appendChild(swipe); 239 240 const wrap = document.createElement('div'); 241 wrap.classList.add('swipe-wrap'); 242 swipe.appendChild(wrap); 243 244 for (let i = 0; i < page_count; ++i) { 245 wrap.appendChild(this.getUserBits(data, 'double', i * 10, 10)); 246 } 247 248 /** 249 * Navigation controls. 250 * This is based on the Newdash controls found in 251 * reader/recommendations-templates.php 252 */ 253 const nav = document.createElement('nav'); 254 nav.classList.add('slider-nav'); 255 256 let navContents = ` 257 <a href="#" class="prev"> 258 <span class="noticon noticon-previous" title="Previous" alt="<"></span> 259 </a> 260 <span class="position"> 261 `; 262 for (let i = 0; i < page_count; ++i) { 263 navContents += `<em data-page="${i}" class="${i === 0 ? 'on' : ''}">•</em>`; 264 } 265 navContents += ` 266 </span> 267 <a href="#" class="next"> 268 <span class="noticon noticon-next" title="Next" alt=">"></span> 269 </a> 270 `; 271 this.innerEl.appendChild(nav); 272 nav.innerHTML = navContents; 273 274 /** Set up Swipe. **/ 275 // Swipe cannot be set up successfully unless its container 276 // is visible, so we show it now. 277 show(this.el); 278 this.setPosition(link); 279 280 this.swipe = new Swipe(swipe, { 281 callback: function (pos) { 282 // Update the pagination indicators. 283 // 284 // If there are exactly two pages, Swipe has a weird 285 // special case where it duplicates both pages and 286 // can return index 2 and 3 even though those aren't 287 // real pages (see swipe.js, line 47). To deal with 288 // this, we use the expression `pos % page_count`. 289 pos = pos % page_count; 290 nav.querySelectorAll('em').forEach(em => { 291 const page = Number(em.dataset.page); 292 em.setAttribute('class', pos === page ? 'on' : ''); 293 }); 294 }, 295 }); 296 297 nav.querySelectorAll('em').forEach(em => { 298 em.addEventListener('click', e => { 299 // Go to the page corresponding to the indicator clicked. 300 this.swipe.slide(Number(em.dataset.page)); 301 e.preventDefault(); 302 }); 303 }); 304 // Previous and next buttons. 305 nav.querySelector('.prev').addEventListener('click', e => { 306 this.swipe.prev(); 307 e.preventDefault(); 308 }); 309 nav.querySelector('.next').addEventListener('click', e => { 310 this.swipe.next(); 311 e.preventDefault(); 312 }); 313 }); 314 } 315 316 /** 317 * Open the overlay and show a loading message. 318 */ 319 showLoadingMessage(link) { 320 this.clear(); 321 this.innerEl.textContent = comment_like_text.loading; 322 this.setPosition(link); 323 } 324 325 /** 326 * Position the overlay near the current comment. 327 * 328 * @param link element near which to position the overlay 329 */ 330 setPosition(link) { 331 // Prepare a down arrow icon for the bottom of the overlay. 332 const icon = document.createElement('span'); 333 this.el.appendChild(icon); 334 icon.classList.add('icon', 'noticon', 'noticon-downarrow'); 335 icon.style.textShadow = '0px 1px 1px rgb(223, 223, 223)'; 336 337 const rect = link.getBoundingClientRect(); 338 const win = document.defaultView; 339 const offset = { 340 top: rect.top + win.scrollY, 341 left: rect.left + win.scrollX, 342 }; 343 344 // Take measurements with the element fully visible. 345 show(this.el); 346 let left = offset.left - (this.el.offsetWidth - link.offsetWidth) / 2; 347 left = left < 5 ? 5 : left; 348 let top = offset.top - this.el.offsetHeight + 5; 349 hide(this.el); 350 351 const adminBar = document.querySelector('#wpadminbar'); 352 353 // Check if the overlay would appear off the screen. 354 if (top < win.scrollY + ((adminBar && adminBar.offsetHeight) || 0)) { 355 // We'll display the overlay beneath the link instead. 356 top = offset.top + link.offsetHeight; 357 // Instead of using the down arrow icon, use an up arrow. 358 icon.remove(); 359 this.el.prepend(icon); 360 icon.classList.remove('noticon-downarrow'); 361 icon.classList.add('noticon-uparrow'); 362 icon.style.textShadow = '0px -1px 1px rgb(223, 223, 223)'; 363 icon.style.verticalAlign = 'bottom'; 364 } 365 366 this.el.style.left = `${left}px`; 367 this.el.style.top = `${top}px`; 368 show(this.el); 369 370 // The height of the arrow icon differs slightly between browsers, 371 // so we compute the margin here to make sure it isn't disjointed 372 // from the overlay. 373 icon.style.marginTop = `${icon.scrollHeight - 26}px`; 374 icon.style.marginBottom = `${20 - icon.scrollHeight}px`; 375 376 // Position the arrow to be horizontally centred on the link. 377 icon.style.paddingLeft = `${ 378 offset.left - left + (link.offsetWidth - icon.scrollWidth) / 2 379 }px`; 380 } 381 382 /** 383 * Return whether the overlay is visible. 384 */ 385 isVisible() { 386 return this.el.style.getPropertyValue('display') !== 'none'; 387 } 388 389 /** 390 * Request that the overlay be hidden after a short delay. 391 */ 392 requestHide() { 393 if (this.hideTimeout !== null) { 394 return; 395 } 396 this.hideTimeout = setTimeout(() => { 397 hide(this.el); 398 this.clear(); 399 }, 300); 400 } 401 402 /** 403 * Cancel a request to hide the overlay. 404 */ 405 cancelHide() { 406 if (this.hideTimeout !== null) { 407 clearTimeout(this.hideTimeout); 408 this.hideTimeout = null; 409 } 410 } 411 } 412 413 // Overlay used for displaying comment like info.
414 const overlay = new Overlay(); 415 416 // The most recent comment for which the user has requested to see 417 // who liked it. 418 var relevantComment; 419 420 // Precache after this timeout. 421 var precacheTimeout = null; 422 423 /** 424 * Fetch the like data for a particular comment. 425 */ 426 function fetchLikeData(link, commentId) { 427 commentLikeCache[commentId] = null; 428 429 const container = link && link.parentElement && link.parentElement.parentElement; 430 const star = container.querySelector('a.comment-like-link'); 431 star && 432 handleLinkAction(star, 'view_comment_likes', commentId, data => { 433 // Populate the cache. 434 commentLikeCache[commentId] = data; 435 436 // Only show the overlay if the user is interested. 437 if (overlay.isVisible() && relevantComment === commentId) { 438 overlay.showLikes(link, data); 439 } 440 }); 441 } 442 443 function readCookie(c) { 444 const nameEQ = c + '='; 445 const cookieStrings = document.cookie.split(';'); 446 447 for (let i = 0; i < cookieStrings.length; i++) { 448 let cookieString = cookieStrings[i]; 449 while (cookieString.charAt(0) === ' ') { 450 cookieString = cookieString.substring(1, cookieString.length); 451 } 452 if (cookieString.indexOf(nameEQ) === 0) { 453 const chunk = cookieString.substring(nameEQ.length, cookieString.length); 454 const pairs = chunk.split('&'); 455 const cookieData = {}; 456 for (let num = pairs.length - 1; num >= 0; num--) { 457 const pair = pairs[num].split('='); 458 cookieData[pair[0]] = decodeURIComponent(pair[1]); 459 } 460 return cookieData; 461 } 462 } 463 return null; 464 } 465 466 function getServiceData() { 467 const data = readCookie('wpc_wpc'); 468 if (data === null || typeof data.access_token === 'undefined' || !data.access_token) { 469 return false; 470 } 471 return data; 472 } 473 474 function readMessage(msg) { 475 const event = msg.data; 476 477 if (typeof event.event === 'undefined') { 478 return; 479 } 480 481 if (event.event === 'login' && event.success) { 482 extWinCheck = setInterval(function () { 483 if (!extWin || extWin.closed) { 484 clearInterval(extWinCheck); 485 if (getServiceData()) { 486 // Load page in an iframe to get the current comment nonce 487 const nonceIframe = document.createElement('iframe'); 488 nonceIframe.id = 'wp-login-comment-nonce-iframe'; 489 nonceIframe.style.display = 'none'; 490 nonceIframe.src = commentLikeEvent + ''; 491 document.body.appendChild(nonceIframe); 492 493 const commentLikeId = (commentLikeEvent + '') 494 .split('like_comment=')[1] 495 .split('&_wpnonce=')[0]; 496 let c; 497 498 // Set a 5 second timeout to redirect to the comment page without doing the Like as a fallback 499 const commentLikeTimeout = setTimeout(() => { 500 window.location = commentLikeEvent; 501 }, 5000); 502 503 // Check for a new nonced redirect and use that if available before timing out 504 const commentLikeCheck = setInterval(() => { 505 const iframe = document.querySelector('#wp-login-comment-nonce-iframe'); 506 if (iframe) { 507 c = iframe.querySelector(`#comment-like-${commentLikeId} .comment-like-link`); 508 } 509 if (c && typeof c.href !== 'undefined') { 510 clearTimeout(commentLikeTimeout); 511 clearInterval(commentLikeCheck); 512 window.location = c.href; 513 } 514 }, 100); 515 } 516 } 517 }, 100); 518 519 if (extWin) { 520 if (!extWin.closed) { 521 extWin.close(); 522 } 523 extWin = false; 524 } 525 526 stopPolling(); 527 } 528 } 529 530 if (typeof window.postMessage !== 'undefined') { 531 window.addEventListener('message', e => { 532 let message = e && e.data; 533 if (typeof message === 'string') { 534 try { 535 message = JSON.parse(message); 536 } catch (err) { 537 return; 538 } 539 } 540 541 const type = message && message.type; 542 if (type === 'loginMessage') { 543 readMessage(message); 544 } 545 }); 546 } 547 548 document.body.addEventListener('click', e => { 549 let target = e.target; 550 551 // Don't do anything when clicking on the "X people" link. 552 if (target.matches('p.comment-likes a.view-likers')) { 553 e.preventDefault(); 554 return; 555 } 556 557 // Retrieve the surrounding paragraph to the star, if it hasn't been liked. 558 const notLikedPar = target.closest('p.comment-not-liked'); 559 560 // Return if not clicking on star or surrounding paragraph. 561 if (!target.matches('a.comment-like-link') && !notLikedPar) { 562 return; 563 } 564 565 // When a comment hasn't been liked, make the text clickable, too. 566 if (notLikedPar) { 567 target = notLikedPar.querySelector('a.comment-like-link'); 568 if (!target) { 569 return; 570 } 571 } 572 573 if (target.classList.contains('needs-login')) { 574 e.preventDefault(); 575 commentLikeEvent = target; 576 if (extWin) { 577 if (!extWin.closed) { 578 extWin.close(); 579 } 580 extWin = false;
581 } 582 583 stopPolling(); 584 585 const url = 'https://wordpress.com/public.api/connect/?action=request&service=wordpress'; 586 extWin = window.open( 587 url, 588 'likeconn', 589 'status=0,toolbar=0,location=1,menubar=0,directories=0,resizable=1,scrollbars=1,height=560,width=500' 590 ); 591 592 startPolling(); 593 594 return false; 595 } 596 597 // Record that the user likes or does not like this comment. 598 const commentId = getCommentId(target); 599 target.classList.add('loading'); 600 601 let commentEl = document.querySelector(`p#comment-like-${commentId}`); 602 // Determine whether to like or unlike based on whether the comment is 603 // currently liked. 604 const action = 605 commentEl && commentEl.dataset.liked === 'comment-liked' 606 ? 'unlike_comment' 607 : 'like_comment'; 608 handleLinkAction(target, action, commentId, data => { 609 // Invalidate the like cache for this comment. 610 delete commentLikeCache[commentId]; 611 612 const countEl = document.querySelector(`#comment-like-count-${data.context}`); 613 if (countEl) { 614 countEl.innerHTML = data.display; 615 } 616 617 commentEl = document.querySelector(`p#comment-like-${data.context}`); 618 if (action === 'like_comment') { 619 commentEl.classList.remove('comment-not-liked'); 620 commentEl.classList.add('comment-liked'); 621 commentEl.dataset.liked = 'comment-liked'; 622 } else { 623 commentEl.classList.remove('comment-liked'); 624 commentEl.classList.add('comment-not-liked'); 625 commentEl.dataset.liked = 'comment-not-liked'; 626 } 627 628 // Prefetch new data for this comment (if there are likers left). 629 const parent = target.closest('.comment-likes'); 630 const link = parent && parent.querySelector('a.view-likers'); 631 if (link) { 632 fetchLikeData(link, commentId); 633 } 634 635 target.classList.remove('loading'); 636 }); 637 e.preventDefault(); 638 e.stopPropagation(); 639 }); 640 641 document.body.addEventListener( 642 'mouseenter', 643 function (e) { 644 if (!e.target.matches('p.comment-likes a.view-likers')) { 645 return; 646 } 647 // Show the user a list of who has liked this comment. 648 649 const link = e.target; 650 if (Number(link.dataset.likeCount || 0) === 0) { 651 // No one has liked this comment. 652 return; 653 } 654 655 // Don't hide the overlay. 656 overlay.cancelHide(); 657 658 // Get the comment ID. 659 const container = link.parentElement && link.parentElement.parentElement; 660 const star = container && container.querySelector('a.comment-like-link'); 661 const commentId = star && getCommentId(star); 662 relevantComment = commentId; 663 664 // Check if the list of likes for this comment is already in 665 // the cache. 666 if (commentId in commentLikeCache) { 667 const entry = commentLikeCache[commentId];
668 // Only display the likes if the ajax request is 669 // actually done. 670 if (entry !== null) { 671 overlay.showLikes(link, entry); 672 } else { 673 // Make sure the overlay is visible (in case 674 // the user moved the mouse away while loading 675 // but then came back before it finished 676 // loading). 677 overlay.showLoadingMessage(link); 678 } 679 return; 680 } 681 682 // Position the "Loading..." overlay. 683 overlay.showLoadingMessage(link); 684 685 // Fetch the data. 686 fetchLikeData(link, commentId); 687 }, 688 true 689 ); 690 691 document.body.addEventListener( 692 'mouseleave', 693 e => { 694 if (!e.target.matches('p.comment-likes a.view-likers')) { 695 return; 696 } 697 // User has moved cursor away - hide the overlay. 698 overlay.requestHide(); 699 }, 700 true 701 ); 702 703 document.body.addEventListener( 704 'mouseenter', 705 e => { 706 if (!e.target.matches('.comment') || !e.target.querySelector('a.comment-like-link')) { 707 return; 708 } 709 // User is moving over a comment - precache the comment like data.
710 if (precacheTimeout !== null) { 711 clearTimeout(precacheTimeout); 712 precacheTimeout = null; 713 } 714 715 const star = e.target.querySelector('a.comment-like-link'); 716 const parent = star.closest('.comment-likes'); 717 const link = parent && parent.querySelector('a.view-likers'); 718 if (!link || Number(link.dataset.likeCount || 0) === 0) { 719 // No likes. 720 return; 721 } 722 const commentId = getCommentId(star); 723 if (commentId in commentLikeCache) { 724 // Already in cache. 725 return; 726 } 727 728 precacheTimeout = setTimeout(() => { 729 precacheTimeout = null; 730 if (commentId in commentLikeCache) { 731 // Was cached in the interim. 732 return; 733 } 734 fetchLikeData(link, commentId); 735 }, 1000); 736 }, 737 true 738 ); 739 } 740 741 if (document.readyState !== 'loading') { 742 init(); 743 } else { 744 document.addEventListener('DOMContentLoaded', init); 745 } 746})(); 747; 748/** 749 * responsiveNavigation.js v1.1 750 * Created by Ben Gillbanks <http://www.binarymoon.co.uk/> 751 * Available under GPL2 license 752 */ 753 754;(function($) { 755 $.fn.responsiveNavigation = function(options) { 756 757 var defaults, display, resized; 758 759 defaults = { 760 min_menu_size: 4, 761 prefix: '-', 762 ignore_children: false, 763 breakpoint: 1080 764 }; 765 766 options = $.extend(defaults, options); 767 768 display = function() { 769 var window_width = $(window).width(); 770 if (window_width < options.breakpoint) { 771 $('.rn_nav').hide(); 772 $('.rn_select').show(); 773 } 774 775 if (window_width > options.breakpoint) { 776 $('.rn_nav').show(); 777 $('.rn_select').hide(); 778 } 779 }; 780 781 $ (window).resize(function() { 782 resized = true; 783 }); 784 785 // super simple debounce 786 // fires once every half second to do the work if needed 787 setInterval( function() { 788 if ( resized ) { 789 display(); 790 } 791 resized = false; 792 }, 500 ); 793 794 return this.each(function() { 795 var $this, select, navDepth; 796 797 $this = $(this); 798 799 if ($this.find('a').length > options.min_menu_size) { 800 $this.addClass('rn_nav'); 801 802 select = $('<select class="rn_select"></select>'); 803 navDepth = $this.parents().length; 804 805 // add default text 806 var navOptions = $('<option></option>'); 807 navOptions.text(js_i18n.menu); 808 navOptions.attr('value', ''); 809 810 select.append(navOptions); 811 812 $this.find('a').each(function() { 813 var depth, i, optionText, navOptions; 814 815 depth = (($(this).parents().length - navDepth) / 2) - 1; 816 817 if (depth === 0 || (depth > 0 && options.ignore_children === false)) { 818 819 optionText = $(this).text(); 820 if (depth > 0) { 821 optionText = ' ' + optionText; 822 } 823 for (i = 0; i < depth; i ++) { 824 optionText = options.prefix + optionText; 825 } 826 navOptions = $('<option></option>'); 827 navOptions.attr('value', $(this).attr('href')); 828 if (document.location === $(this).attr('href')) { 829 navOptions.attr('selected', 'selected'); 830 } 831 navOptions.text(optionText); 832 select.append(navOptions); 833 834 } 835 836 }); 837 838 select.change(function() { 839 if ( this.value !== '' ) { 840 document.location = this.value; 841 } 842 }); 843 } 844 845 $this.after(select); 846 display(); 847 }); 848 849 }; 850 851})(jQuery);; 852/*! This file is auto-generated */ 853/*! 854 * imagesLoaded PACKAGED v5.0.0 855 * JavaScript is all like "You images are done yet or what?" 856 * MIT License 857 */ 858!function(t,e){"object"==typeof module&&module.exports?module.exports=e():t.EvEmitter=e()}("undefined"!=typeof window?window:this,(function(){function t(){}let e=t.prototype;return e.on=function(t,e){if(!t||!e)return this;let i=this._events=this._events||{},s=i[t]=i[t]||[];return s.includes(e)||s.push(e),this},e.once=function(t,e){if(!t||!e)return this;this.on(t,e);let i=this._onceEvents=this._onceEvents||{};return(i[t]=i[t]||{})[e]=!0,this},e.off=function(t,e){let i=this._events&&this._events[t];if(!i||!i.length)return this;let s=i.indexOf(e);return-1!=s&&i.splice(s,1),this},e.emitEvent=function(t,e){let i=this._events&&this._events[t];if(!i||!i.length)return this;i=i.slice(0),e=e||[];let s=this._onceEvents&&this._onceEvents[t];for(let n of i){s&&s[n]&&(this.off(t,n),delete s[n]),n.apply(this,e)}return this},e.allOff=function(){return delete this._events,delete this._onceEvents,this},t})), 859/*! 860 * imagesLoaded v5.0.0 861 * JavaScript is all like "You images are done yet or what?" 862 * MIT License 863 */ 864function(t,e){"object"==typeof module&&module.exports?module.exports=e(t,require("ev-emitter")):t.imagesLoaded=e(t,t.EvEmitter)}("undefined"!=typeof window?window:this,(function(t,e){let i=t.jQuery,s=t.console;
vendor: 4,185 bytes, lines 864-865
864function n(t,e,o){if(!(this instanceof n))return new n(t,e,o);let r=t;var h;("string"==typeof t&&(r=document.querySelectorAll(t)),r)?(this.elements=(h=r,Array.isArray(h)?h:"object"==typeof h&&"number"==typeof h.length?[...h]:[h]),this.options={},"function"==typeof e?o=e:Object.assign(this.options,e),o&&this.on("always",o),this.getImages(),i&&(this.jqDeferred=new i.Deferred),setTimeout(this.check.bind(this))):s.error(`Bad element for imagesLoaded ${r||t}`)}n.prototype=Object.create(e.prototype),n.prototype.getImages=function(){this.images=[],this.elements.forEach(this.addElementImages,this)};const o=[1,9,11];n.prototype.addElementImages=function(t){"IMG"===t.nodeName&&this.addImage(t),!0===this.options.background&&this.addElementBackgroundImages(t);let{nodeType:e}=t;if(!e||!o.includes(e))return;let i=t.querySelectorAll("img");for(let t of i)this.addImage(t);if("string"==typeof this.options.background){let e=t.querySelectorAll(this.options.background);for(let t of e)this.addElementBackgroundImages(t)}};const r=/url\((['"])?(.*?)\1\)/gi;function h(t){this.img=t}function d(t,e){this.url=t,this.element=e,this.img=new Image}return n.prototype.addElementBackgroundImages=function(t){let e=getComputedStyle(t);if(!e)return;let i=r.exec(e.backgroundImage);for(;null!==i;){let s=i&&i[2];s&&this.addBackground(s,t),i=r.exec(e.backgroundImage)}},n.prototype.addImage=function(t){let e=new h(t);this.images.push(e)},n.prototype.addBackground=function(t,e){let i=new d(t,e);this.images.push(i)},n.prototype.check=function(){if(this.progressedCount=0,this.hasAnyBroken=!1,!this.images.length)return void this.complete();let t=(t,e,i)=>{setTimeout((()=>{this.progress(t,e,i)}))};this.images.forEach((function(e){e.once("progress",t),e.check()}))},n.prototype.progress=function(t,e,i){this.progressedCount++,this.hasAnyBroken=this.hasAnyBroken||!t.isLoaded,this.emitEvent("progress",[this,t,e]),this.jqDeferred&&this.jqDeferred.notify&&this.jqDeferred.notify(this,t),this.progressedCount===this.images.length&&this.complete(),this.options.debug&&s&&s.log(`progress: ${i}`,t,e)},n.prototype.complete=function(){let t=this.hasAnyBroken?"fail":"done";if(this.isComplete=!0,this.emitEvent(t,[this]),this.emitEvent("always",[this]),this.jqDeferred){let t=this.hasAnyBroken?"reject":"resolve";this.jqDeferred[t](this)}},h.prototype=Object.create(e.prototype),h.prototype.check=function(){this.getIsImageComplete()?this.confirm(0!==this.img.naturalWidth,"naturalWidth"):(this.proxyImage=new Image,this.img.crossOrigin&&(this.proxyImage.crossOrigin=this.img.crossOrigin),this.proxyImage.addEventListener("load",this),this.proxyImage.addEventListener("error",this),this.img.addEventListener("load",this),this.img.addEventListener("error",this),this.proxyImage.src=this.img.currentSrc||this.img.src)},h.prototype.getIsImageComplete=function(){return this.img.complete&&this.img.naturalWidth},h.prototype.confirm=function(t,e){this.isLoaded=t;let{parentNode:i}=this.img,s="PICTURE"===i.nodeName?i:this.img;this.emitEvent("progress",[this,s,e])},h.prototype.handleEvent=function(t){let e="on"+t.type;this[e]&&this[e](t)},h.prototype.onload=function(){this.confirm(!0,"onload"),this.unbindEvents()},h.prototype.onerror=function(){this.confirm(!1,"onerror"),this.unbindEvents()},h.prototype.unbindEvents=function(){this.proxyImage.removeEventListener("load",this),this.proxyImage.removeEventListener("error",this),this.img.removeEventListener("load",this),this.img.removeEventListener("error",this)},d.prototype=Object.create(h.prototype),d.prototype.check=function(){this.img.addEventListener("load",this),this.img.addEventListener("error",this),this.img.src=this.url,this.getIsImageComplete()&&(this.confirm(0!==this.img.naturalWidth,"naturalWidth"),this.unbindEvents())},d.prototype.unbindEvents=function(){this.img.removeEventListener("load",this),this.img.removeEventListener("error",this)},d.prototype.confirm=function(t,e){this.isLoaded=t,this.emitEvent("progress",[this,this.element,e])},n.makeJQueryPlugin=function(e){(e=e||t.jQuery)&&(i=e,i.fn.imagesLoaded=function(t,e){return new n(this,t,e).jqDeferred.promise(i(this))})},n.makeJQueryPlugin(),n}));; 865/*! This file is auto-generated */
vendor: 24,103 bytes, lines 866-874
866/*! 867 * Masonry PACKAGED v4.2.2 868 * Cascading grid layout library 869 * https://masonry.desandro.com 870 * MIT License 871 * by David DeSandro 872 */ 873 874!function(t,e){"function"==typeof define&&define.amd?define("jquery-bridget/jquery-bridget",["jquery"],function(i){return e(t,i)}):"object"==typeof module&&module.exports?module.exports=e(t,require("jquery")):t.jQueryBridget=e(t,t.jQuery)}(window,function(t,e){"use strict";function i(i,r,a){function h(t,e,n){var o,r="$()."+i+'("'+e+'")';return t.each(function(t,h){var u=a.data(h,i);if(!u)return void s(i+" not initialized. Cannot call methods, i.e. "+r);var d=u[e];if(!d||"_"==e.charAt(0))return void s(r+" is not a valid method");var l=d.apply(u,n);o=void 0===o?l:o}),void 0!==o?o:t}function u(t,e){t.each(function(t,n){var o=a.data(n,i);o?(o.option(e),o._init()):(o=new r(n,e),a.data(n,i,o))})}a=a||e||t.jQuery,a&&(r.prototype.option||(r.prototype.option=function(t){a.isPlainObject(t)&&(this.options=a.extend(!0,this.options,t))}),a.fn[i]=function(t){if("string"==typeof t){var e=o.call(arguments,1);return h(this,t,e)}return u(this,t),this},n(a))}function n(t){!t||t&&t.bridget||(t.bridget=i)}var o=Array.prototype.slice,r=t.console,s="undefined"==typeof r?function(){}:function(t){r.error(t)};return n(e||t.jQuery),i}),function(t,e){"function"==typeof define&&define.amd?define("ev-emitter/ev-emitter",e):"object"==typeof module&&module.exports?module.exports=e():t.EvEmitter=e()}("undefined"!=typeof window?window:this,function(){function t(){}var e=t.prototype;return e.on=function(t,e){if(t&&e){var i=this._events=this._events||{},n=i[t]=i[t]||[];return-1==n.indexOf(e)&&n.push(e),this}},e.once=function(t,e){if(t&&e){this.on(t,e);var i=this._onceEvents=this._onceEvents||{},n=i[t]=i[t]||{};return n[e]=!0,this}},e.off=function(t,e){var i=this._events&&this._events[t];if(i&&i.length){var n=i.indexOf(e);return-1!=n&&i.splice(n,1),this}},e.emitEvent=function(t,e){var i=this._events&&this._events[t];if(i&&i.length){i=i.slice(0),e=e||[];for(var n=this._onceEvents&&this._onceEvents[t],o=0;o<i.length;o++){var r=i[o],s=n&&n[r];s&&(this.off(t,r),delete n[r]),r.apply(this,e)}return this}},e.allOff=function(){delete this._events,delete this._onceEvents},t}),function(t,e){"function"==typeof define&&define.amd?define("get-size/get-size",e):"object"==typeof module&&module.exports?module.exports=e():t.getSize=e()}(window,function(){"use strict";function t(t){var e=parseFloat(t),i=-1==t.indexOf("%")&&!isNaN(e);return i&&e}function e(){}function i(){for(var t={width:0,height:0,innerWidth:0,innerHeight:0,outerWidth:0,outerHeight:0},e=0;u>e;e++){var i=h[e];t[i]=0}return t}function n(t){var e=getComputedStyle(t);return e||a("Style returned "+e+". Are you running this code in a hidden iframe on Firefox? See https://bit.ly/getsizebug1"),e}function o(){if(!d){d=!0;var e=document.createElement("div");e.style.width="200px",e.style.padding="1px 2px 3px 4px",e.style.borderStyle="solid",e.style.borderWidth="1px 2px 3px 4px",e.style.boxSizing="border-box";var i=document.body||document.documentElement;i.appendChild(e);var o=n(e);s=200==Math.round(t(o.width)),r.isBoxSizeOuter=s,i.removeChild(e)}}function r(e){if(o(),"string"==typeof e&&(e=document.querySelector(e)),e&&"object"==typeof e&&e.nodeType){var r=n(e);if("none"==r.display)return i();var a={};a.width=e.offsetWidth,a.height=e.offsetHeight;for(var d=a.isBorderBox="border-box"==r.boxSizing,l=0;u>l;l++){var c=h[l],f=r[c],m=parseFloat(f);a[c]=isNaN(m)?0:m}var p=a.paddingLeft+a.paddingRight,g=a.paddingTop+a.paddingBottom,y=a.marginLeft+a.marginRight,v=a.marginTop+a.marginBottom,_=a.borderLeftWidth+a.borderRightWidth,z=a.borderTopWidth+a.borderBottomWidth,E=d&&s,b=t(r.width);b!==!1&&(a.width=b+(E?0:p+_));var x=t(r.height);return x!==!1&&(a.height=x+(E?0:g+z)),a.innerWidth=a.width-(p+_),a.innerHeight=a.height-(g+z),a.outerWidth=a.width+y,a.outerHeight=a.height+v,a}}var s,a="undefined"==typeof console?e:function(t){console.error(t)},h=["paddingLeft","paddingRight","paddingTop","paddingBottom","marginLeft","marginRight","marginTop","marginBottom","borderLeftWidth","borderRightWidth","borderTopWidth","borderBottomWidth"],u=h.length,d=!1;return r}),function(t,e){"use strict";"function"==typeof define&&define.amd?define("desandro-matches-selector/matches-selector",e):"object"==typeof module&&module.exports?module.exports=e():t.matchesSelector=e()}(window,function(){"use strict";var t=function(){var t=window.Element.prototype;if(t.matches)return"matches";if(t.matchesSelector)return"matchesSelector";for(var e=["webkit","moz","ms","o"],i=0;i<e.length;i++){var n=e[i],o=n+"MatchesSelector";if(t[o])return o}}();return function(e,i){return e[t](i)}}),function(t,e){"function"==typeof define&&define.amd?define("fizzy-ui-utils/utils",["desandro-matches-selector/matches-selector"],function(i){return e(t,i)}):"object"==typeof module&&module.exports?module.exports=e(t,require("desandro-matches-selector")):t.fizzyUIUtils=e(t,t.matchesSelector)}(window,function(t,e){var i={};i.extend=function(t,e){for(var i in e)t[i]=e[i];return t},i.modulo=function(t,e){return(t%e+e)%e};var n=Array.prototype.slice;i.makeArray=function(t){if(Array.isArray(t))return t;if(null===t||void 0===t)return[];var e="object"==typeof t&&"number"==typeof t.length;return e?n.call(t):[t]},i.removeFrom=function(t,e){var i=t.indexOf(e);-1!=i&&t.splice(i,1)},i.getParent=function(t,i){for(;t.parentNode&&t!=document.body;)if(t=t.parentNode,e(t,i))return t},i.getQueryElement=function(t){return"string"==typeof t?document.querySelector(t):t},i.handleEvent=function(t){var e="on"+t.type;this[e]&&this[e](t)},i.filterFindElements=function(t,n){t=i.makeArray(t);var o=[];return t.forEach(function(t){if(t instanceof HTMLElement){if(!n)return void o.push(t);e(t,n)&&o.push(t);for(var i=t.querySelectorAll(n),r=0;r<i.length;r++)o.push(i[r])}}),o},i.debounceMethod=function(t,e,i){i=i||100;var n=t.prototype[e],o=e+"Timeout";t.prototype[e]=function(){var t=this[o];clearTimeout(t);var e=arguments,r=this;this[o]=setTimeout(function(){n.apply(r,e),delete r[o]},i)}},i.docReady=function(t){var e=document.readyState;"complete"==e||"interactive"==e?setTimeout(t):document.addEventListener("DOMContentLoaded",t)},i.toDashed=function(t){return t.replace(/(.)([A-Z])/g,function(t,e,i){return e+"-"+i}).toLowerCase()};var o=t.console;return i.htmlInit=function(e,n){i.docReady(function(){var r=i.toDashed(n),s="data-"+r,a=document.querySelectorAll("["+s+"]"),h=document.querySelectorAll(".js-"+r),u=i.makeArray(a).concat(i.makeArray(h)),d=s+"-options",l=t.jQuery;u.forEach(function(t){var i,r=t.getAttribute(s)||t.getAttribute(d);try{i=r&&JSON.parse(r)}catch(a){return void(o&&o.error("Error parsing "+s+" on "+t.className+": "+a))}var h=new e(t,i);l&&l.data(t,n,h)})})},i}),function(t,e){"function"==typeof define&&define.amd?define("outlayer/item",["ev-emitter/ev-emitter","get-size/get-size"],e):"object"==typeof module&&module.exports?module.exports=e(require("ev-emitter"),require("get-size")):(t.Outlayer={},t.Outlayer.Item=e(t.EvEmitter,t.getSize))}(window,function(t,e){"use strict";function i(t){for(var e in t)return!1;return e=null,!0}function n(t,e){t&&(this.element=t,this.layout=e,this.position={x:0,y:0},this._create())}function o(t){return t.replace(/([A-Z])/g,function(t){return"-"+t.toLowerCase()})}var r=document.documentElement.style,s="string"==typeof r.transition?"transition":"WebkitTransition",a="string"==typeof r.transform?"transform":"WebkitTransform",h={WebkitTransition:"webkitTransitionEnd",transition:"transitionend"}[s],u={transform:a,transition:s,transitionDuration:s+"Duration",transitionProperty:s+"Property",transitionDelay:s+"Delay"},d=n.prototype=Object.create(t.prototype);d.constructor=n,d._create=function(){this._transn={ingProperties:{},clean:{},onEnd:{}},this.css({position:"absolute"})},d.handleEvent=function(t){var e="on"+t.type;this[e]&&this[e](t)},d.getSize=function(){this.size=e(this.element)},d.css=function(t){var e=this.element.style;for(var i in t){var n=u[i]||i;e[n]=t[i]}},d.getPosition=function(){var t=getComputedStyle(this.element),e=this.layout._getOption("originLeft"),i=this.layout._getOption("originTop"),n=t[e?"left":"right"],o=t[i?"top":"bottom"],r=parseFloat(n),s=parseFloat(o),a=this.layout.size;-1!=n.indexOf("%")&&(r=r/100*a.width),-1!=o.indexOf("%")&&(s=s/100*a.height),r=isNaN(r)?0:r,s=isNaN(s)?0:s,r-=e?a.paddingLeft:a.paddingRight,s-=i?a.paddingTop:a.paddingBottom,this.position.x=r,this.position.y=s},d.layoutPosition=function(){var t=this.layout.size,e={},i=this.layout._getOption("originLeft"),n=this.layout._getOption("originTop"),o=i?"paddingLeft":"paddingRight",r=i?"left":"right",s=i?"right":"left",a=this.position.x+t[o];e[r]=this.getXValue(a),e[s]="";var h=n?"paddingTop":"paddingBottom",u=n?"top":"bottom",d=n?"bottom":"top",l=this.position.y+t[h];e[u]=this.getYValue(l),e[d]="",this.css(e),this.emitEvent("layout",[this])},d.getXValue=function(t){var e=this.layout._getOption("horizontal");return this.layout.options.percentPosition&&!e?t/this.layout.size.width*100+"%":t+"px"},d.getYValue=function(t){var e=this.layout._getOption("horizontal");return this.layout.options.percentPosition&&e?t/this.layout.size.height*100+"%":t+"px"},d._transitionTo=function(t,e){this.getPosition();var i=this.position.x,n=this.position.y,o=t==this.position.x&&e==this.position.y;if(this.setPosition(t,e),o&&!this.isTransitioning)return void this.layoutPosition();var r=t-i,s=e-n,a={};a.transform=this.getTranslate(r,s),this.transition({to:a,onTransitionEnd:{transform:this.layoutPosition},isCleaning:!0})},d.getTranslate=function(t,e){var i=this.layout._getOption("originLeft"),n=this.layout._getOption("originTop");return t=i?t:-t,e=n?e:-e,"translate3d("+t+"px, "+e+"px, 0)"},d.goTo=function(t,e){this.setPosition(t,e),this.layoutPosition()},d.moveTo=d._transitionTo,d.setPosition=function(t,e){this.position.x=parseFloat(t),this.position.y=parseFloat(e)},d._nonTransition=function(t){this.css(t.to),t.isCleaning&&this._removeStyles(t.to);for(var e in t.onTransitionEnd)t.onTransitionEnd[e].call(this)},d.transition=function(t){if(!parseFloat(this.layout.options.transitionDuration))return void this._nonTransition(t);var e=this._transn;for(var i in t.onTransitionEnd)e.onEnd[i]=t.onTransitionEnd[i];for(i in t.to)e.ingProperties[i]=!0,t.isCleaning&&(e.clean[i]=!0);if(t.from){this.css(t.from);var n=this.element.offsetHeight;n=null}this.enableTransition(t.to),this.css(t.to),this.isTransitioning=!0};var l="opacity,"+o(a);d.enableTransition=function(){if(!this.isTransitioning){var t=this.layout.options.transitionDuration;t="number"==typeof t?t+"ms":t,this.css({transitionProperty:l,transitionDuration:t,transitionDelay:this.staggerDelay||0}),this.element.addEventListener(h,this,!1)}},d.onwebkitTransitionEnd=function(t){this.ontransitionend(t)},d.onotransitionend=function(t){this.ontransitionend(t)};var c={"-webkit-transform":"transform"};d.ontransitionend=function(t){if(t.target===this.element){var e=this._transn,n=c[t.propertyName]||t.propertyName;if(delete e.ingProperties[n],i(e.ingProperties)&&this.disableTransition(),n in e.clean&&(this.element.style[t.propertyName]="",delete e.clean[n]),n in e.onEnd){var o=e.onEnd[n];o.call(this),delete e.onEnd[n]}this.emitEvent("transitionEnd",[this])}},d.disableTransition=function(){this.removeTransitionStyles(),this.element.removeEventListener(h,this,!1),this.isTransitioning=!1},d._removeStyles=function(t){var e={};for(var i in t)e[i]="";this.css(e)};var f={transitionProperty:"",transitionDuration:"",transitionDelay:""};return d.removeTransitionStyles=function(){this.css(f)},d.stagger=function(t){t=isNaN(t)?0:t,this.staggerDelay=t+"ms"},d.removeElem=function(){this.element.parentNode.removeChild(this.element),this.css({display:""}),this.emitEvent("remove",[this])},d.remove=function(){return s&&parseFloat(this.layout.options.transitionDuration)?(this.once("transitionEnd",function(){this.removeElem()}),void this.hide()):void this.removeElem()},d.reveal=function(){delete this.isHidden,this.css({display:""});var t=this.layout.options,e={},i=this.getHideRevealTransitionEndProperty("visibleStyle");e[i]=this.onRevealTransitionEnd,this.transition({from:t.hiddenStyle,to:t.visibleStyle,isCleaning:!0,onTransitionEnd:e})},d.onRevealTransitionEnd=function(){this.isHidden||this.emitEvent("reveal")},d.getHideRevealTransitionEndProperty=function(t){var e=this.layout.options[t];if(e.opacity)return"opacity";for(var i in e)return i},d.hide=function(){this.isHidden=!0,this.css({display:""});var t=this.layout.options,e={},i=this.getHideRevealTransitionEndProperty("hiddenStyle");e[i]=this.onHideTransitionEnd,this.transition({from:t.visibleStyle,to:t.hiddenStyle,isCleaning:!0,onTransitionEnd:e})},d.onHideTransitionEnd=function(){this.isHidden&&(this.css({display:"none"}),this.emitEvent("hide"))},d.destroy=function(){this.css({position:"",left:"",right:"",top:"",bottom:"",transition:"",transform:""})},n}),function(t,e){"use strict";"function"==typeof define&&define.amd?define("outlayer/outlayer",["ev-emitter/ev-emitter","get-size/get-size","fizzy-ui-utils/utils","./item"],function(i,n,o,r){return e(t,i,n,o,r)}):"object"==typeof module&&module.exports?module.exports=e(t,require("ev-emitter"),require("get-size"),require("fizzy-ui-utils"),require("./item")):t.Outlayer=e(t,t.EvEmitter,t.getSize,t.fizzyUIUtils,t.Outlayer.Item)}(window,function(t,e,i,n,o){"use strict";function r(t,e){var i=n.getQueryElement(t);if(!i)return void(h&&h.error("Bad element for "+this.constructor.namespace+": "+(i||t)));this.element=i,u&&(this.$element=u(this.element)),this.options=n.extend({},this.constructor.defaults),this.option(e);var o=++l;this.element.outlayerGUID=o,c[o]=this,this._create();var r=this._getOption("initLayout");r&&this.layout()}function s(t){function e(){t.apply(this,arguments)}return e.prototype=Object.create(t.prototype),e.prototype.constructor=e,e}function a(t){if("number"==typeof t)return t;var e=t.match(/(^\d*\.?\d*)(\w*)/),i=e&&e[1],n=e&&e[2];if(!i.length)return 0;i=parseFloat(i);var o=m[n]||1;return i*o}var h=t.console,u=t.jQuery,d=function(){},l=0,c={};r.namespace="outlayer",r.Item=o,r.defaults={containerStyle:{position:"relative"},initLayout:!0,originLeft:!0,originTop:!0,resize:!0,resizeContainer:!0,transitionDuration:"0.4s",hiddenStyle:{opacity:0,transform:"scale(0.001)"},visibleStyle:{opacity:1,transform:"scale(1)"}};var f=r.prototype;n.extend(f,e.prototype),f.option=function(t){n.extend(this.options,t)},f._getOption=function(t){var e=this.constructor.compatOptions[t];return e&&void 0!==this.options[e]?this.options[e]:this.options[t]},r.compatOptions={initLayout:"isInitLayout",horizontal:"isHorizontal",layoutInstant:"isLayoutInstant",originLeft:"isOriginLeft",originTop:"isOriginTop",resize:"isResizeBound",resizeContainer:"isResizingContainer"},f._create=function(){this.reloadItems(),this.stamps=[],this.stamp(this.options.stamp),n.extend(this.element.style,this.options.containerStyle);var t=this._getOption("resize");t&&this.bindResize()},f.reloadItems=function(){this.items=this._itemize(this.element.children)},f._itemize=function(t){for(var e=this._filterFindItemElements(t),i=this.constructor.Item,n=[],o=0;o<e.length;o++){var r=e[o],s=new i(r,this);n.push(s)}return n},f._filterFindItemElements=function(t){return n.filterFindElements(t,this.options.itemSelector)},f.getItemElements=function(){return this.items.map(function(t){return t.element})},f.layout=function(){this._resetLayout(),this._manageStamps();var t=this._getOption("layoutInstant"),e=void 0!==t?t:!this._isLayoutInited;this.layoutItems(this.items,e),this._isLayoutInited=!0},f._init=f.layout,f._resetLayout=function(){this.getSize()},f.getSize=function(){this.size=i(this.element)},f._getMeasurement=function(t,e){var n,o=this.options[t];o?("string"==typeof o?n=this.element.querySelector(o):o instanceof HTMLElement&&(n=o),this[t]=n?i(n)[e]:o):this[t]=0},f.layoutItems=function(t,e){t=this._getItemsForLayout(t),this._layoutItems(t,e),this._postLayout()},f._getItemsForLayout=function(t){return t.filter(function(t){return!t.isIgnored})},f._layoutItems=function(t,e){if(this._emitCompleteOnItems("layout",t),t&&t.length){var i=[];t.forEach(function(t){var n=this._getItemLayoutPosition(t);n.item=t,n.isInstant=e||t.isLayoutInstant,i.push(n)},this),this._processLayoutQueue(i)}},f._getItemLayoutPosition=function(){return{x:0,y:0}},f._processLayoutQueue=function(t){this.updateStagger(),t.forEach(function(t,e){this._positionItem(t.item,t.x,t.y,t.isInstant,e)},this)},f.updateStagger=function(){var t=this.options.stagger;return null===t||void 0===t?void(this.stagger=0):(this.stagger=a(t),this.stagger)},f._positionItem=function(t,e,i,n,o){n?t.goTo(e,i):(t.stagger(o*this.stagger),t.moveTo(e,i))},f._postLayout=function(){this.resizeContainer()},f.resizeContainer=function(){var t=this._getOption("resizeContainer");if(t){var e=this._getContainerSize();e&&(this._setContainerMeasure(e.width,!0),this._setContainerMeasure(e.height,!1))}},f._getContainerSize=d,f._setContainerMeasure=function(t,e){if(void 0!==t){var i=this.size;i.isBorderBox&&(t+=e?i.paddingLeft+i.paddingRight+i.borderLeftWidth+i.borderRightWidth:i.paddingBottom+i.paddingTop+i.borderTopWidth+i.borderBottomWidth),t=Math.max(t,0),this.element.style[e?"width":"height"]=t+"px"}},f._emitCompleteOnItems=function(t,e){function i(){o.dispatchEvent(t+"Complete",null,[e])}function n(){s++,s==r&&i()}var o=this,r=e.length;if(!e||!r)return void i();var s=0;e.forEach(function(e){e.once(t,n)})},f.dispatchEvent=function(t,e,i){var n=e?[e].concat(i):i;if(this.emitEvent(t,n),u)if(this.$element=this.$element||u(this.element),e){var o=u.Event(e);o.type=t,this.$element.trigger(o,i)}else this.$element.trigger(t,i)},f.ignore=function(t){var e=this.getItem(t);e&&(e.isIgnored=!0)},f.unignore=function(t){var e=this.getItem(t);e&&delete e.isIgnored},f.stamp=function(t){t=this._find(t),t&&(this.stamps=this.stamps.concat(t),t.forEach(this.ignore,this))},f.unstamp=function(t){t=this._find(t),t&&t.forEach(function(t){n.removeFrom(this.stamps,t),this.unignore(t)},this)},f._find=function(t){return t?("string"==typeof t&&(t=this.element.querySelectorAll(t)),t=n.makeArray(t)):void 0},f._manageStamps=function(){this.stamps&&this.stamps.length&&(this._getBoundingRect(),this.stamps.forEach(this._manageStamp,this))},f._getBoundingRect=function(){var t=this.element.getBoundingClientRect(),e=this.size;this._boundingRect={left:t.left+e.paddingLeft+e.borderLeftWidth,top:t.top+e.paddingTop+e.borderTopWidth,right:t.right-(e.paddingRight+e.borderRightWidth),bottom:t.bottom-(e.paddingBottom+e.borderBottomWidth)}},f._manageStamp=d,f._getElementOffset=function(t){var e=t.getBoundingClientRect(),n=this._boundingRect,o=i(t),r={left:e.left-n.left-o.marginLeft,top:e.top-n.top-o.marginTop,right:n.right-e.right-o.marginRight,bottom:n.bottom-e.bottom-o.marginBottom};return r},f.handleEvent=n.handleEvent,f.bindResize=function(){t.addEventListener("resize",this),this.isResizeBound=!0},f.unbindResize=function(){t.removeEventListener("resize",this),this.isResizeBound=!1},f.onresize=function(){this.resize()},n.debounceMethod(r,"onresize",100),f.resize=function(){this.isResizeBound&&this.needsResizeLayout()&&this.layout()},f.needsResizeLayout=function(){var t=i(this.element),e=this.size&&t;return e&&t.innerWidth!==this.size.innerWidth},f.addItems=function(t){var e=this._itemize(t);return e.length&&(this.items=this.items.concat(e)),e},f.appended=function(t){var e=this.addItems(t);e.length&&(this.layoutItems(e,!0),this.reveal(e))},f.prepended=function(t){var e=this._itemize(t);if(e.length){var i=this.items.slice(0);this.items=e.concat(i),this._resetLayout(),this._manageStamps(),this.layoutItems(e,!0),this.reveal(e),this.layoutItems(i)}},f.reveal=function(t){if(this._emitCompleteOnItems("reveal",t),t&&t.length){var e=this.updateStagger();t.forEach(function(t,i){t.stagger(i*e),t.reveal()})}},f.hide=function(t){if(this._emitCompleteOnItems("hide",t),t&&t.length){var e=this.updateStagger();t.forEach(function(t,i){t.stagger(i*e),t.hide()})}},f.revealItemElements=function(t){var e=this.getItems(t);this.reveal(e)},f.hideItemElements=function(t){var e=this.getItems(t);this.hide(e)},f.getItem=function(t){for(var e=0;e<this.items.length;e++){var i=this.items[e];if(i.element==t)return i}},f.getItems=function(t){t=n.makeArray(t);var e=[];return t.forEach(function(t){var i=this.getItem(t);i&&e.push(i)},this),e},f.remove=function(t){var e=this.getItems(t);this._emitCompleteOnItems("remove",e),e&&e.length&&e.forEach(function(t){t.remove(),n.removeFrom(this.items,t)},this)},f.destroy=function(){var t=this.element.style;t.height="",t.position="",t.width="",this.items.forEach(function(t){t.destroy()}),this.unbindResize();var e=this.element.outlayerGUID;delete c[e],delete this.element.outlayerGUID,u&&u.removeData(this.element,this.constructor.namespace)},r.data=function(t){t=n.getQueryElement(t);var e=t&&t.outlayerGUID;return e&&c[e]},r.create=function(t,e){var i=s(r);return i.defaults=n.extend({},r.defaults),n.extend(i.defaults,e),i.compatOptions=n.extend({},r.compatOptions),i.namespace=t,i.data=r.data,i.Item=s(o),n.htmlInit(i,t),u&&u.bridget&&u.bridget(t,i),i};var m={ms:1,s:1e3};return r.Item=o,r}),function(t,e){"function"==typeof define&&define.amd?define(["outlayer/outlayer","get-size/get-size"],e):"object"==typeof module&&module.exports?module.exports=e(require("outlayer"),require("get-size")):t.Masonry=e(t.Outlayer,t.getSize)}(window,function(t,e){var i=t.create("masonry");i.compatOptions.fitWidth="isFitWidth";var n=i.prototype;return n._resetLayout=function(){this.getSize(),this._getMeasurement("columnWidth","outerWidth"),this._getMeasurement("gutter","outerWidth"),this.measureColumns(),this.colYs=[];for(var t=0;t<this.cols;t++)this.colYs.push(0);this.maxY=0,this.horizontalColIndex=0},n.measureColumns=function(){if(this.getContainerWidth(),!this.columnWidth){var t=this.items[0],i=t&&t.element;this.columnWidth=i&&e(i).outerWidth||this.containerWidth}var n=this.columnWidth+=this.gutter,o=this.containerWidth+this.gutter,r=o/n,s=n-o%n,a=s&&1>s?"round":"floor";r=Math[a](r),this.cols=Math.max(r,1)},n.getContainerWidth=function(){var t=this._getOption("fitWidth"),i=t?this.element.parentNode:this.element,n=e(i);this.containerWidth=n&&n.innerWidth},n._getItemLayoutPosition=function(t){t.getSize();var e=t.size.outerWidth%this.columnWidth,i=e&&1>e?"round":"ceil",n=Math[i](t.size.outerWidth/this.columnWidth);n=Math.min(n,this.cols);for(var o=this.options.horizontalOrder?"_getHorizontalColPosition":"_getTopColPosition",r=this[o](n,t),s={x:this.columnWidth*r.col,y:r.y},a=r.y+t.size.outerHeight,h=n+r.col,u=r.col;h>u;u++)this.colYs[u]=a;return s},n._getTopColPosition=function(t){var e=this._getTopColGroup(t),i=Math.min.apply(Math,e);return{col:e.indexOf(i),y:i}},n._getTopColGroup=function(t){if(2>t)return this.colYs;for(var e=[],i=this.cols+1-t,n=0;i>n;n++)e[n]=this._getColGroupY(n,t);return e},n._getColGroupY=function(t,e){if(2>e)return this.colYs[t];var i=this.colYs.slice(t,t+e);return Math.max.apply(Math,i)},n._getHorizontalColPosition=function(t,e){var i=this.horizontalColIndex%this.cols,n=t>1&&i+t>this.cols;i=n?0:i;var o=e.size.outerWidth&&e.size.outerHeight;return this.horizontalColIndex=o?i+t:this.horizontalColIndex,{col:i,y:this._getColGroupY(i,t)}},n._manageStamp=function(t){var i=e(t),n=this._getElementOffset(t),o=this._getOption("originLeft"),r=o?n.left:n.right,s=r+i.outerWidth,a=Math.floor(r/this.columnWidth);a=Math.max(0,a);var h=Math.floor(s/this.columnWidth);h-=s%this.columnWidth?0:1,h=Math.min(this.cols-1,h);for(var u=this._getOption("originTop"),d=(u?n.top:n.bottom)+i.outerHeight,l=a;h>=l;l++)this.colYs[l]=Math.max(d,this.colYs[l])},n._getContainerSize=function(){this.maxY=Math.max.apply(Math,this.colYs);var t={height:this.maxY};return this._getOption("fitWidth")&&(t.width=this._getContainerFitWidth()),t},n._getContainerFitWidth=function(){for(var t=0,e=this.cols;--e&&0===this.colYs[e];)t++;return(this.cols-t)*this.columnWidth-this.gutter},n.needsResizeLayout=function(){var t=this.containerWidth;return this.getContainerWidth(),t!=this.containerWidth},i});
874; 875 /*! 876 * main.js v1.2 877 * Created by Ben Gillbanks <http://www.binarymoon.co.uk/> 878 * Available under GPL2 license 879 */ 880 881( function( $ ) { 882 883 var traveler_masonry_update = false; 884 var traveler_breakpoint = 767; 885 var traveler_masonry_setup = {}; 886 var traveler_masonry_footer_widgets = {}; 887 var masonry_test_interval = 100; 888 var masonry_old_height = 0; 889 var widget_footer_parent = '#footer-widgets'; 890 var $grid = null; 891 892 // Trigger window resize event to fix video size issues. 893 // Don't use jqueries trigger event since that only triggers methods hooked 894 // to events, and not the events themselves. 895 var resize_window = function() { 896 897 if ( typeof( Event ) === 'function' ) { 898 window.dispatchEvent( new Event( 'resize' ) ); 899 } else { 900 var event = window.document.createEvent( 'UIEvents' ); 901 event.initUIEvent( 'resize', true, false, window, 0 ); 902 window.dispatchEvent( event ); 903 } 904 905 }; 906 907 908 var masonry_init = function() { 909 910 // Initialize masonry. 911 $grid = $( '.masonry-container' ).masonry( traveler_masonry_setup ); 912 $( widget_footer_parent ).masonry( traveler_masonry_footer_widgets ); 913 914 // masonry widgets 915 masonry_widget_load_test(); 916 917 // Set timeouts so that we can ensure things are sized accordingly. 918 setInterval( traveler_masonry_refresh, 250 ); 919 setTimeout( resize_window, 2000 ); 920 921 }; 922 923 /** 924 * Refresh the sizing of masonry items. 925 * 926 * This function is called on a timer so that it can ensure the layout is 927 * always correct. 928 */ 929 var traveler_masonry_refresh = function() { 930 931 if ( traveler_masonry_update && $grid !== null ) { 932 933 $grid.masonry( 'layout' ); 934 935 // Make sure elements that resize based on container 936 // size have the correct dimensions. 937 resize_window(); 938 939 } 940 941 traveler_masonry_update = false; 942 943 }; 944 945 /** 946 * Reload the masonry footer layout to ensure all widgets are in the correct 947 * position. 948 */ 949 var masonry_footer_reload = function() { 950 951 $( widget_footer_parent ).masonry( traveler_masonry_footer_widgets ); 952 953 }; 954 955 /** 956 * Run a test to see if the widgets have finished loading. 957 * 958 * If a widget changes size then the function will be called again after a 959 * time period. This repeats until the widgets have stayed the same size for 960 * more than 5 seconds. 961 */ 962 var masonry_widget_load_test = function() { 963 964 var height = 0; 965 966 // get combined height of all widgets 967 $( widget_footer_parent ).find( '.widget' ).each( 968 function() { 969 height += $( this ).height(); 970 } 971 ); 972 973 // if height has changed then reposition widgets 974 // also reset interval in case something is still loading 975 // note that because default 'old' height is 0 this will always get called first time around 976 if ( masonry_old_height < height ) { 977 masonry_footer_reload(); 978 masonry_test_interval = 100; 979 } 980 981 masonry_old_height = height; 982 masonry_test_interval = Math.floor( masonry_test_interval * 2 ); 983 984 // no resizing in 5 seconds 985 if ( masonry_test_interval < 5000 ) { 986 setTimeout( masonry_widget_load_test, masonry_test_interval ); 987 } 988 989 }; 990 991 /** 992 * Initialize superfish for the dropdown menus. 993 */ 994 var traveler_menu_init = function() { 995 996 $( '.cat-details ul.menu, .masthead #nav' ).superfish(); 997 998 $( '.sub-menu' ).addClass( 'children' ); 999 1000 }; 1001 1002 $( document ).ready( function(){ 1003 1004 traveler_masonry_setup = { 1005 itemSelector: 'article', 1006 isAnimated: true, 1007 isOriginLeft: ! $( 'body' ).is( '.rtl' ), 1008 gutter: 0 1009 }; 1010 1011 traveler_masonry_footer_widgets = { 1012 itemSelector: '.widget', 1013 isAnimated: false, 1014 isOriginLeft: ! $( 'body' ).is( '.rtl' ) 1015 }; 1016 1017 // toggle between masonry and list view on home and archive pages 1018 $( 'a.masonry-toggle' ).click( function(){ 1019 1020 $( this ).toggleClass( 'display_list' ).toggleClass( 'display-masonry' ); 1021 1022 if ( $( '#wrapper' ).hasClass( 'masonry-container' ) ) { 1023 1024 // Destroy masonry object. 1025 $grid.masonry( 'destroy' ); 1026 $grid = null; 1027 1028 // Switch classes. 1029 $( '#wrapper' ).removeClass( 'masonry-container' ).addClass( 'chrono' ); 1030 1031 // Swap image sizes. 1032 $( '.masonry-container article' ).each( 1033 function() { 1034 var image = $( this ).data( 'masonry-image' );
1035 if ( '' !== image ) { 1036 $( this ).find( 'img.wp-post-image' ).src = image; 1037 } 1038 } 1039 ); 1040 1041 } else { 1042 1043 // Switch css classes. 1044 $( '#wrapper' ).addClass( 'masonry-container' ).removeClass( 'chrono' ); 1045 1046 // Switch image sizes. 1047 $( '.masonry-container article' ).each( 1048 function() { 1049 var image = $( this ).data( 'list-image' ); 1050 if ( '' !== image ) { 1051 $( this ).find( 'img.wp-post-image' ).src = image; 1052 } 1053 } 1054 ); 1055 1056 // Reinitialize Masonry. 1057 masonry_init(); 1058 1059 } 1060 1061 traveler_masonry_update = true; 1062 1063 resize_window(); 1064 1065 return false; 1066 1067 }); 1068 1069 // Responsive navigation. 1070 $( 'ul.menu.list-cats, #nav' ).responsiveNavigation( 1071 { 1072 min_menu_size:0, 1073 breakpoint: traveler_breakpoint 1074 } 1075 ); 1076 1077 // Update masonry when infinite scroll loads new content. 1078 $( 'body' ).on( 1079 'post-load', 1080 function() { 1081 1082 // Make sure we are viewing a page that uses Masonry. 1083 if ( 'undefined' === typeof( $grid ) || 0 === $grid.length ) { 1084 return; 1085 } 1086 1087 // Grab infinite scroll items and move them to the content area. 1088 var $new_articles = $( '.masonry-container' ).children().not( '.post-loaded, .infinite-loader' ).addClass( 'post-loaded' ); 1089 1090 $grid.children().addClass( 'post-loaded' ); 1091 1092 // Append new articles to masonry object. This gives us the attractive transition. 1093 $grid.masonry( 'appended', $new_articles ); 1094 1095 // When images are loaded update masonry once more to ensure things are in the correct position. 1096 $grid.imagesLoaded( 1097 function () { 1098 1099 traveler_masonry_update = true; 1100 1101 } 1102 ); 1103 1104 setTimeout( resize_window, 2000 ); 1105 1106 } 1107 ); 1108 1109 // Update masonry when the window is resized. 1110 $( window ).resize( 1111 function() { 1112 traveler_masonry_update = true; 1113 } 1114 ); 1115 1116 // Update masonry when the images have finished loading.
1117 // This also sets a post loaded class that is used to ensure content is re-appended. 1118 $( '.masonry-container' ).imagesLoaded( 1119 function() { 1120 traveler_masonry_update = true; 1121 $grid.children().addClass( 'post-loaded' ); 1122 } 1123 ); 1124 1125 masonry_init(); 1126 1127 // Initialize menu. 1128 traveler_menu_init(); 1129 1130 }); 1131 1132} )( jQuery ); 1133; 1134/* 1135 * jQuery Superfish Menu Plugin 1136 * Copyright (c) 2013 Joel Birch 1137 * 1138 * Dual licensed under the MIT and GPL licenses: 1139 * http://www.opensource.org/licenses/mit-license.php 1140 * http://www.gnu.org/licenses/gpl.html 1141 */ 1142 1143( function( $ ) { 1144 "use strict"; 1145 1146 var methods = ( function() { 1147 // private properties and methods go here 1148 var c = { 1149 bcClass: 'sf-breadcrumb', 1150 menuClass: 'sf-js-enabled', 1151 anchorClass: 'sf-with-ul', 1152 menuArrowClass: 'sf-arrows' 1153 }, 1154 ios = ( function() { 1155 var ios = /iPhone|iPad|iPod/i.test( navigator.userAgent ); 1156 if ( ios ) { 1157 // iOS clicks only bubble as far as body children 1158 $( window ).on( 1159 'load', 1160 function() { 1161 $( 'body' ).children().on( 'click', $.noop ); 1162 } 1163 ); 1164 } 1165 return ios; 1166 } )(), 1167 wp7 = ( function() { 1168 var style = document.documentElement.style; 1169 return ( 'behavior' in style && 'fill' in style && /iemobile/i.test( navigator.userAgent ) ); 1170 } )(), 1171 toggleMenuClasses = function( $menu, o ) { 1172 var classes = c.menuClass; 1173 if ( o.cssArrows ) { 1174 classes += ' ' + c.menuArrowClass; 1175 } 1176 $menu.toggleClass( classes ); 1177 }, 1178 setPathToCurrent = function( $menu, o ) { 1179 return $menu.find( 'li.' + o.pathClass ).slice( 0, o.pathLevels ) 1180 .addClass( o.hoverClass + ' ' + c.bcClass ) 1181 .filter( function() { 1182 return ( $( this ).children( o.popUpSelector ).hide().show().length ); 1183 } ).removeClass( o.pathClass ); 1184 }, 1185 toggleAnchorClass = function( $li ) { 1186 $li.children( 'a' ).toggleClass( c.anchorClass ); 1187 }, 1188 toggleTouchAction = function( $menu ) { 1189 var touchAction = $menu.css( 'ms-touch-action' ); 1190 touchAction = ( touchAction === 'pan-y' ) ? 'auto' : 'pan-y'; 1191 $menu.css( 'ms-touch-action', touchAction ); 1192 }, 1193 applyHandlers = function( $menu, o ) { 1194 var targets = 'li:has(' + o.popUpSelector + ')'; 1195 if ( $.fn.hoverIntent && !o.disableHI ) { 1196 $menu.hoverIntent( over, out, targets ); 1197 } 1198 else { 1199 $menu 1200 .on( 'mouseenter.superfish', targets, over )
1201 .on( 'mouseleave.superfish', targets, out ); 1202 } 1203 var touchevent = 'MSPointerDown.superfish'; 1204 if ( !ios ) { 1205 touchevent += ' touchend.superfish'; 1206 } 1207 if ( wp7 ) { 1208 touchevent += ' mousedown.superfish'; 1209 } 1210 $menu 1211 .on( 'focusin.superfish', 'li', over ) 1212 .on( 'focusout.superfish', 'li', out ) 1213 .on( touchevent, 'a', o, touchHandler ); 1214 }, 1215 touchHandler = function( e ) { 1216 var $this = $( this ), 1217 $ul = $this.siblings( e.data.popUpSelector ); 1218 1219 if ( $ul.length > 0 && $ul.is( ':hidden' ) ) { 1220 $this.one( 'click.superfish', false ); 1221 if ( e.type === 'MSPointerDown' ) { 1222 $this.trigger( 'focus' ); 1223 } else { 1224 $.proxy( over, $this.parent( 'li' ) )(); 1225 } 1226 } 1227 }, 1228 over = function() { 1229 var $this = $( this ), 1230 o = getOptions( $this ); 1231 clearTimeout( o.sfTimer ); 1232 $this.siblings().superfish( 'hide' ).end().superfish( 'show' ); 1233 }, 1234 out = function() { 1235 var $this = $( this ), 1236 o = getOptions( $this ); 1237 if ( ios ) { 1238 $.proxy( close, $this, o )(); 1239 } 1240 else { 1241 clearTimeout( o.sfTimer ); 1242 o.sfTimer = setTimeout( $.proxy( close, $this, o ), o.delay ); 1243 } 1244 }, 1245 close = function( o ) { 1246 o.retainPath = ( $.inArray( this[ 0 ], o.$path ) > -1 ); 1247 this.superfish( 'hide' ); 1248 1249 if ( !this.parents( '.' + o.hoverClass ).length ) { 1250 o.onIdle.call( getMenu( this ) ); 1251 if ( o.$path.length ) { 1252 $.proxy( over, o.$path )(); 1253 } 1254 } 1255 }, 1256 getMenu = function( $el ) { 1257 return $el.closest( '.' + c.menuClass ); 1258 }, 1259 getOptions = function( $el ) { 1260 return getMenu( $el ).data( 'sf-options' ); 1261 }; 1262 1263 return { 1264 // public methods 1265 hide: function( instant ) { 1266 if ( this.length ) { 1267 var $this = this, 1268 o = getOptions( $this ); 1269 if ( !o ) { 1270 return this; 1271 } 1272 var not = ( o.retainPath === true ) ? o.$path : '', 1273 $ul = $this.find( 'li.' + o.hoverClass ).add( this ).not( not ).removeClass( o.hoverClass ).children( o.popUpSelector ), 1274 speed = o.speedOut; 1275 1276 if ( instant ) { 1277 $ul.show(); 1278 speed = 0; 1279 } 1280 o.retainPath = false; 1281 o.onBeforeHide.call( $ul ); 1282 $ul.stop( true, true ).animate( o.animationOut, speed, function() { 1283 var $this = $( this ); 1284 o.onHide.call( $this ); 1285 } ); 1286 } 1287 return this; 1288 }, 1289 show: function() { 1290 var o = getOptions( this ); 1291 if ( !o ) { 1292 return this; 1293 } 1294 var $this = this.addClass( o.hoverClass ), 1295 $ul = $this.children( o.popUpSelector ); 1296 1297 o.onBeforeShow.call( $ul ); 1298 $ul.stop( true, true ).animate( o.animation, o.speed, function() { 1299 o.onShow.call( $ul ); 1300 } ); 1301 return this; 1302 }, 1303 destroy: function() { 1304 return this.each( function() { 1305 var $this = $( this ), 1306 o = $this.data( 'sf-options' ), 1307 $hasPopUp; 1308 if ( !o ) { 1309 return false; 1310 } 1311 $hasPopUp = $this.find( o.popUpSelector ).parent( 'li' ); 1312 clearTimeout( o.sfTimer ); 1313 toggleMenuClasses( $this, o ); 1314 toggleAnchorClass( $hasPopUp ); 1315 toggleTouchAction( $this ); 1316 // remove event handlers 1317 $this.off( '.superfish' ).off( '.hoverIntent' ); 1318 // clear animation's inline display style 1319 $hasPopUp.children( o.popUpSelector ).attr( 'style', function( i, style ) { 1320 return style.replace( /display[^;]+;?/g, '' ); 1321 } ); 1322 // reset 'current' path classes 1323 o.$path.removeClass( o.hoverClass + ' ' + c.bcClass ).addClass( o.pathClass ); 1324 $this.find( '.' + o.hoverClass ).removeClass( o.hoverClass ); 1325 o.onDestroy.call( $this ); 1326 $this.removeData( 'sf-options' ); 1327 } ); 1328 }, 1329 init: function( op ) { 1330 return this.each( function() { 1331 var $this = $( this ); 1332 if ( $this.data( 'sf-options' ) ) { 1333 return false; 1334 } 1335 var o = $.extend( {}, $.fn.superfish.defaults, op ), 1336 $hasPopUp = $this.find( o.popUpSelector ).parent( 'li' ); 1337 o.$path = setPathToCurrent( $this, o ); 1338 1339 $this.data( 'sf-options', o ); 1340 1341 toggleMenuClasses( $this, o ); 1342 toggleAnchorClass( $hasPopUp ); 1343 toggleTouchAction( $this ); 1344 applyHandlers( $this, o ); 1345 1346 $hasPopUp.not( '.' + c.bcClass ).superfish( 'hide', true ); 1347 1348 o.onInit.call( this ); 1349 } ); 1350 } 1351 }; 1352 } )(); 1353 1354 $.fn.superfish = function( method, args ) { 1355 if ( methods[ method ] ) { 1356 return methods[ method ].apply( this, Array.prototype.slice.call( arguments, 1 ) ); 1357 } 1358 else if ( typeof method === 'object' || !method ) { 1359 return methods.init.apply( this, arguments ); 1360 } 1361 else { 1362 return $.error( 'Method ' + method + ' does not exist on jQuery.fn.superfish' ); 1363 } 1364 }; 1365 1366 $.fn.superfish.defaults = { 1367 popUpSelector: 'ul,.sf-mega', // within menu context 1368 hoverClass: 'sfHover', 1369 pathClass: 'overrideThisToUse', 1370 pathLevels: 1, 1371 delay: 800, 1372 animation: { opacity: 'show' }, 1373 animationOut: { opacity: 'hide' }, 1374 speed: 'normal', 1375 speedOut: 'fast', 1376 cssArrows: true, 1377 disableHI: false, 1378 onInit: $.noop, 1379 onBeforeShow: $.noop, 1380 onShow: $.noop, 1381 onBeforeHide: $.noop, 1382 onHide: $.noop, 1383 onIdle: $.noop, 1384 onDestroy: $.noop 1385 }; 1386
1387 // soon to be deprecated 1388 $.fn.extend( { 1389 hideSuperfishUl: methods.hide, 1390 showSuperfishUl: methods.show 1391 } ); 1392 1393} )( jQuery );; 1394/*! This file is auto-generated */ 1395window.addComment=function(v){var I,C,h,E=v.document,b={commentReplyClass:"comment-reply-link",commentReplyTitleId:"reply-title",cancelReplyId:"cancel-comment-reply-link",commentFormId:"commentform",temporaryFormId:"wp-temp-form-div",parentIdFieldId:"comment_parent",postIdFieldId:"comment_post_ID"},e=v.MutationObserver||v.WebKitMutationObserver||v.MozMutationObserver,i="querySelector"in E&&"addEventListener"in v,n=!!E.documentElement.dataset;function t(){o(),e&&new e(d).observe(E.body,{childList:!0,subtree:!0})}function o(e){if(i&&(I=g(b.cancelReplyId),C=g(b.commentFormId),I)){I.addEventListener("click",l);function t(e){if((e.metaKey||e.ctrlKey)&&13===e.keyCode&&"a"!==E.activeElement.tagName.toLowerCase())return C.removeEventListener("keydown",t),e.preventDefault(),C.submit.click(),!1}C&&C.addEventListener("keydown",t);for(var n=function(e){var t=b.commentReplyClass;e&&e.childNodes||(e=E);e=E.getElementsByClassName?e.getElementsByClassName(t):e.querySelectorAll("."+t);return e}(e),o=0,d=n.length;o<d;o++)n[o].addEventListener("click",r)}}function l(e){var t,n,o=g(b.temporaryFormId);o&&h&&(g(b.parentIdFieldId).value="0",t=o.textContent,o.parentNode.replaceChild(h,o),this.style.display="none",n=(o=(o=g(b.commentReplyTitleId))&&o.firstChild)&&o.nextSibling,o&&o.nodeType===Node.TEXT_NODE&&t&&(n&&"A"===n.nodeName&&n.id!==b.cancelReplyId&&(n.style.display=""),o.textContent=t),e.preventDefault())}function r(e){var t=g(b.commentReplyTitleId),t=t&&t.firstChild.textContent,n=this,o=a(n,"belowelement"),d=a(n,"commentid"),i=a(n,"respondelement"),l=a(n,"postid"),n=a(n,"replyto")||t;o&&d&&i&&l&&!1===v.addComment.moveForm(o,d,i,l,n)&&e.preventDefault()}function d(e){for(var t=e.length;t--;)if(e[t].addedNodes.length)return void o()}function a(e,t){return n?e.dataset[t]:e.getAttribute("data-"+t)}function g(e){return E.getElementById(e)}return i&&"loading"!==E.readyState?t():i&&v.addEventListener("DOMContentLoaded",t,!1),{init:o,moveForm:function(e,t,n,o,d){var i,l,r,a,m,c,s,e=g(e),n=(h=g(n),g(b.parentIdFieldId)),y=g(b.postIdFieldId),p=g(b.commentReplyTitleId),u=(p=p&&p.firstChild)&&p.nextSibling;if(e&&h&&n){void 0===d&&(d=p&&p.textContent),a=h,m=b.temporaryFormId,c=g(m),s=(s=g(b.commentReplyTitleId))?s.firstChild.textContent:"",c||((c=E.createElement("div")).id=m,c.style.display="none",c.textContent=s,a.parentNode.insertBefore(c,a)),o&&y&&(y.value=o),n.value=t,I.style.display="",e.parentNode.insertBefore(h,e.nextSibling),p&&p.nodeType===Node.TEXT_NODE&&(u&&"A"===u.nodeName&&u.id!==b.cancelReplyId&&(u.style.display="none"),p.textContent=d),I.onclick=function(){return!1};try{for(var f=0;f<C.elements.length;f++)if(i=C.elements[f],l=!1,"getComputedStyle"in v?r=v.getComputedStyle(i):E.documentElement.currentStyle&&(r=i.currentStyle),(i.offsetWidth<=0&&i.offsetHeight<=0||"hidden"===r.visibility)&&(l=!0),"hidden"!==i.type&&!i.disabled&&!l){i.focus();break}}catch(e){}return!1}}}}(window);; 1396!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.JetpackScriptDataModule=t():e.JetpackScriptDataModule=t()}(globalThis,()=>(()=>{"use strict";var e={729(e,t,r){r.d(t,{$8:()=>n.$8,IT:()=>n.IT,KS:()=>n.KS,L2:()=>n.L2,Sy:()=>n.Sy,au:()=>n.au,d_:()=>n.d_,e5:()=>n.e5,hT:()=>n.hT,lI:()=>n.lI,mH:()=>n.mH,oQ:()=>n.oQ,sV:()=>n.sV});var n=r(336)},336(e,t,r){function n(){return window.JetpackScriptData}function o(){return n()?.site}function i(e=""){return`${n()?.site.admin_url}${e}`}function u(e=""){return i(`admin.php?page=jetpack${e}`)}function a(e=""){return i(`admin.php?page=my-jetpack${e}`)}function c(){return n()?.site.plan?.features?.active??[]}function s(e){return-1!==c().indexOf(e)}function p(){return"wpcom"===n()?.site?.host}function f(){return"woa"===n()?.site?.host}function d(){return n()?.site?.is_wpcom_platform}function l(){return"unknown"===n()?.site?.host}function m(){return p()?"simple":f()?"woa":"jetpack"}function S(e){return n()?.user.current_user.capabilities[e]}r.d(t,{$8:()=>d,IT:()=>s,KS:()=>m,L2:()=>l,Sy:()=>p,au:()=>n,d_:()=>S,e5:()=>a,hT:()=>i,lI:()=>f,mH:()=>c,oQ:()=>u,sV:()=>o})}};const t={};function r(n){const o=t[n];if(void 0!==o)return o.exports;const i=t[n]={exports:{}};return e[n](i,i.exports,r),i.exports}r.d=(e,t)=>{for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.o=(e,t)=>Object.hasOwn(e,t),r.r=e=>{Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}
1396),Object.defineProperty(e,"__esModule",{value:!0})};let n={};r.r(n),r.d(n,{currentUserCan:()=>o.d_,getActiveFeatures:()=>o.mH,getAdminUrl:()=>o.hT,getJetpackAdminPageUrl:()=>o.oQ,getMyJetpackUrl:()=>o.e5,getScriptData:()=>o.au,getSiteData:()=>o.sV,getSiteType:()=>o.KS,isJetpackSelfHostedSite:()=>o.L2,isSimpleSite:()=>o.Sy,isWoASite:()=>o.lI,isWpcomPlatformSite:()=>o.$8,siteHasFeature:()=>o.IT});var o=r(729);return n})());; 1397!function(){"use strict";var e,t={noop:function(){},texturize:function(e){return(e=(e=(e=(e+="").replace(/'/g,"’").replace(/'/g,"’")).replace(/"/g,"”").replace(/"/g,"”").replace(/"/g,"”").replace(/[\u201D]/g,"”")).replace(/([\w]+)=&#[\d]+;(.+?)&#[\d]+;/g,'$1="$2"')).trim()},applyReplacements:function(e,t){if(e)return t?e.replace(/{(\d+)}/g,function(e,r){return void 0!==t[r]?t[r]:e}):e},getBackgroundImage:function(e){var t=document.createElement("canvas"),r=t.getContext&&t.getContext("2d");if(e){r.filter="blur(20px) ",r.drawImage(e,0,0);var o=t.toDataURL("image/png");return t=null,o}}},r=function(){function e(e,t){return Element.prototype.matches?e.matches(t):Element.prototype.msMatchesSelector?e.msMatchesSelector(t):void 0}function r(e,t,r,o){if(!e)return o();e.jpCarouselCancelFade&&e.jpCarouselCancelFade(),e.classList.remove("jp-carousel-fade"),e.style.removeProperty("display"),e.style.opacity=t,e.style.pointerEvents="none",e.offsetWidth,e.classList.add("jp-carousel-fade"),e.style.opacity=r;var a=1e3*parseFloat(getComputedStyle(e).transitionDuration)||0,n=setTimeout(function(){e.jpCarouselCancelFade=null,e.style.removeProperty("pointer-events"),o()},a+50);e.jpCarouselCancelFade=function(){clearTimeout(n),e.jpCarouselCancelFade=null}}return{closest:function(t,r){if(t.closest)return t.closest(r);var o=t;do{if(e(o,r))return o;o=o.parentElement||o.parentNode}while(null!==o&&1===o.nodeType);return null},matches:e,hide:function(e){e&&(e.style.display="none")},show:function(e){e&&(e.style.display="block")},fadeIn:function(e,o){r(e,0,1,o=o||t.noop)},fadeOut:function(e,o){o=o||t.noop,r(e,1,0,function(){e&&(e.style.display="none"),o()})},scrollToElement:function(e,t,r){if(!e||!t)return r?r():void 0;var o=t.querySelector(".jp-carousel-info-extra");o&&(o.style.minHeight=window.innerHeight-64+"px");var a=!0,n=Date.now(),i=t.scrollTop,l=Math.max(0,e.offsetTop-Math.max(0,window.innerHeight-function(e){var t=e.querySelector(".jp-carousel-info-footer"),r=e.querySelector(".jp-carousel-info-extra"),o=e.querySelector(".jp-carousel-info-content-wrapper");if(t&&r&&o){var a=window.getComputedStyle(r),n=parseInt(a.paddingTop,10)+parseInt(a.paddingBottom,10);return n=isNaN(n)?0:n,o.offsetHeight+t.offsetHeight+n}return 0}(t)))-t.scrollTop;function s(){a=!1}l=Math.min(l,t.scrollHeight-window.innerHeight),t.addEventListener("wheel",s),function e(){var c,u=Date.now(),d=(c=(u-n)/300)<.5?2*c*c:1-Math.pow(-2*c+2,2)/2,m=(d=d>1?1:d)*l;if(t.scrollTop=i+m,u<=n+300&&a)return requestAnimationFrame(e);r&&r(),o&&(o.style.minHeight=""),a=!1,t.removeEventListener("wheel",s)}()},getJSONAttribute:function(e,t){if(e&&e.hasAttribute(t))try{return JSON.parse(e.getAttribute(t))}catch{return}},convertToPlainText:function(e){var t=document.createElement("div");return t.textContent=e,t.innerHTML},stripHTML:function(e){var t=document.createElement("div");return t.innerHTML=e.replace(/<[^>]*>?/gm,""),t.textContent},emitEvent:function(e,t,r){var o;try{o=new CustomEvent(t,{bubbles:!0,cancelable:!0,detail:r||null})}catch{(o=document.createEvent("CustomEvent")).initCustomEvent(t,!0,!0,r||null)}e.dispatchEvent(o)},isTouch:function(){return"ontouchstart"in window||window.DocumentTouch&&document instanceof DocumentTouch},prefersReducedMotion:function(){return!!window.matchMedia&&window.matchMedia("(prefers-reduced-motion: reduce)").matches}}}();function o(){var o,a,n,i,l={},s={},c="",u=!1,d="div.gallery, div.tiled-gallery, ul.wp-block-gallery, ul.blocks-gallery-grid, figure.wp-block-gallery.has-nested-images, div.wp-block-jetpack-tiled-gallery, a.single-image-gallery",m=".gallery-item, .tiled-gallery-item, .blocks-gallery-item, .tiled-gallery__item",p=m+", .wp-block-image",g={},h="undefined"!=typeof wpcom&&wpcom.carousel&&wpcom.carousel.stat?wpcom.carousel.stat:t.noop,f="undefined"!=typeof wpcom&&wpcom.carousel&&wpcom.carousel.pageview?wpcom.carousel.pageview:t.noop;function v(t){if(!u)switch(t.which){case 38:t.preventDefault(),g.overlay.scrollTop-=100;break;case 40:t.preventDefault(),g.overlay.scrollTop+=100;break;case 39:t.preventDefault(),e.slideNext();break;case 37:case 8:t.preventDefault(),e.slidePrev();break;case 27:t.preventDefault(),k()}}function y(){u=!0}function w(){u=!1}function S(e){e.role="button",e.tabIndex=0,e.ariaLabel=jetpackCarouselStrings.image_label}function j(){g.overlay||(g.overlay=document.querySelector(".jp-carousel-overlay"),g.container=g.overlay.querySelector(".jp-carousel-wrap"),g.gallery=g.container.querySelector(".jp-carousel"),g.info=g.overlay.querySelector(".jp-carousel-info"),g.caption=g.
1397info.querySelector(".jp-carousel-caption"),g.commentField=g.overlay.querySelector("#jp-carousel-comment-form-comment-field"),g.emailField=g.overlay.querySelector("#jp-carousel-comment-form-email-field"),g.authorField=g.overlay.querySelector("#jp-carousel-comment-form-author-field"),g.urlField=g.overlay.querySelector("#jp-carousel-comment-form-url-field"),window.innerWidth<=760&&Math.round(window.innerWidth/760*110)<40&&r.isTouch(),[g.commentField,g.emailField,g.authorField,g.urlField].forEach(function(e){e&&(e.addEventListener("focus",y),e.addEventListener("blur",w))}),g.overlay.addEventListener("click",function(e){var t,o,a=e.target,n=!!r.closest(a,".jp-carousel-close-hint"),i=!!window.matchMedia("(max-device-width: 760px)").matches;a===g.overlay?i||k():n?k():a.classList.contains("jp-carousel-image-download")?h("download_original_click"):a.classList.contains("jp-carousel-comment-login")?(t=g.currentSlide,o=t?t.attrs.attachmentId:"0",window.location.href=jetpackCarouselStrings.login_url+"%23jp-carousel-"+o):r.closest(a,"#jp-carousel-comment-form-container")?function(e){var t=e.target,o=r.getJSONAttribute(g.container,"data-carousel-extra")||{},a=g.currentSlide.attrs.attachmentId,n=document.querySelector("#jp-carousel-comment-form-submit-and-info-wrapper"),i=document.querySelector("#jp-carousel-comment-form-spinner"),s=document.querySelector("#jp-carousel-comment-form-button-submit"),c=document.querySelector("#jp-carousel-comment-form");if(g.commentField&&g.commentField.getAttribute("id")===t.getAttribute("id"))y(),r.show(n);else if(r.matches(t,'input[type="submit"]')){e.preventDefault(),e.stopPropagation(),r.show(i),c.classList.add("jp-carousel-is-disabled");var u={action:"post_attachment_comment",nonce:jetpackCarouselStrings.nonce,blog_id:o.blog_id,id:a,comment:g.commentField.value};if(!u.comment.length)return void b(jetpackCarouselStrings.no_comment_text,!1);if(1!==Number(jetpackCarouselStrings.is_logged_in)&&(u.email=g.emailField.value,u.author=g.authorField.value,u.url=g.urlField.value,1===Number(jetpackCarouselStrings.require_name_email))){if(!u.email.length||!u.email.match("@"))return void b(jetpackCarouselStrings.no_comment_email,!1);if(!u.author.length)return void b(jetpackCarouselStrings.no_comment_author,!1)}var d=new XMLHttpRequest;d.open("POST",jetpackCarouselStrings.ajaxurl,!0),d.setRequestHeader("X-Requested-With","XMLHttpRequest"),d.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8"),d.onreadystatechange=function(){if(this.readyState===XMLHttpRequest.DONE&&this.status>=200&&this.status<300){var e;try{e=JSON.parse(this.response)}catch{return void b(jetpackCarouselStrings.comment_post_error,!1)}if("approved"===e.comment_status){b(jetpackCarouselStrings.comment_approved,!0);var t=function(e){for(var t=0;t<g.slides.length;t++)if(g.slides[t].attrs.attachmentId===e)return g.slides[t];return null}(a);t&&(t.attrs.commentsCount=(parseInt(t.attrs.commentsCount,10)||0)+1)}else"unapproved"===e.comment_status?b(jetpackCarouselStrings.comment_unapproved,!0):b(jetpackCarouselStrings.comment_post_error,!1);W(),delete l[a],_(a,void 0,!0),s.value=jetpackCarouselStrings.post_comment,r.hide(i),c.classList.remove("jp-carousel-is-disabled")}else b(jetpackCarouselStrings.comment_post_error,!1)};var m=[];for(var p in u)if(p){var h=encodeURIComponent(p)+"="+encodeURIComponent(u[p]);m.push(h.replace(/%20/g,"+"))}var f=m.join("&");d.send(f)}}(e):(r.closest(a,".jp-carousel-photo-icons-container")||a.classList.contains("jp-carousel-photo-title"))&&function(e){e.preventDefault();var t=e.target,o=g.info.querySelector(".jp-carousel-info-extra"),a=g.info.querySelector(".jp-carousel-image-meta"),n=g.info.querySelector(".jp-carousel-comments-wrapper"),i=g.info.querySelector(".jp-carousel-icon-info"),s=g.info.querySelector(".jp-carousel-icon-comments");function c(){s&&s.classList.remove("jp-carousel-selected"),i.classList.toggle("jp-carousel-selected"),n&&n.classList.remove("jp-carousel-show"),a&&(a.classList.toggle("jp-carousel-show"),a.classList.contains("jp-carousel-show")?o.classList.add("jp-carousel-show"):o.classList.remove("jp-carousel-show"))}function u(){if(i&&i.classList.remove("jp-carousel-selected"),s.classList.toggle("jp-carousel-selected"),a&&a.classList.remove("jp-carousel-show"),n)if(n.classList.toggle("jp-carousel-show"),n.classList.contains("jp-carousel-show")){o.classList.add("jp-carousel-show");var e=g.currentSlide;if(e){var t=l[e.attrs.attachmentId];t?t.hasMore&&T(e.attrs.attachmentId,t.nextOffset):_(e.attrs.attachmentId)}}else o.classList.remove("jp-carousel-show")}(r.closest(t,".jp-carousel-icon-info")||t.classList.contains("jp-carousel-photo-title"))&&(a&&a.classList.contains("jp-carousel-show")?r.scrollToElement(g.overlay,g.overlay,c):(c(),r.scrollToElement(g.info,g.overlay))),r.closest(t,".jp-carousel-icon-comments")&&(n&&n.classList.contains("jp-carousel-show")?r.scrollToElement(g.overlay,g.overlay,u):(u(),r.scrollToElement(g.info,g.overlay)))}(e)}),window.addEventListener("keydown",v),g.overlay.addEventListener("jp_carousel.afterOpen",function(){w(),g.slides.length<=1||(g.slides.length<=5?r.show(g.info.querySelector(".jp-swiper-pagination")):r.show(g.info.querySelector(".jp-carousel-pagination")))}),g.overlay.addEventListener("jp_carousel.beforeClose",function(){y(),document.documentElement.style.removeProperty("height"),e&&e.enable(),r.hide(g.info.querySelector(".jp-swiper-pagination")),r.hide(g.info.querySelector(".jp-carousel-pagination"))}),g.overlay.addEventListener("jp_carousel.afterClose",function(){window.history.pushState?history.pushState("",document.title,window.location.pathname+window.location.search):window.location.href="",c="",g.isOpen=!1}),g.overlay.addEventListener("touchstart",function(e){e.touches.length>1&&e.preventDefault()}))}function b(e,t){var o=g.overlay.querySelector("#jp-carousel-comment-post-results"),a="jp-carousel-comment-post-"+(t?"success":"error");o.innerHTML='<span class="'+a+'">'+e+"</span>",r.hide(g.overlay.querySelector("#jp-carousel-comment-form-spinner")),g.overlay.querySelector("#jp-carousel-comment-form").classList.remove("jp-carousel-is-disabled"),r.show(o)}function L(){var e=document.querySelectorAll("a img[data-attachment-id]");Array.prototype.forEach.call(e,function(e){var t=e.parentElement,o=t.parentElement;if(!o.classList.contains("gallery-icon")&&!r.closest(o,m)&&t.hasAttribute("href")){var a=!1;t.getAttribute("href").split("?")[0]===e.getAttribute("data-orig-file").split("?")[0]&&1===Number(jetpackCarouselStrings.single_image_gallery_media_file)&&(a=!0),t.getAttribute("href")===e.getAttribute("data-permalink")&&(a=!0),a&&(S(e),t.classList.add("single-image-gallery"),t.setAttribute("data-carousel-extra",JSON.stringify({blog_id:Number(jetpackCarouselStrings.blog_id)})))}})}function x(t,r){g.isOpen?(C(r),e.slideTo(r+1)):z(t,{startIndex:r})}function C(e){(!e||e<0||e>g.slides.length)&&(e=0),g.currentSlide=g.slides[e];var a,n,i=g.currentSlide,s=i.attrs.attachmentId;M(g.slides[e]),function(e){var t=[],r=g.slides.length;if(r>1){var o=e>0?e-1:r-1;t.push(o);var a=e<r-1?e+1:0;t.push(a)}t.forEach(function(e){var t=g.slides[e];t&&(M(t),1!==Number(jetpackCarouselStrings.display_background_image)||t.backgroundImage||F(t))})}(e),1!==Number(jetpackCarouselStrings.display_background_image)||g.slides[e].backgroundImage||F(g.slides[e]),r.hide(g.caption),function(e){var t,o,a,n,i,l,s;if(n=g.overlay.querySelector(".jp-carousel-photo-caption"),i=g.overlay.querySelector(".jp-carousel-caption"),l=g.overlay.querySelector(".jp-carousel-photo-title"),s=g.overlay.querySelector(".jp-carousel-photo-description"),r.hide(n),r.hide(i),r.hide(l),r.hide(s),t=A(e.caption)||"",o=A(e.title)||"",a=A(e.desc)||"",(t||o||a)&&(t&&(n.innerHTML=t,i.innerHTML=t,r.show(n),r.show(i)),r.stripHTML(t)===r.stripHTML(o)&&(o=""),r.stripHTML(t)===r.stripHTML(a)&&(a=""),r.stripHTML(o)===r.stripHTML(a)&&(a=""),a&&(s.innerHTML=a,r.show(s),o||t||(n.textContent=r.stripHTML(a),r.show(n))),o)){var c=r.stripHTML(o);l.textContent=c,t||(n.textContent=c,i.textContent=c,r.show(n)),r.show(l)}}
1397({caption:i.attrs.caption,title:i.attrs.title,desc:i.attrs.desc}),function(e){if(!e||1!==Number(jetpackCarouselStrings.display_exif))return!1;var t=g.info.querySelector(".jp-carousel-image-meta");if(!t)return!1;var r="";for(var o in e){var a=e[o],n=jetpackCarouselStrings.meta_data||[];if(0!==parseFloat(a)&&a.length&&-1!==n.indexOf(o)){switch(o){case"focal_length":a+="mm";break;case"shutter_speed":a=E(a);break;case"aperture":a="f/"+a}r+="<li><h5>"+jetpackCarouselStrings[o]+"</h5>"+a+"</li>"}}var i=t.querySelector("ul.jp-carousel-image-exif");if(""!==r){if(!i){(i=document.createElement("ul")).className="jp-carousel-image-exif";var l=t.querySelector(".jp-carousel-title-and-caption");l&&l.nextSibling?t.insertBefore(i,l.nextSibling):t.insertBefore(i,t.firstChild)}i.innerHTML=r,i.style.removeProperty("display")}else i&&i.parentNode.removeChild(i)}(g.slides[e].attrs.imageMeta),function(e){if(!e)return!1;var r,o=[e.attrs.origWidth,e.attrs.origHeight],a=document.createElement("a");a.href=e.attrs.src.replace(/\?.+$/,""),r=null!==a.hostname.match(/^i[\d]{1}\.wp\.com$/i)?a.href:e.attrs.origFile.replace(/\?.+$/,"");var n=g.info.querySelector(".jp-carousel-download-text"),i=g.info.querySelector(".jp-carousel-image-download");n.innerHTML=t.applyReplacements(jetpackCarouselStrings.download_original,o),i.setAttribute("href",r),i.style.removeProperty("display")}(i),1===Number(jetpackCarouselStrings.display_comments)&&(a=g.slides[e].attrs.commentsOpened,n=g.info.querySelector("#jp-carousel-comment-form-container"),1===parseInt(a,10)?r.fadeIn(n):r.fadeOut(n),function(e){var t=e.attrs.attachmentId,a=g.info.querySelector(".jp-carousel-comments"),n=l[t];if(clearInterval(o),r.hide(g.info.querySelector("#jp-carousel-comments-loading")),n)return a.innerHTML=n.html,H(n.count),r.show(a),void(n.hasMore&&I()&&T(t,n.nextOffset));a.innerHTML="",r.hide(a),H(parseInt(e.attrs.commentsCount,10)||0),I()&&_(t)}(i),r.hide(g.info.querySelector("#jp-carousel-comment-post-results")));var u=g.info.querySelector(".jp-carousel-pagination");if(u&&g.slides.length>5){var d=e+1;u.innerHTML="<span>"+d+" / "+g.slides.length+"</span>"}jetpackCarouselStrings.stats&&g.isOpen&&((new Image).src=document.location.protocol+"//pixel.wp.com/g.gif?"+jetpackCarouselStrings.stats+"&post="+encodeURIComponent(s)+"&rand="+Math.random()),g.isOpen&&f(s),c="#jp-carousel-"+s,window.location.hash=c}function k(){document.body.style.overflow=a,document.documentElement.style.overflow=n,W(),y(),r.emitEvent(g.overlay,"jp_carousel.beforeClose"),window.scrollTo(window.scrollX||window.pageXOffset||0,i||0),g.isOpen=!1,e.destroy(),g.slides=[],l={},s={},g.currentSlide=void 0,g.gallery.innerHTML="",r.fadeOut(g.overlay,function(){r.emitEvent(g.overlay,"jp_carousel.afterClose")})}function q(e){if("object"!=typeof e&&(e={}),void 0===e.origFile)return"";if(void 0===e.origWidth||void 0===e.maxWidth)return e.origFile;if(!e.largeFile)return e.origFile;var t=document.createElement("a");t.href=e.largeFile;var r=/^i[0-2]\.wp\.com$/i.test(t.hostname),o=function(e,t,r){var o,a=r?e.replace(/.*=([\d]+%2C[\d]+).*$/,"$1"):e.replace(/.*-([\d]+x[\d]+)\..+$/,"$1");return"9999"===(o=a!==e?r?a.split("%2C"):a.split("x"):[t,0])[0]&&(o[0]="0"),"9999"===o[1]&&(o[1]="0"),o}(e.largeFile,e.origWidth,r),a=parseInt(o[0],10),n=parseInt(o[1],10);e.origMaxWidth=e.maxWidth,e.origMaxHeight=e.maxHeight,void 0!==window.devicePixelRatio&&window.devicePixelRatio>1&&(e.maxWidth=e.maxWidth*window.devicePixelRatio,e.maxHeight=e.maxHeight*window.devicePixelRatio);var i=e.zoomHeadroom||1;if(i>1&&(e.maxWidth=e.maxWidth*i,e.maxHeight=e.maxHeight*i),a>=e.maxWidth||n>=e.maxHeight)return e.largeFile;if(r){if(-1===e.largeFile.lastIndexOf("?"))return e.largeFile;var l=function(e){var t;try{t=new URL(e)}catch(t){return e}var r=["quality","ssl","filter","brightness","contrast","colorize","smooth"],o=Array.from(t.searchParams.entries());return t.search="",o.forEach(([e,o])=>{r.includes(e)&&t.searchParams.append(e,o)}),t}(e.largeFile);return(e.origWidth>e.maxWidth||e.origHeight>e.maxHeight)&&(e.origMaxWidth=e.maxWidth,e.origMaxHeight=e.maxHeight,l.searchParams.set("fit",e.origMaxWidth+","+e.origMaxHeight)),l.toString()}return e.origFile}function E(e){return e>=1?Math.round(10*e)/10+"s":"1/"+Math.round(1/e)+"s"}
1397function A(e){return!e.match(" ")&&e.match("_")?"":e}function I(){var e=g.info.querySelector(".jp-carousel-comments-wrapper");return!!e&&e.classList.contains("jp-carousel-show")}function H(e){var t=g.info.querySelector(".jp-carousel-icon-comments .jp-carousel-has-comments-indicator");t&&(e>0?(t.innerText=e,t.classList.add("jp-carousel-show")):t.classList.remove("jp-carousel-show"))}function T(e,t){clearInterval(o),o=setInterval(function(){g.container.scrollTop+150>window.innerHeight&&(clearInterval(o),_(e,t))},300)}function _(e,t,a){var n=void 0===t;if(clearInterval(o),e&&g.currentSlide&&g.currentSlide.attrs.attachmentId===e&&(!s[e]||a)){(!t||t<1)&&(t=0);var i=g.info.querySelector(".jp-carousel-comments"),c=g.info.querySelector("#jp-carousel-comments-loading");r.show(c),n&&(r.hide(i),i.innerHTML="");var u=new XMLHttpRequest;s[e]=u;var d=function(){return s[e]===u},m=jetpackCarouselStrings.ajaxurl+"?action=get_attachment_comments&nonce="+jetpackCarouselStrings.nonce+"&id="+e+"&offset="+t;u.open("GET",m),u.setRequestHeader("X-Requested-With","XMLHttpRequest");var p=function(){r.fadeIn(i),r.fadeOut(c)};u.onload=function(){if(d()&&(delete s[e],g.currentSlide&&g.currentSlide.attrs.attachmentId===e)){var o,a=u.status>=200&&u.status<300;try{o=JSON.parse(u.responseText)}catch{}if(a&&o&&Array.isArray(o)){n&&(i.innerHTML="");for(var m=0;m<o.length;m++){var h=o[m];if(!i.querySelector("#jp-carousel-comment-"+h.id)){var f=document.createElement("div");f.classList.add("jp-carousel-comment"),f.setAttribute("id","jp-carousel-comment-"+h.id),f.innerHTML='<div class="comment-gravatar">'+h.gravatar_markup+'</div><div class="comment-content"><div class="comment-author">'+h.author_markup+'</div><div class="comment-date">'+h.date_gmt+"</div>"+h.content+"</div>",i.appendChild(f)}}var v=o.length>=10,y=t+10;v&&T(e,y);var w=i.querySelectorAll(".jp-carousel-comment").length,S=Math.max(parseInt(g.currentSlide.attrs.commentsCount,10)||0,w);o.length>0&&(r.show(i),H(S)),l[e]={html:i.innerHTML,count:S,hasMore:v,nextOffset:y},r.hide(c)}else p()}},u.onerror=function(){d()&&(delete s[e],g.currentSlide&&g.currentSlide.attrs.attachmentId===e&&p())},u.send()}}function M(e){var t=e.attrs,r=e.el.querySelector("img");if(!r.hasAttribute("data-loaded"))if(r.setAttribute("itemprop","image"),r.setAttribute("data-loaded",1),t.previewImage&&t.previewImage!==t.src){r.src=t.previewImage,r.style.filter="blur(8px)";var o=new window.Image;o.addEventListener("load",function(){r.hasAttribute("data-zoom-loaded")||(r.src=t.src),r.style.filter=""},{once:!0}),o.addEventListener("error",function(){r.style.filter=""},{once:!0}),o.src=t.src}else r.src=t.src}function F(e){var t=e.attrs.originalElement;if(t)if(t.complete&&0!==t.naturalHeight)O(e,t);else{var r=function(){t.removeEventListener("error",o),O(e,t)},o=function(){t.removeEventListener("load",r)};t.addEventListener("load",r,{once:!0}),t.addEventListener("error",o,{once:!0})}}function O(e,r){var o=t.getBackgroundImage(r);o&&(e.backgroundImage=o,e.el.style.backgroundImage="url("+o+")",e.el.style.backgroundSize="cover",e.el.style.backgroundPosition="center")}function W(){g.commentField&&(g.commentField.value="")}function N(e,o){g.slides=[];var a={width:window.innerWidth,height:window.innerHeight-64};0!==o&&null!==e[o].getAttribute("data-gallery-src")&&((new Image).src=e[o].getAttribute("data-gallery-src")),Array.prototype.forEach.call(e,function(e,o){var n=r.closest(e,"a"),i=e.getAttribute("data-orig-file")||e.getAttribute("src-orig"),l=e.getAttribute("data-attachment-id")||e.getAttribute("data-id")||"0",s=document.querySelector('img[data-attachment-id="'+l+'"] + figcaption');s=s?s.innerHTML:e.getAttribute("data-image-caption");var c={originalElement:e,attachmentId:l,commentsOpened:e.getAttribute("data-comments-opened")||"0",commentsCount:e.getAttribute("data-comments-count")||"0",imageMeta:r.getJSONAttribute(e,"data-image-meta")||{},title:e.getAttribute("data-image-title")||"",desc:e.getAttribute("data-image-description")||"",largeFile:e.getAttribute("data-large-file")||"",origFile:i||"",thumbSize:{width:e.naturalWidth,height:e.naturalHeight},caption:s||"",permalink:n&&n.getAttribute("href"),src:i||e.getAttribute("src")||""},u=r.closest(e,".tiled-gallery-item"),d=u&&u.querySelector(".tiled-gallery-caption"),m=d&&d.innerHTML;m&&(c.caption=m);var p=function(e){var t=e.getAttribute("data-orig-size")||"";if(t){var r=t.split(",");return{width:parseInt(r[0],10),height:parseInt(r[1],10)}}return{width:e.getAttribute("data-original-width")||e.getAttribute("width")||void 0,height:e.getAttribute("data-original-height")||e.getAttribute("height")||void 0}}(e);if(c.origWidth=p.width||c.thumbSize.width,c.origHeight=p.height||c.thumbSize.height,"undefined"!=typeof wpcom&&wpcom.carousel&&wpcom.carousel.generateImgSrc)c.src=wpcom.carousel.generateImgSrc(e,a);else{var h=function(e){return{origFile:c.src,origWidth:c.origWidth,origHeight:c.origHeight,maxWidth:a.width,maxHeight:a.height,largeFile:c.largeFile,zoomHeadroom:e}};c.zoomSrc=q(h(2)),c.src=q(h(1))}if(e.setAttribute("data-gallery-src",c.src),"0"!==c.attachmentId){c.title=t.texturize(c.title),c.desc=t.texturize(c.desc),c.caption=t.texturize(c.caption);var f=new Image,v=document.createElement("div");v.classList.add("swiper-slide"),v.setAttribute("itemprop","associatedMedia"),v.setAttribute("itemscope",""),v.setAttribute("itemtype","https://schema.org/ImageObject");var y=document.createElement("div");y.classList.add("swiper-zoom-container"),g.gallery.appendChild(v),v.appendChild(y),y.appendChild(f),v.setAttribute("data-attachment-id",c.attachmentId),v.setAttribute("data-permalink",c.permalink),v.setAttribute("data-orig-file",c.origFile),c.previewImage=e.currentSrc||e.getAttribute("src")||"";var w={el:v,attrs:c,index:o};g.slides.push(w)}})}function z(e,t){if(!window.JetpackSwiper){var o=document.querySelector("#jp-carousel-loading-overlay");r.show(o);var a=document.createElement("script");return a.id="jetpack-carousel-swiper-js",a.src=window.jetpackSwiperLibraryPath.url,a.async=!0,a.onload=function(){r.hide(o),R(e,t)},a.onerror=function(){r.hide(o)},void document.head.appendChild(a)}R(e,t)}function R(t,o){var c,u={imgSelector:".gallery-item [data-attachment-id], .tiled-gallery-item [data-attachment-id], img[data-attachment-id], img[data-id]",startIndex:0},d=r.getJSONAttribute(t,"data-carousel-extra");if(!d)return;const m=t.querySelectorAll(u.imgSelector);if(m.length&&(j(),!g.isOpen)){for(var p in g.isOpen=!0,a=getComputedStyle(document.body).overflow,document.body.style.overflow="hidden",n=getComputedStyle(document.documentElement).overflow,document.documentElement.style.overflow="hidden",i=window.scrollY||window.pageYOffset||0,g.container.setAttribute("data-carousel-extra",JSON.stringify(d)),h(["open","view_image"]),o||{})u[p]=o[p];-1===u.startIndex&&(u.startIndex=0),r.emitEvent(g.overlay,"jp_carousel.beforeOpen"),g.gallery.innerHTML="",l={},s={},g.overlay.style.opacity=1,g.overlay.style.display="block",N(m,u.startIndex),(e=new window.JetpackSwiper(".jp-carousel-swiper-container",{centeredSlides:!0,speed:r.prefersReducedMotion()?0:250,zoom:!0,loop:g.slides.length>1,enabled:g.slides.length>1,pagination:{el:".jp-swiper-pagination",clickable:!0},navigation:{nextEl:".jp-swiper-button-next",prevEl:".jp-swiper-button-prev"},initialSlide:u.startIndex,on:{init:function(){C(u.startIndex)}},preventClicks:!1,preventClicksPropagation:!1,preventInteractionOnTransition:!r.isTouch(),threshold:5})).on("slideChange",function(e){g.isOpen&&(C(e.realIndex),g.overlay.classList.remove("jp-carousel-hide-control
1397s"))}),e.on("zoomChange",function(e,t){t>1&&(function(e){if(e&&e.attrs.zoomSrc&&e.attrs.zoomSrc!==e.attrs.src){var t=e.el.querySelector("img");t&&!t.hasAttribute("data-zoom-loaded")&&(t.setAttribute("data-zoom-loaded",1),t.src=e.attrs.zoomSrc)}}(g.currentSlide),g.overlay.classList.add("jp-carousel-hide-controls")),1===t&&g.overlay.classList.remove("jp-carousel-hide-controls")}),e.on("doubleTap",function(e){if(clearTimeout(c),1===e.zoom.scale)var t=setTimeout(function(){g.overlay.classList.remove("jp-carousel-hide-controls"),clearTimeout(t)},150)}),e.on("tap",function(){e.zoom.scale>1&&(c=setTimeout(function(){g.overlay.classList.toggle("jp-carousel-hide-controls")},150))}),r.fadeIn(g.overlay,function(){r.emitEvent(g.overlay,"jp_carousel.afterOpen")})}}function P(e){if("click"!==e.type){if("keydown"===e.type){const t=document.activeElement.parentElement,r=t&&t.classList.contains("tiled-gallery__item");" "!==e.key&&"Enter"!==e.key||!r||$(e)}}else $(e)}function D(e){return(e||"").split("?")[0].replace(/\/$/,"")}function J(e){"A"===e.tagName&&(e=e.querySelector("img")||e);var t=e.parentElement,o=t?t.parentElement:null,a=null;if(o&&o.classList.contains("wp-block-image")?a=t.getAttribute("href"):t&&t.classList.contains("wp-block-image")&&t.querySelector(":scope > a")&&(a=t.querySelector(":scope > a").getAttribute("href")),a){var n=D(a),i=D(e.getAttribute("data-orig-file")),l=D(e.getAttribute("data-permalink"));if(n!==i&&n!==l)return!1}return!(t&&t.classList.contains("gallery-caption")||r.matches(t,"figcaption"))}function $(e){if(window.CSS&&window.CSS.supports&&window.CSS.supports("display","grid")){var t,o=e.target,a=r.closest(o,d);if(a){if(!(t=a)||!t.getAttribute("data-carousel-extra"))return;if(!J(o))return;document.documentElement.style.height="auto",e.preventDefault(),e.stopPropagation();var n=r.closest(o,p),i=Array.prototype.indexOf.call(a.querySelectorAll(p),n);z(a,{startIndex:i})}}}document.body.addEventListener("click",P),document.body.addEventListener("keydown",P),document.querySelectorAll(m+"img").forEach(function(e){J(e)&&S(e)}),1===Number(jetpackCarouselStrings.single_image_gallery)&&(L(),document.body.addEventListener("is.post-load",function(){L()})),window.addEventListener("hashchange",function(){var e=/jp-carousel-(\d+)/;if(window.location.hash&&e.test(window.location.hash)){if(window.location.hash!==c||!g.isOpen)if(window.location.hash&&g.gallery&&!g.isOpen&&history.back)history.back();else{c=window.location.hash;for(var t=window.location.hash.match(e),r=parseInt(t[1],10),o=document.querySelectorAll(d),a=0;a<o.length;a++){for(var n,i=o[a],l=i.querySelectorAll("img"),s=0;s<l.length;s++)if(parseInt(l[s].getAttribute("data-attachment-id"),10)===r||parseInt(l[s].getAttribute("data-id"),10)===r){n=s;break}if(void 0!==n){x(i,n);break}}}}else g.isOpen&&k()}),window.location.hash&&r.emitEvent(window,"hashchange")}"loading"!==document.readyState?o():document.addEventListener("DOMContentLoaded",o)}();;
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.