{"version":3,"file":"TelemetryProvider.cjs","names":[],"sources":["../../src/telemetry/TelemetryProvider.tsx"],"sourcesContent":["import { createContext, useContext, useEffect, useMemo } from \"react\";\nimport type { ReactNode } from \"react\";\nimport type { TelemetryAdapter } from \"./types\";\n\nconst TelemetryContext = createContext<TelemetryAdapter | null>(null);\n\nexport interface TelemetryProviderProps {\n    adapter: TelemetryAdapter;\n    children: ReactNode;\n}\n\n/**\n * Inject a telemetry adapter into the tree. Apps can swap implementations\n * (Sentry, Datadog, PostHog, console) without touching call sites.\n */\nexport function TelemetryProvider({ adapter, children }: TelemetryProviderProps) {\n    useEffect(() => {\n        void adapter.init?.();\n        return () => {\n            void adapter.flush?.();\n        };\n    }, [adapter]);\n    const value = useMemo(() => adapter, [adapter]);\n    return <TelemetryContext.Provider value={value}>{children}</TelemetryContext.Provider>;\n}\n\n/**\n * Access the active telemetry adapter. Returns `null` when no provider is\n * mounted (calls are silently dropped — useful for unit tests).\n */\nexport function useTelemetry(): TelemetryAdapter | null {\n    return useContext(TelemetryContext);\n}\n"],"mappings":"sDAIA,IAAM,GAAA,EAAmB,EAAA,cAAA,CAAuC,IAAI,EAWpE,SAAgB,EAAkB,CAAE,UAAS,YAAoC,EAC7E,EAAA,EAAA,UAAA,MACI,EAAa,OAAO,MACP,CACT,EAAa,QAAQ,CACzB,GACD,CAAC,CAAO,CAAC,EACZ,IAAM,GAAA,EAAQ,EAAA,QAAA,KAAc,EAAS,CAAC,CAAO,CAAC,EAC9C,OAAO,EAAA,EAAA,IAAA,CAAC,EAAiB,SAAlB,CAAkC,QAAQ,UAAoC,CAAA,CACzF,CAMA,SAAgB,GAAwC,CACpD,OAAA,EAAO,EAAA,WAAA,CAAW,CAAgB,CACtC"}