@axiomhq/react
Version:
The official React package for Axiom
1 lines • 1.46 kB
Source Map (JSON)
{"version":3,"file":"use-logger.cjs","sources":["../../src/use-logger.ts"],"sourcesContent":["'use client';\nimport { Logger } from '@axiomhq/logging';\nimport { useEffect, useState } from 'react';\n\nexport function createUseLogger(logger: Logger) {\n if (!logger) {\n throw new Error('A logger must be provided to create useLogger');\n }\n\n const useLogger = () => {\n const [path, setPath] = useState(typeof window !== 'undefined' ? window.location.pathname : '');\n\n useEffect(() => {\n const handleLocationChange = () => {\n setPath(window.location.pathname);\n };\n\n window.addEventListener('popstate', handleLocationChange);\n window.addEventListener('pushState', handleLocationChange);\n window.addEventListener('replaceState', handleLocationChange);\n\n return () => {\n window.removeEventListener('popstate', handleLocationChange);\n window.removeEventListener('pushState', handleLocationChange);\n window.removeEventListener('replaceState', handleLocationChange);\n };\n }, []);\n\n useEffect(() => {\n return () => {\n if (logger) {\n logger.flush();\n }\n };\n }, [path]);\n\n return logger;\n };\n\n return useLogger;\n}\n"],"names":["useEffect"],"mappings":";;;;AAIO;AACL;AACQ;AAAyD;AAGjE;AACQ;AAENA;AACE;AACU;AAAwB;AAG3B;AACA;AACA;AAEP;AACS;AACA;AACA;AAAwD;AAAA;AAInEA;AACE;AACE;AACE;AAAa;AACf;AAAA;AAIG;AAAA;AAGF;AACT;;"}