PageSourceSearch

https://cdn.gigantes.com/wp-content/plugins/acb-liga-endesa/assets/js/analytics.js?ver=1790888852

js gigantes.com collected 2026-10-02 02:59:44 UTC 6,258 bytes, 109 lines download raw bytes

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.