{"version":3,"file":"magick-Bg2dMhiA.js","sources":["../../../app/javascript/entrypoints/magick.ts"],"sourcesContent":["/// \n\nimport { BrowserUtils } from '@/src/utils/BrowserUtils'\n\ndeclare global {\n interface Window {\n analytics: SegmentAnalytics.AnalyticsJS\n getSegmentAnalyticsInstance: () => Promise\n readyOtherAnalytics: () => void\n sendAnalyticsUsingFullEventName: (eventName: string, options?: Record) => void\n userIdentified: Promise // Add this\n resolveUserIdentified?: () => void // Add this\n }\n}\n\nexport function getSegmentAnalyticsInstance(): Promise {\n return new Promise((res, rej) => {\n let numberOfRetries = 100\n const delayTime = 100\n\n if (window.analytics) {\n // Wait for both analytics and user identification\n window.userIdentified.then(() => res(window.analytics))\n return\n }\n\n const interval = setInterval(() => {\n numberOfRetries--\n if (window.analytics) {\n clearInterval(interval)\n // Wait for both analytics and user identification\n window.userIdentified.then(() => res(window.analytics))\n return\n }\n if (numberOfRetries < 0) {\n clearInterval(interval)\n rej('Unable to load Segment')\n }\n }, delayTime)\n })\n}\n\n/** \nPattern\n\nContext => Object => Action\n\nThe format answers these questions:\n\nWhere is the event from? Context\nWhat is the event effecting? Object\nWhat was the action taken? Action\nSome examples of how this might look in various contexts:\n\nApp => site => deployed\nApp => function => invoked\nSite => docs => rated\nSite => docs => searched\nCLI => user => loggedIn\nAPI => user => passwordReset\n\nSyntax: \"Product Name: Object Name: Action Description: e.g \"Frontend: Desktop Rich Editor: Page TTS Button Clicked\"\nUse snake_case for event metadata e.g {first_name: 'Ravi'}\n*\n* See The Data Taxonomy Guide Here: https://www.notion.so/native/resemble/Data-Taxonomy-05717d123a7547928d873bec8c3b2390?pvs=6&utm_content=05717d12-3a75-4792-8d87-3bec8c3b2390&utm_campaign=TFJ2Y4T7D&deepLinkOpenNewTab=true\n*/\nexport function sendAnalytics(context: string, object: string, action: string, options?: Record) {\n const eventName = `${context}: ${object}: ${action}`\n getSegmentAnalyticsInstance().then((stAntcs) => {\n stAntcs.track(eventName, options)\n })\n}\n\nexport function sendAnalyticsBeacon(fullEventName: string, metaData?: Record) {\n const fd = new FormData()\n const token = (document.querySelector('meta[name=\"csrf-token\"]') as HTMLMetaElement).content\n fd.append('authenticity_token', token)\n fd.append('eventName', fullEventName)\n\n if (metaData) {\n fd.append('properties', JSON.stringify(metaData))\n }\n\n navigator.sendBeacon('/analytics', fd)\n}\n\nexport function sendAnalyticsUsingFullEventName(eventName: string, options?: Record) {\n getSegmentAnalyticsInstance().then((stAntcs) => {\n stAntcs.track(eventName, {\n ...options,\n email: window.CURRENT_USER_EMAIL,\n })\n })\n}\n\nexport function sendDesktopRichEditorAnalytics(action: string, options?: Record) {\n sendAnalytics('Frontend', 'Desktop Rich Editor', action, options)\n}\n\nexport function sendVoiceCloningAnalytics(action: string, options?: Record) {\n sendAnalytics('Frontend', 'Voice Cloning Page', action, options)\n}\n\nexport function sendMobileEditorAnalytics(action: string, options?: Record) {\n sendAnalytics('Frontend', 'Mobile Editor', action, options)\n}\n\nexport function sendDesktopSSMLEditorAnalytics(action: string, options?: Record) {\n sendAnalytics('Frontend', 'Desktop SSML Editor', action, options)\n}\n\nexport function sendRecorderAnalytics(action: string, options?: Record) {\n const isMobile = BrowserUtils.isMobile()\n sendAnalytics('Frontend', `${isMobile ? 'Mobile' : 'Desktop'} Recorder`, action, options)\n}\n\nexport function sendDesktopRecorderAnalytics(action: string, options?: Record) {\n sendAnalytics('Frontend', 'Desktop Recorder', action, options)\n}\n\nexport function sendMarketplaceAnalytics(action: string, options?: Record) {\n sendAnalytics('Frontend', 'Marketplace Page', action, options)\n}\n\nexport function sendMobileRecorderAnalytics(action: string, options?: Record) {\n sendAnalytics('Frontend', 'Mobile Recorder', action, options)\n}\n\nexport function sendDesktopEditorAnalytics(action: string, options?: Record) {\n sendAnalytics('Frontend', 'Desktop Editor', action, options)\n}\n\nexport function sendTopHeaderAnalytics(action: string, options?: Record) {\n const isMobile = BrowserUtils.isMobile()\n sendAnalytics('Frontend', `${isMobile ? 'Mobile' : 'Desktop'} Top Header`, action, {\n ...options,\n })\n}\n\n// /projects\nexport function sendProjectsPageAnalytics(subpage: string, action: string, options?: Record) {\n const isMobile = BrowserUtils.isMobile()\n sendAnalytics('Frontend', `${isMobile ? 'Mobile' : 'Desktop'} Projects ${subpage} Page`, action, {\n ...options,\n })\n}\n\n// /voices\nexport function sendVoicesPageAnalytics(subpage: string, action: string, options?: Record) {\n const isMobile = BrowserUtils.isMobile()\n sendAnalytics('Frontend', `${isMobile ? 'Mobile' : 'Desktop'} Voices ${subpage} Page`, action, {\n ...options,\n })\n}\n\n// Frontend (Desktop | Mobile) Top Header (action), {...options}\nfunction readyTopHeaderAntcs() {\n function readyDropdownAntcs() {\n const dropdown = document.querySelector('.dropdown-menu')\n if (dropdown !== null) {\n dropdown.addEventListener('click', (e) => {\n if (e.target !== null && e.target instanceof HTMLAnchorElement) {\n const dropdownItem = e.target as HTMLAnchorElement\n sendTopHeaderAnalytics('Dropdown Item Clicked', {\n item_clicked: dropdownItem.innerText,\n })\n }\n })\n }\n }\n\n const buildVoiceBtn = document.querySelector('#header a[href=\"/voices\"]')\n if (buildVoiceBtn !== null) {\n buildVoiceBtn.addEventListener('click', () => {\n sendTopHeaderAnalytics('Build Voice Btn Clicked')\n })\n }\n\n const searchProjectsBtn = document.querySelector('#header button[type=\"submit\"]')\n if (searchProjectsBtn !== null) {\n searchProjectsBtn.addEventListener('click', () => {\n sendTopHeaderAnalytics('Search Clip Btn Clicked')\n })\n }\n readyDropdownAntcs()\n}\n\nfunction readyProjectsPageAntcs() {\n // /projects\n const projectOwnersIcons = document.querySelectorAll('#projects .avatar')\n if (projectOwnersIcons.length > 0) {\n projectOwnersIcons.forEach((i) => {\n const avatar = i as HTMLSpanElement\n avatar.addEventListener('mouseenter', () => {\n sendProjectsPageAnalytics('Home', 'Project Owners Icon Hovered')\n })\n })\n }\n\n const teamMembersIcon = document.querySelectorAll('#projects .shared-icon')\n if (teamMembersIcon.length > 0) {\n teamMembersIcon.forEach((i) => {\n const avatar = i as HTMLSpanElement\n avatar.addEventListener('mouseenter', () => {\n sendProjectsPageAnalytics('Home', 'Shared With All Icon Hovered')\n })\n })\n }\n\n // /projects/../edit\n const editProjectOwnersBtn = document.querySelector('button[data-target=\"#InviteMembers\"]') as HTMLButtonElement\n if (editProjectOwnersBtn !== null) {\n editProjectOwnersBtn.addEventListener('click', () => {\n sendProjectsPageAnalytics('Edit', 'Edit Project Owners Modal Opened')\n })\n }\n\n const saveMembersListBtn = document.querySelector('.modal-footer input[data-disable-with=\"Save\"]')\n if (saveMembersListBtn !== null) {\n saveMembersListBtn.addEventListener('click', () => {\n sendProjectsPageAnalytics('Edit', 'Project Members List Updated')\n })\n }\n}\n\nfunction readyPhonemesPageAntcs() {\n const applyAllBtn = document.querySelector('input[value=\"Apply All\"]')\n if (applyAllBtn !== null) {\n applyAllBtn.addEventListener('click', () => {\n sendAnalyticsUsingFullEventName('Frontend: Phonemes Page: Apply All Btn Clicked')\n })\n }\n\n const newPhonemeBtn = document.querySelector('input[value=\"+ New Phoneme\"]')\n if (newPhonemeBtn !== null) {\n newPhonemeBtn.addEventListener('click', () => {\n sendAnalyticsUsingFullEventName('Frontend: Phonemes Page: New Phoneme Btn Clicked')\n })\n }\n\n const createOrUpdatePhonemeBtn = document.querySelector('input[value$=\"Phoneme\"]') as HTMLInputElement\n if (createOrUpdatePhonemeBtn !== null) {\n createOrUpdatePhonemeBtn.addEventListener('click', () => {\n sendAnalyticsUsingFullEventName(`Frontend: Phonemes Page: ${createOrUpdatePhonemeBtn.value} Btn Clicked`)\n })\n }\n\n const tableRowBtns = document.querySelectorAll('td > a') as unknown as HTMLElement[]\n if (tableRowBtns.length > 0) {\n tableRowBtns.forEach((el) => {\n el.addEventListener('click', () => {\n sendAnalyticsUsingFullEventName(`Frontend: Phonemes Page: Phonemes Table ${el.dataset.method && el.dataset.method === 'delete' ? 'Delete' : el.innerText} Btn Clicked`)\n })\n })\n }\n}\n\nfunction readyTermSubstitutionsPageAntcs() {\n const applyAllBtn = document.querySelector('input[value=\"Apply All\"]')\n if (applyAllBtn !== null) {\n applyAllBtn.addEventListener('click', () => {\n sendAnalyticsUsingFullEventName('Frontend: Substitutions Page: Apply All Btn Clicked')\n })\n }\n\n const newSubstitutionBtn = document.querySelector('input[value=\"+ New Substitution\"]')\n if (newSubstitutionBtn !== null) {\n newSubstitutionBtn.addEventListener('click', () => {\n sendAnalyticsUsingFullEventName('Frontend: Substitutions Page: New Substitution Btn Clicked')\n })\n }\n\n const createOrUpdateSubstitutionBtn = document.querySelector('input[value$=\"Term substitution\"]') as HTMLInputElement\n if (createOrUpdateSubstitutionBtn !== null) {\n createOrUpdateSubstitutionBtn.addEventListener('click', () => {\n sendAnalyticsUsingFullEventName(`Frontend: Substitutions Page: ${createOrUpdateSubstitutionBtn.value} Btn Clicked`)\n })\n }\n\n const tableRowBtns = document.querySelectorAll('td > a') as unknown as HTMLElement[]\n if (tableRowBtns.length > 0) {\n tableRowBtns.forEach((el) => {\n el.addEventListener('click', () => {\n sendAnalyticsUsingFullEventName(`Frontend: Substitutions Page: Substitutions Table ${el.dataset.method && el.dataset.method === 'delete' ? 'Delete' : el.innerText} Btn Clicked`)\n })\n })\n }\n}\n\nfunction readyVoicesPageAntcs() {\n const browserMarketPlaceBtn = document.querySelector('.voices-actions')\n\n if (browserMarketPlaceBtn !== null) {\n browserMarketPlaceBtn.addEventListener('click', (e) => {\n if (e.target instanceof HTMLInputElement) {\n sendVoicesPageAnalytics('Home', `${e.target.value} Btn Clicked`)\n }\n })\n }\n\n const voicesTable = document.querySelector('.voices-table table')\n if (voicesTable !== null) {\n voicesTable.addEventListener('click', (e) => {\n if (e.target instanceof HTMLAnchorElement) {\n const btn = e.target as HTMLAnchorElement\n sendVoicesPageAnalytics('Home', 'Voices Table Btn Clicked', {\n clicked_button: btn.innerText,\n })\n }\n })\n }\n}\nfunction readyOtherAnalytics() {\n readyTopHeaderAntcs()\n\n const pathname = window.location.pathname\n\n if (pathname.startsWith('/projects')) {\n readyProjectsPageAntcs()\n } else if (pathname.startsWith('/voices')) {\n readyVoicesPageAntcs()\n } else if (pathname.includes('phonemes')) {\n readyPhonemesPageAntcs()\n } else if (pathname.includes('term_substitutions')) {\n readyTermSubstitutionsPageAntcs()\n }\n}\n\nwindow.getSegmentAnalyticsInstance = getSegmentAnalyticsInstance\nwindow.readyOtherAnalytics = readyOtherAnalytics\nwindow.sendAnalyticsUsingFullEventName = sendAnalyticsUsingFullEventName\n"],"names":["getSegmentAnalyticsInstance","res","rej","numberOfRetries","delayTime","interval","sendAnalytics","context","object","action","options","eventName","stAntcs","sendAnalyticsBeacon","fullEventName","metaData","fd","token","sendAnalyticsUsingFullEventName","sendDesktopRichEditorAnalytics","sendVoiceCloningAnalytics","sendMobileEditorAnalytics","sendDesktopSSMLEditorAnalytics","sendRecorderAnalytics","isMobile","BrowserUtils","sendDesktopEditorAnalytics","sendTopHeaderAnalytics","sendProjectsPageAnalytics","subpage","sendVoicesPageAnalytics","readyTopHeaderAntcs","readyDropdownAntcs","dropdown","e","dropdownItem","buildVoiceBtn","searchProjectsBtn","readyProjectsPageAntcs","projectOwnersIcons","teamMembersIcon","editProjectOwnersBtn","saveMembersListBtn","readyPhonemesPageAntcs","applyAllBtn","newPhonemeBtn","createOrUpdatePhonemeBtn","tableRowBtns","el","readyTermSubstitutionsPageAntcs","newSubstitutionBtn","createOrUpdateSubstitutionBtn","readyVoicesPageAntcs","browserMarketPlaceBtn","voicesTable","btn","readyOtherAnalytics","pathname"],"mappings":"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"}