@convivainc/conviva-js-appanalytics-click-tracking
Version:
Conviva Application Analytics Link & Button Click Tracking Plugin
9 lines (7 loc) • 9.87 kB
JavaScript
/*!
* Link Click tracking for Snowplow v0.3.15 (http://bit.ly/sp-js)
* Copyright 2022 Snowplow Analytics Ltd, 2010 Anthon Pang
* Licensed under BSD-3-Clause
*/
;!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((e="undefined"!=typeof globalThis?globalThis:e||self).snowplowLinkClickTracking={})}(this,(function(e){function t(e){for(var t,n=[],r=1;r<arguments.length;r++)n[r-1]=arguments[r];return null!==(t=null==e?void 0:e.map((function(e){if("function"!=typeof e)return e;try{return e.apply(void 0,n)}catch(e){}})).filter(Boolean))&&void 0!==t?t:[]}function n(e){var t=e.event;e=t.sc;var n=t.dt;return t=function(){var e,t={},n=[],r=[],o=[],i=function(e,n){null!=n&&""!==n&&(t[e]=n)};return{add:i,addDict:function(e){for(var t in e)Object.prototype.hasOwnProperty.call(e,t)&&i(t,e[t])},addJson:function(e,t,o){var i;if(i=o)e:{if(null!=o&&(o.constructor==={}.constructor||o.constructor===[].constructor))for(var a in o)if(Object.prototype.hasOwnProperty.call(o,a)){i=!0;break e}i=!1}i&&(e={keyIfEncoded:e,keyIfNotEncoded:t,json:o},r.push(e),n.push(e))},addContextEntity:function(e){o.push(e)},getPayload:function(){return t},getJson:function(){return n},withJsonProcessor:function(t){e=t},build:function(){return null==e||e(this,r,o),t}}}(),e={sc:"sp/ue/1-0-0",dt:{sc:e,dt:n}},t.add("e","ue"),t.addJson("ue_px","ue_pr",e),t}function r(e){return n({event:e={sc:"sp/lc/1-0-1",dt:i({targetUrl:e.targetUrl,elementId:e.elementId,elementClasses:e.elementClasses,elementTarget:e.elementTarget,elementContent:e.elementContent})}})}function o(e){return n({event:e={sc:"cv/bc/1-0-0",dt:i({elementType:e.elementType,elementId:e.elementId,elementClasses:e.elementClasses,elementName:e.elementName,elementText:e.elementText,elementValue:e.elementValue})}})}function i(e,t){void 0===t&&(t={});var n,r={};for(n in e)(t[n]||null!==e[n]&&void 0!==e[n])&&(r[n]=e[n]);return r}function a(e,t,n,r){return e.addEventListener?(e.addEventListener(t,n,r),!0):e.attachEvent?e.attachEvent("on"+t,n):void(e["on"+t]=n)}function c(e){if(null==e||"object"!=typeof e||Array.isArray(e))return function(){return!0};var t=Object.prototype.hasOwnProperty.call(e,"allowlist"),n=function(e){var t={};if(e=e.allowlist||e.denylist){Array.isArray(e)||(e=[e]);for(var n=0;n<e.length;n++)t[e[n]]=!0}return t}(e);return function(e,t){return e.hasOwnProperty("filter")&&e.filter?e.filter:t}(e,(function(e){e:{var r=0;for(e=e.className.match(/\S+/g)||[];r<e.length;r++)if(n[e[r]]){r=!0;break e}r=!1}return r===t}))}function l(e,n,o){for(var i,a,c,l;null!==(i=n.parentElement)&&null!=i&&"A"!==(a=n.tagName.toUpperCase())&&"AREA"!==a;)n=i;if(null!=(i=n).href){(a=i.hostname)||(a=i.href,a=(c=/^(?:(?:https?|ftp):)\/*(?:[^@]+@)?([^:/#]+)/.exec(a))?c[1]:a),c=a.toLowerCase();var u=i.href.replace(a,c);/^(javascript|vbscript|jscript|mocha|livescript|ecmascript|mailto):/i.test(u)||(a=i.id,c=i.className.match(/\S+/g)||[],l=i.target,i=y[e.id].linkTrackingContent?i.innerHTML:void 0,i={targetUrl:u=unescape(u),elementId:a,elementClasses:c,elementTarget:l,elementContent:i},e.core.getConfig().linkClickTracking&&e.core.track(r(i),t(o,n)))}}function u(e,n,r){for(var i;null!==(i=n.parentElement)&&null!=i&&"BUTTON"!==n.tagName.toUpperCase();)n=i;i={elementType:(i=n).type,elementId:i.id,elementClasses:i.className||"",elementName:i.name,elementText:i.innerText,elementValue:i.value},e.core.getConfig().buttonClickTracking&&e.core.track(o(i),t(r,n))}function s(e,t){return function(n){var r=(n=n||window.event).which||n.button,o=n.target||n.srcElement;"click"===n.type?o&&l(M[e],o,t):"mousedown"===n.type?1!==r&&2!==r||!o?y[e].lastButton=y[e].lastTarget=null:(y[e].lastButton=r,y[e].lastTarget=o):"mouseup"===n.type&&(r===y[e].lastButton&&o===y[e].lastTarget&&l(M[e],o,t),y[e].lastButton=y[e].lastTarget=null)}}function d(e,t){return function(n){var r=(n=n||window.event).which||n.button,o=n.target||n.srcElement;"click"===n.type?o&&u(M[e],o,t):"mousedown"===n.type?1!==r&&2!==r||!o?P[e].lastButton=P[e].lastTarget=null:(P[e].lastButton=r,P[e].lastTarget=o):"mouseup"===n.type&&(r===P[e].lastButton&&o===P[e].lastTarget&&u(M[e],o,t),P[e].lastButton=P[e].lastTarget=null)}}function E(e,t){e=void 0===e?{}:e,y[t]={linkTrackingContent:e.trackContent,linkTrackingContext:e.context,linkTrackingPseudoClicks:e.pseudoClicks,linkTrackingFilter:c(e.options)}}function f(e,t){e=void 0===e?{}:e,P[t]={buttonTrackingContent:e.trackContent,buttonTrackingContext:e.context,buttonTrackingFilter:c(e.options)}}function T(e){var t,n,r,o=document.links;for(I=e,r=0;r<o.length;r++)if(null!==(n=null===(t=y[e])||void 0===t?void 0:t.linkTrackingFilter)&&void 0!==n&&n.call(t,o[r])&&!o[r][e]){var i=e,c=o[r];y[i].linkTrackingPseudoClicks?(a(c,"mouseup",s(i,y[i].linkTrackingContext),!1),a(c,"mousedown",s(i,y[i].linkTrackingContext),!1)):a(c,"click",s(i,y[i].linkTrackingContext),!1),o[r][e]=!0}}function v(e,t){try{L++;for(var n=0;n<e.length;n++)"childList"===e[n].type&&(T(I),C(I));20<L&&(t.disconnect(),setTimeout((function(){L=0,t.observe(document.body,D)}),2e3))}catch(e){console.warn("Conviva App Tracker caused Exception in mutation callback of click tracking Plugin",e)}}function k(){clearInterval(R),R=setInterval((function(){L=0}),1e3)}function C(e){var t,n,r,o=document.querySelectorAll("button");for(r=0;r<o.length;r++)null!==(n=null===(t=P[e])||void 0===t?void 0:t.buttonTrackingFilter)&&void 0!==n&&n.call(t,o[r])&&!o[r][e]&&(a(o[r],"click",d(e,P[e].buttonTrackingContext),!1),o[r][e]=!0)}var p,g,N,O,A,_,m,h;(g=p||(p={}))[g.none=0]="none",g[g.error=1]="error",g[g.warn=2]="warn",g[g.debug=3]="debug",g[g.info=4]="info",function(e){e.response_body="rsb",e.request_body="rqb",e.response_headers="rsh",e.request_headers="rqh"}(N||(N={})),function(e){e.response_body="rsb",e.request_body="rqb",e.response_headers="rsh",e.request_headers="rqh"}(O||(O={})),function(e){e.BRAND="DeviceBrand",e.MANUFACTURER="DeviceManufacturer",e.MODEL="DeviceModel",e.TYPE="DeviceType",e.VERSION="DeviceVersion",e.OS_NAME="OperatingSystemName",e.OS_VERSION="OperatingSystemVersion",e.CATEGORY="DeviceCategory",e.FRAMEWORK_NAME="FrameworkName",e.FRAMEWORK_VERSION="FrameworkVersion"}(A||(A={})),function(e){var t,n,r,o;e.TRACEPARENT_HEADER_KEY="traceparent",(r=n=e.SAMPLING_MODES||(e.SAMPLING_MODES={})).NONE="NONE",r.RCFG="RCFG",function(e){e.DERIVED="DERIVED",e.DEFAULT="DEFAULT"}(e.SAMPLING_STATUS||(e.SAMPLING_STATUS={})),function(e){e.SAMPLED="sl",e.NON_SAMPLED="nsl"}(o=e.SAMPLING_ACTION||(e.SAMPLING_ACTION={})),e.DEFAULT_SAMPLING_ACTION=((t={})[o.SAMPLED]=n.RCFG,t[o.NON_SAMPLED]=n.NONE,t),function(e){e.DEFAULT="def",e.CACHED="cac",e.REMOTE="rem"}(e.CONFIG_SOURCE||(e.CONFIG_SOURCE={})),function(e){e[e.APP=0]="APP",e[e.REMOTE=1]="REMOTE",e[e.MERGE=2]="MERGE"}(e.CONFIG_PREFERENCES||(e.CONFIG_PREFERENCES={})),function(e){e[e.DISABLED=0]="DISABLED",e[e.PERFORMANCE_TIMING=1]="PERFORMANCE_TIMING",e[e.PERFORMANCE_NAVIGATION_TIMING=2]="PERFORMANCE_NAVIGATION_TIMING"}(e.PERFORMANCE_CONTEXT||(e.PERFORMANCE_CONTEXT={})),function(e){e.DO_NOT_FETCH_UPDATE_TIMER="updateTimer",e.IMMEDIATE_FETCH="urgentFetch",e.UPDATE_TIMER_WITH_DIFF="checkDiff"}(e.RC_FETCH_MODE||(e.RC_FETCH_MODE={})),e.REMOTE_CONFIG_STORAGE_KEY="ConvivaRemoteConfig",e.END_POINT_STORAGE_KEY="ConvivaEndpoint",e.SAMPLING_STORAGE_RANDOM_NUMBER_KEY="ConvivaSamplingRandomNumber",e.DEFAULT_END_POINT="https://appgw.conviva.com",e.REMOTE_CONFIG_URL_PREFIX="https://rc.conviva.com/js/",e.REMOTE_CONFIG_FILE_NAME="/remote_config.json",e.DIAGNOSTIC_INFO_MAX_LENGTH={MAX_MESSAGE_LENGTH:1024,MAX_STACK_LENGTH:2048,MAX_CLASSNAME_LENGTH:1024,MAX_EXCEPTION_NAME_LENGTH:1024}}(_||(_={})),function(e){e[e.APP=0]="APP",e[e.REMOTE=1]="REMOTE",e[e.MERGE=2]="MERGE"}(m||(m={})),function(e){e.APPLICATION_BACKGROUND="abg",e.APPLICATION_ERROR="ae"}(h||(h={}));var R,I,M={},y={},P={},b=!1,S=!1,L=0,D={childList:!0,subtree:!0};e.LinkClickTrackingPlugin=function(){return{activateBrowserPlugin:function(e){M[e.id]=e}}},e.enableButtonClickTracking=function(e,t){if(void 0===e&&(e={}),void 0===t&&(t=Object.keys(M)),S=!0,!b)try{var n=document.body;new MutationObserver(v).observe(n,D),k()}catch(e){console.log("exception",e)}t.forEach((function(t){try{M[t]&&(M[t].sharedState.hasLoaded?(f(e,t),C(t)):M[t].sharedState.registeredOnLoadHandlers.push((function(){f(e,t),C(t)})))}catch(e){console.warn("Conviva App Tracker caused Exception in enableButtonClickTracking method in click tracking Plugin",e)}}))},e.enableLinkClickTracking=function(e,t){if(void 0===e&&(e={}),void 0===t&&(t=Object.keys(M)),b=!0,!S)try{var n=document.body;new MutationObserver(v).observe(n,D),k()}catch(e){}t.forEach((function(t){try{M[t]&&(M[t].sharedState.hasLoaded?(E(e,t),T(t)):M[t].sharedState.registeredOnLoadHandlers.push((function(){E(e,t),T(t)})))}catch(e){console.warn("Conviva App Tracker caused Exception in enableLinkClickTracking method in click tracking Plugin",e)}}))},e.refreshButtonClickTracking=function(e){void 0===e&&(e=Object.keys(M)),e.forEach((function(e){M[e]&&(M[e].sharedState.hasLoaded?C(e):M[e].sharedState.registeredOnLoadHandlers.push((function(){C(e)})))}))},e.refreshLinkClickTracking=function(e){void 0===e&&(e=Object.keys(M)),e.forEach((function(e){M[e]&&(M[e].sharedState.hasLoaded?T(e):M[e].sharedState.registeredOnLoadHandlers.push((function(){T(e)})))}))},e.trackButtonClick=function(e,n){void 0===n&&(n=Object.keys(M));for(var r=0;r<n.length;r++){var i=n[r];if(M.hasOwnProperty(i)){var a=e;(i=M[i]).core.getConfig().buttonClickTracking&&i.core.track(o(a),t(void 0,void 0))}}},e.trackLinkClick=function(e,n){void 0===n&&(n=Object.keys(M));for(var o=0;o<n.length;o++){var i=n[o];if(M.hasOwnProperty(i)){var a=e;(i=M[i]).core.getConfig().linkClickTracking&&i.core.track(r(a),t(void 0,void 0))}}},Object.defineProperty(e,"__esModule",{value:!0})}));
//# sourceMappingURL=index.umd.min.js.map