{"version":3,"file":"browserDetection.mjs","names":[],"sources":["../../../src/tools/utils/browserDetection.ts"],"sourcesContent":["// Exported only for tests\nexport const enum Browser {\n  CHROMIUM,\n  SAFARI,\n  OTHER,\n}\n\nexport function isChromium() {\n  return detectBrowserCached() === Browser.CHROMIUM\n}\n\nexport function isSafari() {\n  return detectBrowserCached() === Browser.SAFARI\n}\n\nlet browserCache: Browser | undefined\nfunction detectBrowserCached() {\n  return browserCache ?? (browserCache = detectBrowser())\n}\n\n// Exported only for tests\nexport function detectBrowser(browserWindow: Window = window) {\n  const userAgent = browserWindow.navigator.userAgent\n  if ((browserWindow as any).chrome || /HeadlessChrome/.test(userAgent)) {\n    return Browser.CHROMIUM\n  }\n\n  if (\n    // navigator.vendor is deprecated, but it is the most resilient way we found to detect\n    // \"Apple maintained browsers\" (AKA Safari). If one day it gets removed, we still have the\n    // useragent test as a semi-working fallback.\n    browserWindow.navigator.vendor?.indexOf('Apple') === 0 ||\n    (/safari/i.test(userAgent) && !/chrome|android/i.test(userAgent))\n  ) {\n    return Browser.SAFARI\n  }\n\n  return Browser.OTHER\n}\n\nexport function detectVersion() {\n  const userAgent = window.navigator.userAgent\n  const match = userAgent.match(/(?:chrome|headlesschrome|version)\\/(\\d+)/i)\n  if (match) {\n    return parseInt(match[1], 10)\n  }\n}\n"],"mappings":";AACA,IAAkB,UAAX,yBAAA,SAAA;CACL,QAAA,QAAA,cAAA,KAAA;CACA,QAAA,QAAA,YAAA,KAAA;CACA,QAAA,QAAA,WAAA,KAAA;;AACF,EAAA,CAAA,CAAA;AAEA,SAAgB,aAAa;CAC3B,OAAO,oBAAoB,MAAA;AAC7B;AAEA,SAAgB,WAAW;CACzB,OAAO,oBAAoB,MAAA;AAC7B;AAEA,IAAI;AACJ,SAAS,sBAAsB;CAC7B,OAAO,iBAAiB,eAAe,cAAc;AACvD;AAGA,SAAgB,cAAc,gBAAwB,QAAQ;CAC5D,MAAM,YAAY,cAAc,UAAU;CAC1C,IAAK,cAAsB,UAAU,iBAAiB,KAAK,SAAS,GAClE,OAAA;CAGF,IAIE,cAAc,UAAU,QAAQ,QAAQ,OAAO,MAAM,KACpD,UAAU,KAAK,SAAS,KAAK,CAAC,kBAAkB,KAAK,SAAS,GAE/D,OAAA;CAGF,OAAA;AACF;AAEA,SAAgB,gBAAgB;CAE9B,MAAM,QADY,OAAO,UAAU,UACX,MAAM,2CAA2C;CACzE,IAAI,OACF,OAAO,SAAS,MAAM,IAAI,EAAE;AAEhC"}