1/* Medición sobre la etiqueta y el consentimiento existentes del sitio. */ 2(function () { 3 'use strict'; 4 var config = window.gigantesBasketballAnalyticsConfig; 5 if (!config || config.enabled !== true || !/^(www\.)?gigantes\.com$/i.test(window.location.hostname) 6 || config.measurementId !== 'G-JNNLM0RDZD' || window.gigantesBasketballAnalytics) return; 7 var viewed = new Set(); 8 var controls = new WeakMap(); 9 var states = ['scheduled', 'live', 'halftime', 'final', 'postponed', 'suspended', 'cancelled']; 10 11 function allowed() { 12 try { 13 return typeof window.gtag === 'function' && typeof window.cmplz_has_consent === 'function' 14 && window.cmplz_has_consent('statistics') === true 15 && !(typeof window.cmplz_is_bot === 'function' && window.cmplz_is_bot()); 16 } catch (e) { return false; } 17 } 18 function send(name, data) { 19 if (!allowed()) return false; 20 try { 21 window.gtag('event', name, Object.assign({ send_to: config.measurementId }, data)); 22 return true; 23 } catch (e) { return false; } 24 } 25 function context(element) { 26 try { 27 var data = JSON.parse(element.dataset.basketballContext); 28 if (!data || typeof data.competition !== 'string' || typeof data.game_id !== 'string' 29 || !/^[a-z0-9-]{1,100}$/.test(data.competition) || !/^[A-Za-z0-9:_-]{1,100}$/.test(data.game_id) 30 || states.indexOf(data.match_status) === -1) return null; 31 var clean = { competition: data.competition, game_id: data.game_id, match_status: data.match_status }; 32 if (['pending', 'available'].indexOf(data.availability) !== -1) clean.availability = data.availability; 33 return clean; 34 } catch (e) { return null; } 35 } 36 function views(root) { 37 if (!allowed()) return; 38 (root || document).querySelectorAll('[data-basketball-match]').forEach(function (element) { 39 var data = context(element); 40 if (!data || !data.availability) return; 41 var key = data.competition + '/' + data.game_id; 42 if (!viewed.has(key) && send('basketball_match_view', data)) viewed.add(key); 43 }); 44 } 45 function entry(element) { 46 if (element.closest('.basketball-agenda')) return 'agenda'; 47 return element.closest('.basketball-strip') ? 'strip' : 'results'; 48 } 49 function date(value) { 50 if (!/^\d{4}-\d{2}-\d{2}$/.test(value)) return false; 51 var parsed = new Date(value + 'T00:00:00Z'); 52 return Number.isFinite(parsed.getTime()) && parsed.toISOString().slice(0, 10) === value 53 && value >= '1900-01-01' && value <= '2199-12-31'; 54 } 55 function agenda(root, day, competition, control) { 56 if (['previous', 'next', 'today', 'date_selector', 'competition_selector', 'submit'].indexOf(control) === -1) return; 57 var oldDay = root.dataset.basketballDate; 58 var oldCompetition = root.dataset.basketballCompetition; 59 if (!date(day) || !date(oldDay) || !/^[a-z0-9-]{0,100}$/.test(competition) 60 || !/^[a-z0-9-]{0,100}$/.test(oldCompetition)) return; 61 if (day !== oldDay) send('basketball_agenda_date_change', { selected_date: day, previous_date: oldDay, 62 competition: competition || 'all', control: control }); 63 if (competition !== oldCompetition) send('basketball_agenda_competition_change', { competition: competition || 'all', 64 previous_competition: oldCompetition || 'all', selected_date: day, control: control }); 65 } 66 function click(event) { 67 if (event.defaultPrevented || (event.type === 'click' && event.button !== 0) || (event.type === 'auxclick' && event.button !== 1)) return; 68 var target = event.target.closest && event.target.closest('a'); 69 if (!target || target.closest('[hidden]')) return; 70 if (target.hasAttribute('data-basketball-match-link')) { 71 var data = context(target); 72 if (data) send('basketball_match_click', Object.assign(data, { entry_point: entry(target) })); 73 } 74 if (target.hasAttribute('data-basketball-day')) { 75 var root = target.closest('.basketball-agenda'); 76 if (root) agenda(root, target.dataset.basketballDay, root.dataset.basketballCompetition, target.dataset.basketballControl); 77 } 78 } 79 document.addEventListener('click', click); 80 document.addEventListener('auxclick', click); 81 document.addEventListener('change', function (event) { 82 var target = event.target; 83 var form = target.closest && target.closest('[data-agenda-filters]'); 84 if (form && ['agenda_fecha', 'agenda_competicion'].indexOf(target.name) !== -1) controls.set(form, target.name === 'agenda_fecha' ? 'date_selector' : 'competition_selector'); 85 }, true); 86 document.addEventListener('submit', function (event) { 87 var form = event.target; 88 if (event.defaultPrevented || !form.matches('[data-agenda-filters]') || !form.checkValidity()) return; 89 var root = form.closest('.basketball-agenda'); 90 if (!root) return; 91 var day = form.elements.namedItem('agenda_fecha'); 92 var competition = form.elements.namedItem('agenda_competicion'); 93 if (day && competition) agenda(root, day.value, competition.value, event.submitter ? 'submit' : (control
93s.get(form) || 'submit')); 94 controls.delete(form); 95 }); 96 window.gigantesBasketballAnalytics = { 97 views: views, 98 tab: function (root, group, index) { 99 var element = root.querySelector('[data-basketball-match]'); 100 var data = element && context(element); 101 var names = group === 'view' ? ['summary', 'boxscore', 'play_by_play'] : (group === 'team' ? ['home', 'away'] : []); 102 if (data && names[index]) send('basketball_match_tab_change', Object.assign(data, { tab_group: group, tab_name: names[index] })); 103 } 104 }; 105 function ready() { window.setTimeout(function () { views(document); }, 0); } 106 ['cmplz_fire_categories', 'cmplz_run_after_all_scripts'].forEach(function (name) { document.addEventListener(name, ready); }); 107 window.addEventListener('load', ready); 108 views(document); 109})();
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.