{
  "version": 3,
  "sources": ["../../src/app/metrics.ts"],
  "sourcesContent": ["import type { FramerEventTrack } from \"@framerjs/framer-tracking-client\"\nimport { FramerTracking } from \"@framerjs/framer-tracking-client\"\nimport { getServiceMap } from \"@framerjs/shared\"\nimport React from \"react\"\nimport { isUndefined } from \"utils/typeChecks.ts\"\n\n// Duplicate to reduce dependencies\nexport enum MetricsInteractionViews {\n\tNOT_DEFINED = \"not-defined\",\n\tCHROME = \"chrome\",\n\tTOOLBAR = \"tool-bar\",\n\tPREVIEW_TOOLBAR = \"preview-tool-bar\",\n\tPROJECT_MENU_BAR = \"project-menu-bar\",\n\tMAIN_MENU = \"main-menu\",\n\tCMS = \"cms\",\n\tCONTENT_PANEL = \"content-panel\",\n\tLAYERS_PANEL = \"layers-panel\",\n\tCOMPONENTS_PANEL = \"components-panel\",\n\tCODE_PANEL = \"code-panel\",\n\tPACKAGES_PANEL = \"packages-panel\",\n\tPROPERTIES_PANEL = \"properties-panel\",\n\tSTYLES_PRESETS_PANEL = \"styles-presets-panel\",\n\tHANDOFF_PANEL = \"handoff-panel\",\n\tSHAPE_TOOLS_PANEL = \"shape-tools-panel\",\n\tCOLOR_PICKER = \"color-picker\",\n\tFEEDBACK_PANEL = \"feedback-panel\",\n\tFEEDBACK_SURFACE = \"feedback-surface\",\n\tEMBED_POPOVER = \"embed-popover\",\n\tQUICK_ACTIONS = \"quick-actions\",\n\tCONTEXT_MENU = \"context-menu\",\n\tLINK_POPOVER = \"link-popover\",\n\tCANVAS = \"canvas\",\n\tTOAST = \"toast\",\n}\n\ninterface MetricsInitialContext {\n\tuserId: string\n\tappVersion?: string\n\tprojectId?: string\n}\n\nexport const MetricsViewContext = React.createContext<MetricsInteractionViews>(MetricsInteractionViews.NOT_DEFINED)\n\nenum MetricEventType {\n\tSTORE_INTERNAL = \"store_internal\",\n\tSTORE_BROWSE = \"store_browse\",\n\tSTORE_USE_INSTALLED = \"store_use_installed\",\n}\n\nenum EventVersion {\n\tv2 = 2,\n}\n\n// List of events using updated format for payload.\n// WARNING: If you change event payload format below\n// To prevent data pipeline FAILURE you must update event version here!\n// If version doesn't exist \u2014 you can create it\n// Version v1 is implicit\n// Also any changes here should be signed off by data team\nconst eventVersions = {\n\t[MetricEventType.STORE_INTERNAL]: EventVersion.v2,\n\t[MetricEventType.STORE_BROWSE]: EventVersion.v2,\n\t[MetricEventType.STORE_USE_INSTALLED]: EventVersion.v2,\n}\n\ninterface MetricEvent {\n\ttype: MetricEventType.STORE_INTERNAL\n\tname: string\n\taction: string\n\tstore: \"private\" | \"public\"\n\t[key: string]: any\n}\n\nconst initialContext: Omit<MetricsInitialContext, \"userId\"> = {}\n\nconst tracker = new FramerTracking({\n\tsourceName: \"framer-x\",\n\ttrackingURL: getServiceMap().events + \"/track\",\n\tverbose: window.localStorage && window.localStorage.getItem(\"debug-metrics\") === \"active\",\n\taddContext: context => {\n\t\tlet key: keyof typeof initialContext\n\t\tfor (key in initialContext) {\n\t\t\tif (isUndefined(context[key])) {\n\t\t\t\tcontext[key] = initialContext[key]\n\t\t\t}\n\t\t}\n\t},\n})\n\n// TODO: Remove this temporary type once we have schemas in place.\ninterface FramerEventTODO extends FramerEventTrack {\n\t[key: string]: any\n}\n\nexport namespace Metrics {\n\texport const init = function (input: MetricsInitialContext) {\n\t\tconst { appVersion, projectId } = input\n\t\tObject.assign(initialContext, { appVersion, projectId })\n\t\ttracker.setUserId(input.userId)\n\t}\n\n\texport const push = function (event: MetricEvent) {\n\t\tconst { name, type, ...data } = event\n\n\t\tif (event.type === MetricEventType.STORE_INTERNAL) {\n\t\t\t// Special handling for STORE_INTERNAL events.\n\t\t\t// TODO: Remove this and solve with schemas.\n\t\t\t// biome-ignore lint/performance/noDelete:\n\t\t\tdelete (data as Partial<MetricEvent>).action\n\n\t\t\ttracker.track({\n\t\t\t\ttype: \"track\",\n\t\t\t\tevent: name,\n\t\t\t\tversion: EventVersion.v2,\n\t\t\t\t...data,\n\t\t\t} as unknown as FramerEventTODO)\n\t\t} else {\n\t\t\ttracker.track({\n\t\t\t\ttype: \"track\",\n\t\t\t\tevent: type,\n\t\t\t\tversion: eventVersions[type],\n\t\t\t\tname,\n\t\t\t\t...data,\n\t\t\t} as FramerEventTODO)\n\t\t}\n\t}\n\n\texport const pushEvent = function (payload: any) {\n\t\tconst { event, ...data } = payload\n\n\t\ttracker.track({\n\t\t\t...data,\n\t\t\ttype: \"track\",\n\t\t\tevent,\n\t\t\tversion: eventVersions[event as keyof typeof eventVersions],\n\t\t})\n\t}\n}\n"],
  "mappings": ";;;;;;;;;;;;;;;;;AACA,oCAA+B;AAE/B,mBAAkB;AAsCX,IAAM,qBAAqB,aAAAA,QAAM,cAAuC,+BAAmC;AAkBlH,IAAM,gBAAgB;AAAA,EACrB,CAAC,qCAA8B,GAAG;AAAA,EAClC,CAAC,iCAA4B,GAAG;AAAA,EAChC,CAAC,+CAAmC,GAAG;AACxC;AAUA,IAAM,iBAAwD,CAAC;AAE/D,IAAM,UAAU,IAAI,6CAAe;AAAA,EAClC,YAAY;AAAA,EACZ,aAAa,cAAc,EAAE,SAAS;AAAA,EACtC,SAAS,OAAO,gBAAgB,OAAO,aAAa,QAAQ,eAAe,MAAM;AAAA,EACjF,YAAY,aAAW;AACtB,QAAI;AACJ,SAAK,OAAO,gBAAgB;AAC3B,UAAI,YAAY,QAAQ,GAAG,CAAC,GAAG;AAC9B,gBAAQ,GAAG,IAAI,eAAe,GAAG;AAAA,MAClC;AAAA,IACD;AAAA,EACD;AACD,CAAC;AAOM,IAAU;AAAA,CAAV,CAAUC,aAAV;AACC,EAAMA,SAAA,OAAO,SAAU,OAA8B;AAC3D,UAAM,EAAE,YAAY,UAAU,IAAI;AAClC,WAAO,OAAO,gBAAgB,EAAE,YAAY,UAAU,CAAC;AACvD,YAAQ,UAAU,MAAM,MAAM;AAAA,EAC/B;AAEO,EAAMA,SAAA,OAAO,SAAU,OAAoB;AACjD,UAAM,EAAE,MAAM,MAAM,GAAG,KAAK,IAAI;AAEhC,QAAI,MAAM,SAAS,uCAAgC;AAIlD,aAAQ,KAA8B;AAEtC,cAAQ,MAAM;AAAA,QACb,MAAM;AAAA,QACN,OAAO;AAAA,QACP,SAAS;AAAA,QACT,GAAG;AAAA,MACJ,CAA+B;AAAA,IAChC,OAAO;AACN,cAAQ,MAAM;AAAA,QACb,MAAM;AAAA,QACN,OAAO;AAAA,QACP,SAAS,cAAc,IAAI;AAAA,QAC3B;AAAA,QACA,GAAG;AAAA,MACJ,CAAoB;AAAA,IACrB;AAAA,EACD;AAEO,EAAMA,SAAA,YAAY,SAAU,SAAc;AAChD,UAAM,EAAE,OAAO,GAAG,KAAK,IAAI;AAE3B,YAAQ,MAAM;AAAA,MACb,GAAG;AAAA,MACH,MAAM;AAAA,MACN;AAAA,MACA,SAAS,cAAc,KAAmC;AAAA,IAC3D,CAAC;AAAA,EACF;AAAA,GA1CgB;",
  "names": ["React", "Metrics"]
}
