/* Static production pageviews/download intent. No application data to Umami. */ (() => { 'use strict'; const hostname = "player.nenasets.com"; const website = "dc1b14a6-d1ba-4802-b895-553b3c81c677"; const url = "/"; const title = "Alta Export Player"; const paths = ["/"]; const eligible = () => window.location.protocol === 'https:' && window.location.hostname === hostname && window.location.port === '' && paths.includes(window.location.pathname); if (!eligible() || window.__altaPageviewLoaded) return; window.__altaPageviewLoaded = true; const controls = {releaseAction: 'download_desktop_app'}; const events = {download_desktop_app: {tool: 'alta-export-player', format: 'desktop'}}; const own = (object, key) => Object.prototype.hasOwnProperty.call(object, key); // Rebuild, don't spread the input: no identity, arbitrary properties, referrer, // customer title, query, fragment, form, filename or upload data can survive. window.altaSafePageview = (type, payload) => { if (!eligible() || type !== 'event' || !payload) return null; if (payload.name && (typeof payload.name !== 'string' || !own(events, payload.name))) return null; const safe = { website, hostname, url, title, referrer: '', screen: typeof payload.screen === 'string' && /^\d{1,5}x\d{1,5}$/.test(payload.screen) ? payload.screen : undefined, language: typeof payload.language === 'string' && /^[a-z]{2,3}(?:-[A-Za-z0-9]{2,8})*$/.test(payload.language) ? payload.language : undefined }; if (payload.name) { safe.name = payload.name; safe.data = {...events[payload.name]}; } return safe; }; const tracker = document.createElement('script'); tracker.src = 'https://umami.nenasets.com/script.js'; tracker.defer = true; tracker.referrerPolicy = 'no-referrer'; tracker.crossOrigin = 'anonymous'; for (const [key, value] of Object.entries({ 'website-id': website, domains: hostname, 'auto-track': 'false', 'exclude-search': 'true', 'exclude-hash': 'true', 'fetch-credentials': 'omit', 'before-send': 'altaSafePageview' })) tracker.setAttribute('data-' + key, value); let sent = false; tracker.onload = () => { if (!sent && eligible() && window.umami) { sent = true; window.umami.track(); } }; // Capture intent once, before application handlers; never cancel/await navigation. // The web download anchor and native desktop/update behavior stay unchanged. document.addEventListener('click', event => { if (!eligible() || window.webavpNative || event.button !== 0) return; const control = event.target.closest?.('a[id]'); if (!control || control.disabled || control.getAttribute('aria-disabled') === 'true' || !own(controls, control.id) || !window.umami) return; const name = controls[control.id]; try { window.umami.track(name, {...events[name]}); } catch (_) { /* Analytics is optional. */ } }, true); document.head.appendChild(tracker); })();