PageSourceSearch

https://greenberetfoundation.org/wp-content/cache/min/1/wp-content…/js/video-modal-fallback.js?ver=1790694112

js greenberetfoundation.org collected 2026-10-02 02:40:23 UTC 7,263 bytes, 44 lines download raw bytes

1(function(){if(window.GBFVideoModalHandlerLoaded){return}
2window.GBFVideoModalHandlerLoaded=!0;window.GBFVideoModalFallbackEnhancedLoaded=!0;window.GBFVideoModalFallbackLoaded=!0;var triggerSelector='.partner-video, .jedburghpodcast_vid, .gbf-video-trigger, .play, .playcontainer, .playcontainersub, [data-video], [data-video-id], [data-video-url]';var containerSelector='.playcontainer, .playcontainersub, .play, .gbf-video-trigger, .partner-video, .jedburghpodcast_vid';function hasInteractiveParent(node){return!!(node&&node.closest&&node.closest('a, button'))}
3function getAttributeVideo(node){if(!node||!node.getAttribute){return''}
4return node.getAttribute('data-video')||node.getAttribute('data-video-id')||node.getAttribute('data-video-url')||''}
5function getYouTubeId(value){var rawValue=String(value||'').trim();var srcMatch;var parsedUrl;var queryId;var pathMatch;var fallbackMatch;if(!rawValue){return''}
6if(/^[A-Za-z0-9_-]{11}$/.test(rawValue)){return rawValue}
7srcMatch=rawValue.match(/\bsrc=["']([^"']+)["']/i);if(srcMatch){return getYouTubeId(srcMatch[1])}
8try{parsedUrl=new URL(rawValue,window.location.href);queryId=parsedUrl.searchParams.get('v');if(queryId&&/^[A-Za-z0-9_-]{11}$/.test(queryId)){return queryId}
9pathMatch=parsedUrl.pathname.match(/(?:embed|shorts|live)\/([A-Za-z0-9_-]{11})/);if(pathMatch){return pathMatch[1]}
10if(parsedUrl.hostname.indexOf('youtu.be')!==-1){pathMatch=parsedUrl.pathname.replace(/^\//,'').match(/^([A-Za-z0-9_-]{11})/);if(pathMatch){return pathMatch[1]}}}catch(error){}
11fallbackMatch=rawValue.match(/(?:v=|embed\/|embed%2F|shorts\/|shorts%2F|live\/|live%2F|youtu\.be\/|youtu\.be%2F)([A-Za-z0-9_-]{11})/i);if(fallbackMatch){return fallbackMatch[1]}
12if((rawValue.indexOf('youtube')!==-1||rawValue.indexOf('youtu.be')!==-1)&&rawValue.match(/[A-Za-z0-9_-]{11}/)){return rawValue.match(/[A-Za-z0-9_-]{11}/)[0]}
13return''}
14function getLegacyPlayVideo(trigger){var scope=trigger;var jsonNode;var lightboxData;var firstItem;if(!scope){return''}
15jsonNode=scope.querySelector?scope.querySelector('.w-json'):null;if(!jsonNode&&scope.closest){scope=scope.closest(containerSelector);jsonNode=scope&&scope.querySelector?scope.querySelector('.w-json'):null}
16if(!jsonNode){return''}
17try{lightboxData=JSON.parse(jsonNode.textContent||'{}');firstItem=lightboxData.items&&lightboxData.items[0];return firstItem?(firstItem.originalUrl||firstItem.url||firstItem.html||firstItem.thumbnailUrl||''):''}catch(error){return''}}
18function getTriggerVideoValue(trigger){var videoValue=getAttributeVideo(trigger);var parentWithVideo;var childWithVideo;if(videoValue){return videoValue}
19parentWithVideo=trigger&&trigger.closest?trigger.closest('[data-video], [data-video-id], [data-video-url]'):null;videoValue=getAttributeVideo(parentWithVideo);if(videoValue){return videoValue}
20childWithVideo=trigger&&trigger.querySelector?trigger.querySelector('[data-video], [data-video-id], [data-video-url]'):null;videoValue=getAttributeVideo(childWithVideo);if(videoValue){return videoValue}
21return getLegacyPlayVideo(trigger)}
22function ensureBackdrop(){var backdrop;if(document.querySelector('.modal-backdrop.gbf-video-backdrop')){return}
23backdrop=document.createElement('div');backdrop.className='modal-backdrop fade show gbf-video-backdrop';document.body.appendChild(backdrop)}
24function clearBackdrops(){document.querySelectorAll('.modal-backdrop.gbf-video-backdrop').forEach(function(backdrop){if(backdrop.parentNode){backdrop.parentNode.removeChild(backdrop)}})}
25function ensureVideoModal(){var modal=document.getElementById('videoModal');var modalBody;var iframe;if(!modal){modal=document.createElement('div');modal.className='modal fade video-modal';modal.id='videoModal';modal.tabIndex=-1;modal.setAttribute('aria-hidden','true');modal.innerHTML='<button type="button" class="close" data-dismiss="modal" aria-label="Close">'+'<span aria-hidden="true">&times;</span>'+'</button>'+'<div class="modal-dialog modal-dialog-centered modal-xl">'+'<div class="modal-content">'+'<div class="modal-body"></div>'+'</div>'+'</div>';document.body.appendChild(modal)}
26iframe=modal.querySelector('iframe');if(!iframe){modalBody=modal.querySelector('.modal-body')||modal;iframe=document.createElement('iframe');iframe.width='560';iframe.height='315';iframe.title='YouTube video player';iframe.frameBorder='0';iframe.allow='accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share';iframe.referrerPolicy='strict-origin-when-cross-origin';iframe.allowFullscreen=!0;modalBody.appendChild(iframe)}
27return modal}
28function isModalOpen(){var modal=document.getElementById('videoModal');return!!(modal&&modal.classList.contains('show'))}
29function openVideoModal(videoValue){var videoId=getYouTubeId(videoValue);var modal;var iframe;
29if(!videoId){return!1}
30modal=ensureVideoModal();iframe=modal.querySelector('iframe');if(iframe){iframe.setAttribute('src','https://www.youtube.com/embed/'+encodeURIComponent(videoId)+'?autoplay=1&rel=0')}
31modal.style.display='block';modal.removeAttribute('aria-hidden');modal.setAttribute('aria-modal','true');modal.classList.add('show');document.body.classList.add('modal-open');ensureBackdrop();return!0}
32function closeVideoModal(){var modal=document.getElementById('videoModal');var iframe;if(!modal){return}
33modal.classList.remove('show');modal.style.display='none';modal.setAttribute('aria-hidden','true');modal.removeAttribute('aria-modal');document.body.classList.remove('modal-open');iframe=modal.querySelector('iframe');if(iframe){iframe.setAttribute('src','')}
34clearBackdrops()}
35function handleTrigger(event){var trigger=event.target.closest(triggerSelector);var videoValue;if(!trigger){return}
36videoValue=getTriggerVideoValue(trigger);if(!getYouTubeId(videoValue)){return}
37event.preventDefault();event.stopPropagation();openVideoModal(videoValue)}
38document.addEventListener('click',handleTrigger,!0);document.addEventListener('keydown',function(event){var trigger;var videoValue;if(event.key!=='Enter'&&event.key!==' '){return}
39trigger=event.target.closest(triggerSelector);if(!trigger||trigger.matches('a, button')){return}
40videoValue=getTriggerVideoValue(trigger);if(!getYouTubeId(videoValue)){return}
41event.preventDefault();openVideoModal(videoValue)},!0);document.addEventListener('click',function(event){var modal=document.getElementById('videoModal');if(!modal||!isModalOpen()){return}
42var isDismiss=!!event.target.closest('#videoModal .close, #videoModal [data-dismiss="modal"], .modal-backdrop.gbf-video-backdrop');var isOutside=event.target===modal;if(!isDismiss&&!isOutside){return}
43event.preventDefault();closeVideoModal()});document.addEventListener('keydown',function(event){if((event.key==='Escape'||event.key==='Esc')&&isModalOpen()){closeVideoModal()}});document.addEventListener('hidden.bs.modal',function(event){if(event.target&&event.target.id==='videoModal'){closeVideoModal()}});document.addEventListener('DOMContentLoaded',function(){document.querySelectorAll('.gbf-video-trigger, .play, .playcontainer, .playcontainersub').forEach(function(trigger){if(!getYouTubeId(getTriggerVideoValue(trigger))||hasInteractiveParent(trigger)){return}
44trigger.setAttribute('role','button');if(!trigger.hasAttribute('tabindex')){trigger.setAttribute('tabindex','0')}})})})()

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.