1(function () { 2 'use strict'; 3 4 var sourceUrl = 'https://meetings.moburst.com/embed/hyperzon'; 5 6 function addAttributionAndLoad(frame) { 7 if (!frame || frame.dataset.loaded === 'true') return; 8 9 var params = new URLSearchParams(); 10 new URLSearchParams(window.location.search).forEach(function (value, key) { 11 if (/^utm_/i.test(key) || key === 'gclid' || key === 'fbclid' || key === 'msclkid') { 12 params.append(key, value); 13 } 14 }); 15 16 params.set('page_url', window.location.href); 17 if (document.title) params.set('page_title', document.title); 18 19 var hubspot = document.cookie.match(/(?:^|;\s*)hubspotutk=([a-f0-9]{32})/i); 20 if (hubspot) params.set('hutk', hubspot[1]); 21 22 var src = frame.getAttribute('data-src') || sourceUrl; 23 frame.src = src + (src.indexOf('?') > -1 ? '&' : '?') + params.toString(); 24 frame.dataset.loaded = 'true'; 25 } 26 27 function initialize() { 28 var dialog = document.getElementById('meeting-scheduler'); 29 var closeButton = dialog && dialog.querySelector('[data-meeting-scheduler-close]'); 30 var modalFrame = dialog && dialog.querySelector('[data-meeting-scheduler-frame]'); 31 var lastTrigger = null; 32 var closeTimer = null; 33 var closeAnimationMs = window.matchMedia('(prefers-reduced-motion: reduce)').matches ? 0 : 240; 34 35 document.querySelectorAll('.meeting-scheduler-inline [data-meeting-scheduler-frame]').forEach(addAttributionAndLoad); 36 37 if (!dialog || !modalFrame || typeof dialog.showModal !== 'function') return; 38 39 modalFrame.addEventListener('load', function () { 40 dialog.classList.remove('is-loading'); 41 }, { once: true }); 42 43 function closeDialog() { 44 if (!dialog.open || dialog.hasAttribute('data-closing')) return; 45 46 dialog.setAttribute('data-closing', ''); 47 dialog.classList.remove('is-visible'); 48 closeTimer = window.setTimeout(function () { 49 dialog.close(); 50 dialog.removeAttribute('data-closing'); 51 closeTimer = null; 52 }, closeAnimationMs); 53 } 54 55 document.addEventListener('click', function (event) { 56 var trigger = event.target.closest && event.target.closest('.meeting-scheduler-trigger'); 57 if (!trigger) return; 58 59 event.preventDefault(); 60 if (closeTimer !== null) { 61 window.clearTimeout(closeTimer); 62 closeTimer = null; 63 dialog.removeAttribute('data-closing'); 64 } 65 lastTrigger = trigger; 66 if (!dialog.open) dialog.showModal(); 67 window.requestAnimationFrame(function () { 68 dialog.classList.add('is-visible'); 69 }); 70 addAttributionAndLoad(modalFrame); 71 if (closeButton) closeButton.focus(); 72 }); 73 74 dialog.addEventListener('cancel', function (event) { 75 event.preventDefault(); 76 closeDialog(); 77 }); 78 79 if (closeButton) { 80 closeButton.addEventListener('click', function () { 81 closeDialog(); 82 }); 83 } 84 85 dialog.addEventListener('click', function (event) { 86 if (event.target === dialog) closeDialog(); 87 }); 88 89 dialog.addEventListener('close', function () { 90 if (lastTrigger && lastTrigger.isConnected) { 91 lastTrigger.focus({ preventScroll: true }); 92 } 93 }); 94 } 95 96 if (document.readyState === 'loading') { 97 document.addEventListener('DOMContentLoaded', initialize, { once: true }); 98 } else { 99 initialize(); 100 } 101})();
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.