1var __assign = (this && this.__assign) || function () { 2 __assign = Object.assign || function(t) { 3 for (var s, i = 1, n = arguments.length; i < n; i++) { 4 s = arguments[i]; 5 for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) 6 t[p] = s[p]; 7 } 8 return t; 9 }; 10 return __assign.apply(this, arguments); 11}; 12var gtgaMainJs = (function ($) { 13 'use strict'; 14 var _this = this; 15 /** 16 * Binds Download Tracking 17 * 18 * @returns {undefined} 19 */ 20 var VideoPercent = { 21 ZERO: 0, 22 TWENTYFIVE: 25, 23 FIFTY: 50, 24 SEVENTYFIVE: 75, 25 ONEHUNDRED: 100, 26 }; 27 function elementAddedCallback(addedNode) { 28 checkVisibilityEvents(); 29 } 30 var observer = new MutationObserver(function (mutationsList) { 31 mutationsList.forEach(function (mutation) { 32 if (mutation.type === 'childList') { 33 Array.prototype.forEach.call(mutation.addedNodes, function (addedNode) { 34 if (addedNode.nodeType === Node.ELEMENT_NODE) { 35 elementAddedCallback(addedNode); 36 } 37 }); 38 } 39 }); 40 }); 41 function getLinkClickParameters(event, url) { 42 var tmpURL = new URL(url); 43 var linkHostname = tmpURL.hostname; 44 var linkEvent = { 45 page_title: wpGoalTrackerGa.pageTitle, 46 link_url: url, 47 // page_location: window.location.href, 48 outbound: isLinkExternal(url), 49 link_domain: linkHostname, 50 link_text: $(event.target).text(), 51 link_classes: $(event.target).attr('class'), 52 }; 53 return linkEvent; 54 } 55 var click_event = function (event) { 56 trackCustomEvent(this, event.data.eventName, event.data.props); 57 if ((typeof event.target.href !== 'undefined' && 58 event.target.nodeName == 'A') || 59 (typeof event.currentTarget.href !== 'undefined' && 60 event.currentTarget.nodeName == 'A')) { 61 if ($(event.target).parent().attr('role') !== 'tab') { 62 handleLinks(this, event); 63 } 64 } 65 }; // End of click event function 66 function bindEmailLinksTracking() { 67 if (wpGoalTrackerGa.trackEmailLinks === '1') { 68 $('body').on('click', 'a[href^="mailto:"]', function (e) { 69 e.preventDefault(); 70 var email = this.href.split(':').pop(); 71 var page = getPageName(); 72 var eventParameters = { 73 page_title: page, 74 email_address: email, 75 page_location: window.location.href, 76 link_text: $(e.target).text(), 77 link_classes: $(e.target).attr('class'), 78 }; 79 trackCustomEvent(this, 'email_link_click', eventParameters); 80 handleLinks(this, e); 81 }); 82 } 83 } 84 function trackPageSpeed() { 85 if (window.performance && 86 window.performance.getEntriesByType && 87 wpGoalTrackerGa.pageSpeedTracking) { 88 var entries = window.performance.getEntriesByType('navigation'); 89 var pageLoadTime = 0; 90 if (entries.length > 0) { 91 var navTiming = entries[0]; 92 pageLoadTime = navTiming.loadEventEnd - navTiming.startTime; 93 } 94 if (pageLoadTime > 0) { 95 var pageLoadTimeSec = Math.round((pageLoadTime / 1000 + Number.EPSILON) * 100) / 100; 96 trackCustomEvent(this, 'page_load_time', { 97 page_load_time: pageLoadTimeSec, 98 }); 99 } 100 } 101 } // End of page speed event function 102 window.onload = function () { 103 if (wpGoalTrackerGa.pageSpeedTracking) { 104 setTimeout(function () { 105 trackPageSpeed(); 106 }, 100); 107 } 108 }; 109 var isLinkExternal = function (url) { 110 var query = new RegExp('//' + location.host + '($|/)'); 111 if (url.substring(0, 4) === 'http') { 112 if (!query.test(url)) { 113 return true; 114 } 115 } 116 return false;
117 }; 118 var link_track_external = function (event) { 119 var url = getUrl(event); 120 if (typeof url !== 'undefined' && url !== '') { 121 if (isLinkExternal(url)) { 122 link_track_all(event); 123 } 124 } 125 }; 126 var link_track_external_new_tab = function (event) { 127 var url = getUrl(event); 128 if (isLinkExternal(url)) { 129 var eventParameters = getLinkClickParameters(event, url); 130 trackCustomEvent(this, 'link_click', eventParameters); 131 } 132 }; 133 var link_track_all = function (event) { 134 var url = getUrl(event); 135 var hash = isJustHashLink(url); 136 if (typeof url !== 'undefined' && 137 url !== '' && 138 hash != '#' && 139 $(this).parent().attr('role') !== 'tab') { 140 var eventParameters = getLinkClickParameters(event, url); 141 trackCustomEvent(this, 'link_click', eventParameters); 142 event.preventDefault(); 143 if (typeof hash !== 'undefined' && hash !== '') { 144 window.location.hash = hash; 145 } 146 else { 147 setTimeout(function () { 148 window.location.href = url; 149 }, 250); 150 } 151 } 152 }; 153 var link_track_all_new_tab = function (event) { 154 var url = getUrl(event); 155 if (typeof url !== 'undefined' && url !== '') { 156 var eventParameters = getLinkClickParameters(event, url); 157 trackCustomEvent(this, 'link_click', eventParameters); 158 } 159 }; 160 var handleLinks = function (self, event) { 161 event.preventDefault(); 162 var link = getUrl(event); 163 if (link === '') 164 return; 165 var w; 166 var openInNewTab = isNewTab(self); 167 if (openInNewTab) { 168 w = window.open('', '_blank'); 169 } 170 var hash = isJustHashLink(link); 171 if (typeof hash !== 'undefined' && hash !== '') { 172 window.location.hash = hash; 173 } 174 else if (window.location.href !== link) { 175 setTimeout(function () { 176 if (openInNewTab) { 177 w.location.href = link; 178 } 179 else { 180 window.location.href = link; 181 } 182 }, 250, w); 183 } 184 }; 185 var getUrl = function (event) { 186 var url = ''; 187 var $target = $(event.target); 188 var $link = $target.closest('a'); 189 if ($link.length) { 190 var href = $link.attr('href'); 191 if (href && href !== '#') { 192 url = $link.prop('href'); 193 } 194 } 195 return url; 196 }; 197 var isJustHashLink = function (url) { 198 if (url.indexOf('#') === 0) { 199 return url; 200 } 201 var currentUrl = new URL(window.location.href); 202 var targetUrl = new URL(url, currentUrl); 203 if (targetUrl.origin !== currentUrl.origin) { 204 return ''; 205 } 206 if (targetUrl.pathname === currentUrl.pathname && 207 targetUrl.search === currentUrl.search && 208 targetUrl.hash !== '') { 209 return targetUrl.hash; 210 } 211 return ''; 212 }; 213 var isNewTab = function (self) { 214 var target = $(self).attr('target'); 215 if (typeof target !== 'undefined' && target.trim() === '_blank') { 216 return true; 217 } 218 return false; 219 }; 220 $(document).ready(function () { 221 var targetNode = document.body; 222 var config = { childList: true, subtree: true }; 223 observer.observe(targetNode, config); 224 $(window).on('scroll', checkVisibilityEvents); 225 // We also want to check it when 226 checkVisibilityEvents(); 227 if (wpGoalTrackerGa.trackEmailLinks) { 228 bindEmailLinksTracking(); 229 } 230 // Bind link tracking events 231 if (wpGoalTrackerGa.trackLinks.enabled) { 232 if (wpGoalTrackerGa.trackLinks.type === 'all') { 233 $('body').on('click', "a:not([target~='_blank']):not(.video_popup):not(.dtq-video-popup-trigger):not(:has(.video_popup)):not(.video_popup *)", link_track_all); 234 $('body').on('click', "a[target~='_blank']:not(.video_popup):not(.dtq-video-popup-trigger):not(:has(.video_popup)):not(.video_popup *)", link_track_all_new_tab); 235 } 236 else if (wpGoalTrackerGa.trackLinks.type === 'external') { 237 $('body').on('click', "a:not([target~='_blank']):not(.video_popup):not(.dtq-video-popup-trigger):not(:has(.video_popup)):not(.video_popup *)", link_track_external); 238 $('body').on('click', "a[target~='_blank']:not(.video_popup):not(.dtq-video-popup-trigger):not(:has(.video_popup)):not(.video_popup *)", link_track_external_new_tab); 239 } 240 } 241 wpGoalTrackerGa.click.forEach(function (el) { 242 var selector = makeSelector(el); 243 $('body').on('click', selector, el, click_event); 244 }); 245 }); 246 function makeSelector(click_option) { 247 var selector = ''; 248 if (click_option.selectorType === 'class') { 249 selector += '.'; 250 } 251 else if (click_option.selectorType === 'id') { 252 selector += '#'; 253 } 254 selector += click_option.selector; 255 return selector; 256 } 257 function checkVisibilityEvents() { 258 // TO DO this code can be simplified a lot. May be better to use 259 // $('element').visibility() 260 var ga_window = $(window).height(); 261 var ga_visibility_top = $(document).scrollTop(); 262 for (var i = 0; i < wpGoalTrackerGa.visibility.length; i++) { 263 if (!wpGoalTrackerGa.visibility[i].sent) { 264 // NB was unescapeChars( wpGoalTrackerGa.visibility[i].select) 265 var $select = $(makeSelector(wpGoalTrackerGa.visibility[i])); 266 wpGoalTrackerGa.visibility[i].offset = $select.offset(); 267 if (wpGoalTrackerGa.visibility[i].offset && 268 ga_visibility_top + ga_window >= 269 wpGoalTrackerGa.visibility[i].offset.top + $
269select.height()) { 270 trackCustomEvent($select, wpGoalTrackerGa.visibility[i].eventName, wpGoalTrackerGa.visibility[i].props); 271 wpGoalTrackerGa.visibility[i].sent = true; 272 } 273 } 274 } 275 } // End of bindVisibilityEvents 276 var trackCustomEventBasic = function (self, name, props) { 277 Object.keys(props).forEach(function (key) { 278 props[key] = prepareProps(self, props[key]); 279 }); 280 gtag('event', name, __assign({}, props)); 281 }; 282 283 function returnOriginalProp(self, prop) { 284 return prop; 285 } 286 function getPageName() { 287 if ('1' === wpGoalTrackerGa.isFrontPage) { 288 return 'Home'; 289 } 290 else { 291 if (typeof wpGoalTrackerGa.pageTitle !== 'undefined') { 292 return wpGoalTrackerGa.pageTitle; 293 } 294 } 295 return ''; 296 } 297 var trackCustomEvent = typeof trackCustomEventPro === 'function' 298 ? trackCustomEventPro 299 : trackCustomEventBasic; 300 var prepareProps = typeof get_placeholder === 'function' 301 ? get_placeholder 302 : returnOriginalProp; 303 return { isJustHashLink: isJustHashLink }; 304})(jQuery); 305
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.