{"version":3,"file":"js/snowplow_pack-98bb5b20a3047829ac10.js","mappings":"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","sources":["webpack://churchkey/./node_modules/@generalassembly/ga-snowplow-js/app/assets/javascripts/clickTracker.js","webpack://churchkey/./node_modules/@generalassembly/ga-snowplow-js/app/assets/javascripts/contextRegistry.js","webpack://churchkey/./node_modules/@generalassembly/ga-snowplow-js/app/assets/javascripts/ga-snowplow.js","webpack://churchkey/./node_modules/@generalassembly/ga-visitor-js/app/assets/javascripts/ga-visitor.js","webpack://churchkey/./app/javascript/snowplow.js"],"sourcesContent":["var ContextRegistry = require('./contextRegistry');\n\nvar TAGS = {\n anchor: 'A',\n button: 'BUTTON',\n html: 'HTML',\n input: 'INPUT'\n};\nvar TAG_WHITELIST = [TAGS.anchor, TAGS.button, TAGS.input];\nvar INPUT_TYPES = ['submit', 'reset'];\nvar DATA_ATTRIBUTES = ['category', 'section', 'action', 'type', 'label', 'name', 'value'];\nvar DOM_ATTRIBUTES = ['class', 'id', 'href'];\nvar TRACKABLE_ATTRIBUTES = DATA_ATTRIBUTES.concat(DOM_ATTRIBUTES);\nvar dataAttributesMapping = buildMapping(DATA_ATTRIBUTES);\n\nvar ClickTracker = function() {\n this.context = new ContextRegistry();\n}\n\nClickTracker.prototype.register = function(trackingCallback) {\n this.trackingCallback = trackingCallback;\n document.addEventListener('click', this.clickHandler.bind(this), true);\n}\n\nClickTracker.prototype.setContext = function(type, data) {\n this.context.setContext(type, data)\n}\n\nClickTracker.prototype.clearContext = function(type) {\n this.context.clearContext(type)\n}\n\nClickTracker.prototype.clickHandler = function(event) {\n var element = findTrackableElement(event.target);\n\n if (element) {\n var trackingObject = createTrackingObject(element);\n var trackingPayload = this.createPayload(trackingObject);\n\n this.trackingCallback(trackingPayload);\n }\n}\n\nClickTracker.prototype.createPayload = function(trackingObject) {\n return {\n data: cleanData(trackingObject),\n contexts: this.context.list()\n }\n}\n\nfunction findTrackableElement(element) {\n if (isEndOfDocument(element)) { return null; }\n else if (isWhitelisted(element) || isExplicitlyTracked(element)) { return element; }\n else { return findTrackableElement(element.parentNode); }\n}\n\nfunction createTrackingObject(trackableElement) {\n var trackingObject = buildTrackingObject(trackableElement);\n return backFillData(trackableElement, trackingObject);\n}\n\nfunction buildTrackingObject(element, trackingObject) {\n if (trackingObject === undefined) {\n trackingObject = newTrackingObjectInstance();\n }\n\n if (isEndOfDocument(element) || dataAttributesFilled(trackingObject)) { return trackingObject; }\n\n fillDataFields(element, trackingObject);\n return buildTrackingObject(element.parentNode, trackingObject);\n}\n\nfunction newTrackingObjectInstance() {\n return TRACKABLE_ATTRIBUTES.reduce(function(trackingObject, attribute) {\n trackingObject[attribute] = null;\n\n return trackingObject;\n }, {});\n}\n\nfunction fillDataFields(element, trackingObject) {\n var dataAttributes = element.dataset;\n if (!dataAttributes) { return }\n\n DATA_ATTRIBUTES.forEach(function(attribute) {\n trackingObject[attribute] = trackingObject[attribute] || dataAttributes[dataAttributesMapping[attribute]] || null;\n });\n}\n\nfunction dataAttributesFilled(trackingObject) {\n var attributeValues = DATA_ATTRIBUTES.map(function(attribute) {\n return trackingObject[attribute];\n });\n\n var nullValues = attributeValues.filter(function(value) { return value === null });\n\n if (nullValues.length > 0) { return false; }\n return true;\n}\n\nfunction backFillData(originElement, trackObject) {\n switch (originElement.tagName) {\n case TAGS.input: {\n if (INPUT_TYPES.indexOf(originElement.type) != -1) {\n backFillButtonData(originElement, trackObject);\n break;\n }\n }\n case TAGS.button: {\n backFillButtonData(originElement, trackObject);\n break;\n }\n case TAGS.anchor: {\n backFillAnchorData(originElement, trackObject);\n break;\n }\n }\n\n return backfillSelectors(originElement, trackObject);\n}\n\nfunction backfillSelectors(element, trackingObject) {\n trackingObject.class = element.className || null;\n trackingObject.id = element.id || null;\n\n return trackingObject;\n}\n\nfunction backFillAnchorData(element, trackingObject) {\n trackingObject.label = trackingObject.label || element.innerText;\n trackingObject.type = trackingObject.type || 'link';\n trackingObject.href = element.href || null;\n\n return trackingObject;\n}\n\nfunction backFillButtonData(element, trackingObject) {\n trackingObject.label = trackingObject.label || element.innerText;\n trackingObject.action = trackingObject.action || element.type;\n trackingObject.type = trackingObject.type || element.type || 'button';\n trackingObject.href = element.formAction || null;\n\n return trackingObject;\n}\n\nfunction buildMapping(attributes) {\n return attributes.reduce(function(mappedObject, attribute) {\n var capitalizedAttribute = attribute[0].toUpperCase() + attribute.substring(1);\n mappedObject[attribute] = 'track' + capitalizedAttribute;\n\n return mappedObject;\n }, {});\n}\n\nfunction isEndOfDocument(element) {\n return element.tagName === TAGS.html;\n}\n\nfunction isWhitelisted(element) {\n return TAG_WHITELIST.indexOf(element.tagName) != -1;\n}\n\nfunction isExplicitlyTracked(element) {\n // ie11 guard against elements which do not contain a dataset reference (SVGs)\n return !!(element.dataset && element.dataset['trackable'])\n}\n\nfunction cleanData(object) {\n Object.keys(object).forEach(function(key) {\n if (object[key] === null) {\n delete object[key];\n }\n })\n\n return object\n}\n\nmodule.exports = ClickTracker;\n","var ContextRegistry = function(initialContext) {\n this._contextMapping = initialContext || {};\n};\n\nContextRegistry.prototype.setContext = function(name, data) {\n this._contextMapping[name] = data;\n};\n\nContextRegistry.prototype.clearContext = function(name) {\n delete this._contextMapping[name];\n};\n\nContextRegistry.prototype.list = function() {\n return objectValues(this._contextMapping);\n};\n\nfunction objectValues(obj) {\n return Object.keys(obj).map(function(key) {\n return obj[key];\n });\n}\n\nmodule.exports = ContextRegistry;\n","var GAVisitor = require(\"@generalassembly/ga-visitor-js\");\nvar ClickTracker = require(\"./clickTracker\");\nvar ContextRegistry = require(\"./contextRegistry\");\n\n(function() {\n var GASnowplowJS = function(options) {\n options = options || {};\n this.appId = options.appId || null;\n this.debug = options.debug || false;\n this.globalContext = new ContextRegistry();\n if (options.errorTracking === undefined) {\n this.errorTracking = true;\n } else {\n this.errorTracking = !!options.errorTracking;\n }\n if (options.linkClickTracking === undefined) {\n this.linkClickTracking = true;\n } else {\n this.linkClickTracking = !!options.linkClickTracking;\n }\n if (options.formTracking === undefined) {\n this.formTracking = false;\n } else {\n this.formTracking = !!options.formTracking;\n }\n if (options.clickTracking) {\n this.clickTracker = new ClickTracker();\n }\n if (options.webPageTracking === undefined) {\n this.webPageTracking = true;\n } else {\n this.webPageTracking = !!options.webPageTracking;\n }\n if (options.performanceTimingTracking === undefined) {\n this.performanceTimingTracking = true;\n } else {\n this.performanceTimingTracking = !!options.performanceTimingTracking;\n }\n\n this.visitorCookieName = options.visitorCookieName || '_general_assembly_visitor_id';\n this.userCookieName = options.userCookieName || 'sso_provider_session_production';\n this.cookieLifetime = options.cookieLifetime || 86400 * 180;\n this.spCollector = options.spCollector || '';\n this.optimizelyXSummary = !!(window.optimizely && window.optimizely.get);\n this.formTrackingFormBlacklist = options.formTrackingFormBlacklist || ['do-not-track'];\n this.formTrackingFieldBlacklist = options.formTrackingFieldBlacklist || [];\n\n this.trackerVersion = options.trackerVersion || '2.8.2';\n this.trackerName = options.trackerName || ('cf-hosted-v' + this.trackerVersion);\n\n if (this.visitorCookieName) {\n var visitor = new GAVisitor(this.visitorCookieName);\n if (visitor && visitor.id) {\n this.globalContext.setContext(\"visitor\", {\n schema: \"iglu:co.ga/visitor_id/jsonschema/1-0-0\",\n data: {\n visitor_id: visitor.id,\n },\n });\n }\n }\n }\n\n GASnowplowJS.prototype.log = function(message) {\n if (this.debug) console.log('GASnowplowJS: ' + message);\n }\n\n GASnowplowJS.prototype.init = function() {\n if (!this.appId || !this.spCollector) return;\n this.log('appId=' + this.appId);\n\n (function(p, l, o, w, i, n, g) {\n if (!p[i]) {\n p.GlobalSnowplowNamespace = p.GlobalSnowplowNamespace || [];\n p.GlobalSnowplowNamespace.push(i);\n p[i] = function() {\n (p[i].q = p[i].q || []).push(arguments);\n };\n p[i].q = p[i].q || [];\n n = l.createElement(o);\n g = l.getElementsByTagName(o)[0];\n n.async = 1;\n n.id = 'ga-snowplow-script';\n n.src = w;\n g.parentNode.insertBefore(n, g);\n }\n }(window, document, 'script', '//d1fc8wv8zag5ca.cloudfront.net/' + this.trackerVersion + '/sp.js', 'GAplow'));\n\n try {\n this.createFullTracker();\n } catch(err) {\n this.createMinimalTracker();\n throw err;\n }\n }\n\n GASnowplowJS.prototype.createTracker = function(contexts) {\n window.GAplow('newTracker', this.trackerName, this.spCollector, {\n appId: this.appId,\n platform: 'web',\n cookieDomain: 'generalassemb.ly',\n cookieName: 'sp',\n encodeBase64: false,\n respectDoNotTrack: false,\n userFingerprint: true,\n userFingerprintSeed: 6485926835,\n pageUnloadTimer: 0,\n forceSecureTracker: false,\n stateStorageStrategy: 'cookie',\n post: true,\n bufferSize: 1,\n maxPostBytes: 45000,\n cookieLifetime: this.cookieLifetime,\n contexts: contexts\n })\n\n if (this.errorTracking) window.GAplow('enableErrorTracking');\n\n if (this.linkClickTracking) window.GAplow('enableLinkClickTracking');\n if (this.clickTracker) this.clickTracker.register(this.trackClickEvent.bind(this));\n if (this.formTracking) window.GAplow('enableFormTracking', {\n forms: {\n blacklist: this.formTrackingFormBlacklist\n },\n fields: {\n blacklist: this.formTrackingFieldBlacklist\n }\n });\n if (this.userCookieName) window.GAplow('setUserIdFromCookie', this.userCookieName);\n\n window.GAplow('enableActivityTracking', 30, 30);\n window.GAplow('trackPageView', null, null, this.pageViewCustomContexts)\n }\n\n GASnowplowJS.prototype.createMinimalTracker = function() {\n this.createTracker({\n webPage: this.webPageTracking,\n performanceTiming: this.performanceTimingTracking,\n gaCookies: true\n });\n }\n\n GASnowplowJS.prototype.createFullTracker = function() {\n this.createTracker({\n webPage: this.webPageTracking,\n performanceTiming: this.performanceTimingTracking,\n gaCookies: true,\n optimizelyXSummary: this.optimizelyXSummary,\n optimizelySummary: true\n });\n }\n\n GASnowplowJS.prototype.setContext = function(type, data) {\n this.log('setContext, type: ' + type + ', data: ' + JSON.stringify(data));\n this.clickTracker.setContext(type, data)\n }\n\n GASnowplowJS.prototype.clearContext = function(type) {\n this.log('clearContext, type: ' + type);\n this.clickTracker.clearContext(type)\n }\n\n GASnowplowJS.prototype.setGlobalContext = function(type, data) {\n this.log(\"setGlobalContext, type: \" + type + \", data: \" + JSON.stringify(data));\n this.globalContext.setContext(type, data);\n };\n\n GASnowplowJS.prototype.clearGlobalContext = function(type) {\n this.log(\"clearGlobalContext, type: \" + type);\n this.globalContext.clearContext(type);\n };\n\n GASnowplowJS.prototype.trackClickEvent = function(payload) {\n var schema = 'iglu:co.ga.lms/click_tracked/jsonschema/1-0-0';\n\n this.log('trackClickEvent, schema: ' + schema + ' data: ' + JSON.stringify(payload));\n window.GAplow('trackSelfDescribingEvent', {\n schema: schema,\n data: payload.data,\n }, payload.contexts.concat(this.globalContext.list()));\n }\n\n GASnowplowJS.prototype.trackSelfDescribingEvent = function(schema, data) {\n this.log('trackSelfDescribingEvent, schema: ' + schema + ' data: ' + JSON.stringify(data));\n window.GAplow('trackSelfDescribingEvent', {\n schema: schema,\n data: data,\n }, this.globalContext.list());\n }\n\n GASnowplowJS.prototype.trackStructEvent = function(category, action, label, property, value, additionalContexts) {\n this.log('trackStructEvent' +\n ', category: ' + category +\n ', action: ' + action +\n ', label: ' + label +\n ', property: ' + property +\n ', value: ' + value +\n ', additionalContexts: ' + additionalContexts\n );\n var contexts = this.globalContext.list()\n .concat(additionalContexts)\n .filter(function(item) { return item });\n window.GAplow('trackStructEvent', category, action, label, property, value, contexts);\n }\n\n // Retain backwards compatibility\n var initGASnowplow = function(appId, debug, visitorCookieName, userCookieName, spCollector) {\n window.gaSnowplowJS = new GASnowplowJS({\n appId: appId,\n debug: debug,\n visitorCookieName: visitorCookieName,\n userCookieName: userCookieName,\n spCollector: spCollector,\n })\n window.gaSnowplowJS.init()\n }\n\n if (typeof(module) !== 'undefined') {\n module.exports = {\n GASnowplowJS: GASnowplowJS,\n initGASnowplow: initGASnowplow,\n }\n }\n\n if (typeof(window) !== 'undefined') {\n window.GASnowplowJS = GASnowplowJS;\n window.initGASnowplow = initGASnowplow;\n }\n})();\n","(function() {\n var GAVisitor = function(visitorCookieName) {\n if (!visitorCookieName) {\n throw 'Cookie name is required'\n }\n\n this.id = this.cookies()[visitorCookieName];\n };\n\n GAVisitor.prototype.cookies = function() {\n return this.merge(this.parsedCookies());\n };\n\n GAVisitor.prototype.parsedCookies = function() {\n return this.rawCookies().map(function(cookieString) {\n return this.parse(cookieString);\n }.bind(this));\n };\n\n GAVisitor.prototype.rawCookies = function() {\n return this.cookiesString().split(\"; \");\n };\n\n GAVisitor.prototype.cookiesString = function() {\n return document.cookie;\n };\n\n GAVisitor.prototype.merge = function(cookies) {\n return cookies.reduce(function(memo, cookie) {\n memo[cookie.name] = cookie.value;\n return memo;\n }, {});\n };\n\n GAVisitor.prototype.parse = function(cookieString) {\n return {\n name: cookieString.slice(0, cookieString.indexOf(\"=\")),\n value: cookieString.slice(cookieString.indexOf(\"=\") + 1)\n };\n };\n\n GAVisitor.getTrackingPixel = function(baseUrl, callback, timeout) {\n // Default to the production URL\n baseUrl = baseUrl || \"https://generalassemb.ly\";\n\n // Default the timeout to 2 seconds\n timeout = timeout || 2000;\n\n var pixel = document.createElement(\"img\");\n pixel.src = baseUrl + \"/images/pixel-\" + Date.now() + \".gif\";\n pixel.id = \"ga-visitor-id-pixel\";\n pixel.style.display = \"none\";\n\n // Invoke callback once pixel has loaded, or after 2 seconds.\n if (typeof(callback) === \"function\") {\n if (typeof(Promise) === \"undefined\") {\n setTimeout(callback, timeout);\n } else {\n Promise.race([\n new Promise(function(resolve, reject) {\n pixel.onload = resolve;\n }),\n new Promise(function(resolve, reject) {\n setTimeout(resolve, timeout);\n })\n ]).then(callback);\n }\n }\n\n document.body.appendChild(pixel);\n };\n\n if (typeof(module) !== 'undefined') {\n module.exports = GAVisitor;\n }\n\n if (typeof(window) !== 'undefined') {\n window.GAVisitor = GAVisitor;\n }\n})();\n","import { GASnowplowJS } from '@generalassembly/ga-snowplow-js'\n\nwindow.cookieConsent.addCallback('performance', () => {\n const gaSnowplow = new GASnowplowJS(window.snowplowConfig)\n\n gaSnowplow.pageViewCustomContexts = () => [{\n schema: 'iglu:co.ga/page_context/jsonschema/1-0-0',\n data: {\n locale: window.snowplowPageContext.locale,\n },\n }]\n\n gaSnowplow.init()\n\n gaSnowplow.setContext('page', {\n schema: 'iglu:co.ga/page_context/jsonschema/1-0-0',\n data: {\n locale: window.snowplowPageContext.locale,\n },\n })\n})\n"],"names":["ContextRegistry","TAGS","anchor","button","html","input","TAG_WHITELIST","INPUT_TYPES","DATA_ATTRIBUTES","TRACKABLE_ATTRIBUTES","concat","dataAttributesMapping","reduce","mappedObject","attribute","capitalizedAttribute","toUpperCase","substring","ClickTracker","this","context","findTrackableElement","element","isEndOfDocument","indexOf","tagName","isWhitelisted","dataset","isExplicitlyTracked","parentNode","buildTrackingObject","trackingObject","undefined","attributeValues","map","filter","value","length","dataAttributesFilled","dataAttributes","forEach","fillDataFields","backFillButtonData","label","innerText","action","type","href","formAction","cleanData","object","Object","keys","key","prototype","register","trackingCallback","document","addEventListener","clickHandler","bind","setContext","data","clearContext","event","target","trackableElement","originElement","trackObject","backFillAnchorData","class","className","id","backfillSelectors","backFillData","createTrackingObject","trackingPayload","createPayload","contexts","list","module","exports","initialContext","_contextMapping","name","obj","GAVisitor","GASnowplowJS","options","appId","debug","globalContext","errorTracking","linkClickTracking","formTracking","clickTracking","clickTracker","webPageTracking","performanceTimingTracking","visitorCookieName","userCookieName","cookieLifetime","spCollector","optimizelyXSummary","window","optimizely","get","formTrackingFormBlacklist","formTrackingFieldBlacklist","trackerVersion","trackerName","visitor","schema","visitor_id","log","message","console","init","p","l","o","w","i","n","g","GlobalSnowplowNamespace","push","q","arguments","createElement","getElementsByTagName","async","src","insertBefore","createFullTracker","err","createMinimalTracker","createTracker","GAplow","platform","cookieDomain","cookieName","encodeBase64","respectDoNotTrack","userFingerprint","userFingerprintSeed","pageUnloadTimer","forceSecureTracker","stateStorageStrategy","post","bufferSize","maxPostBytes","trackClickEvent","forms","blacklist","fields","pageViewCustomContexts","webPage","performanceTiming","gaCookies","optimizelySummary","JSON","stringify","setGlobalContext","clearGlobalContext","payload","trackSelfDescribingEvent","trackStructEvent","category","property","additionalContexts","item","initGASnowplow","gaSnowplowJS","cookies","merge","parsedCookies","rawCookies","cookieString","parse","cookiesString","split","cookie","memo","slice","getTrackingPixel","baseUrl","callback","timeout","pixel","Date","now","style","display","setTimeout","Promise","race","resolve","reject","onload","then","body","appendChild","cookieConsent","addCallback","gaSnowplow","snowplowConfig","locale","snowplowPageContext"],"sourceRoot":""}