PageSourceSearch

https://hyperzon.io/files/meeting-scheduler.js?v=1790597437

js hyperzon.io collected 2026-09-28 12:10:54 UTC 3,742 bytes, 101 lines download raw bytes

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.