{ "version": 3, "sources": ["../../../app/javascript/convert_experiments.js", "../../../app/javascript/index.js"], "sourcesContent": ["export default class ConvertTracking {\n constructor(trackedExperiments = {}, goals = []) {\n window.Sofatutor = window.Sofatutor || { trackingEnabled: true, logTracking: console.log };\n this.goals = goals;\n this.trackedExperiments = trackedExperiments;\n this.trackingEnabled = Sofatutor.trackingEnabled;\n this.trackedGoals = [];\n this._trackExperiments();\n this._eventify(this.goals, this._onGoalPush.bind(this));\n this._handleCookie('_sofatutor_convert_queue');\n }\n\n trigger(goalId) {\n this.goals.push(goalId);\n }\n\n _handleCookie(cookieName) {\n const cookieValue = this._getCookie(cookieName);\n if (cookieValue) {\n JSON.parse(cookieValue).forEach(goalId => this.trigger(goalId));\n this._removeCookie(cookieName);\n }\n }\n\n _trackExperiments() {\n const data = { goals: this.goals };\n if (this.trackingEnabled) {\n this.sendToTrackingAPI('/experiments/track', data, () => {\n this.trackedGoals.push(...this.goals);\n this.goals = []; // Reset goals after successful tracking\n Sofatutor.logTracking(['Experiments and Goals tracked:', data]);\n });\n } else {\n Sofatutor.logTracking(['Experiments and Goals tracked:', data]);\n this.trackedGoals.push(...this.goals);\n this.goals = [];\n }\n }\n\n _onGoalPush(goalId) {\n if (this.trackedGoals.includes(goalId)) return;\n\n if (this.trackingEnabled) {\n this.sendToTrackingAPI('/experiments/track', { goals: [goalId] }, () => {\n Sofatutor.logTracking(['Goal tracked:', goalId]);\n this.trackedGoals.push(goalId);\n });\n } else {\n Sofatutor.logTracking(['Goal tracked:', goalId]);\n this.trackedGoals.push(goalId);\n }\n }\n\n sendToTrackingAPI(url, data, callback) {\n fetch(url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json'\n },\n body: JSON.stringify(data)\n })\n .then(response => callback(response))\n .catch(error => console.error('Error tracking API:', error));\n }\n\n _eventify(arr, callback) {\n arr.push = (e) => {\n Array.prototype.push.call(arr, e);\n callback(e);\n };\n }\n\n _getCookie(name) {\n const value = `; ${document.cookie}`;\n const parts = value.split(`; ${name}=`);\n if (parts.length === 2) return parts.pop().split(';').shift();\n return null;\n }\n\n _removeCookie(name) {\n document.cookie = `${name}=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;`;\n }\n}\n", "import ConvertExperiments from './convert_experiments';\n\nexport function preventRunOnTubolinkCache(callback) {\n if (!document.documentElement.hasAttribute(\"data-turbolinks-preview\")) {\n // Don't execute the code on Turbolinks cached pages\n callback();\n }\n}\n\nwindow.preventRunOnTubolinkCache = preventRunOnTubolinkCache;\nwindow.ConvertExperiments = ConvertExperiments;\n\n(function() {\n // Event listener\n document.addEventListener('click', function(event) {\n if (event.target.closest('[data-convert-goal]')) {\n if (!window.Sofatutor || !window.Sofatutor.consentGivenForConvert) {\n return;\n }\n\n var el = event.target.closest('[data-convert-goal]');\n var goalId = el.getAttribute('data-convert-goal').toString();\n\n var trackingQueueString = getCookie('_sofatutor_convert_queue') || '[]';\n var trackingQueue = JSON.parse(trackingQueueString);\n trackingQueue.push([goalId]);\n\n setCookie('_sofatutor_convert_queue', JSON.stringify(trackingQueue), { path: '/' });\n }\n });\n\n // Local function to get cookie value\n function getCookie(name) {\n var value = \"; \" + document.cookie;\n var parts = value.split(\"; \" + name + \"=\");\n if (parts.length === 2) return parts.pop().split(\";\").shift();\n }\n\n // Local function to set cookie value\n function setCookie(name, value, options) {\n var updatedCookie = name + \"=\" + value;\n\n for (var propName in options) {\n updatedCookie += \"; \" + propName;\n var propValue = options[propName];\n if (propValue !== true) {\n updatedCookie += \"=\" + propValue;\n }\n }\n\n document.cookie = updatedCookie;\n }\n})();\n\n"], "mappings": "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", "names": ["ConvertTracking", "trackedExperiments", "goals", "goalId", "cookieName", "cookieValue", "data", "url", "callback", "response", "error", "arr", "e", "name", "parts", "preventRunOnTubolinkCache", "callback", "ConvertTracking", "event", "el", "goalId", "trackingQueueString", "getCookie", "trackingQueue", "setCookie", "name", "value", "parts", "options", "updatedCookie", "propName", "propValue"] }