{"version":3,"file":"AppMeta-D2BLEShT.js","sources":["../../../node_modules/@mantine/hooks/esm/use-document-visibility/use-document-visibility.mjs","../../../node_modules/@mantine/hooks/esm/use-mounted/use-mounted.mjs","../../../app/helpers/pwa.ts","../../../node_modules/@fontsource-variable/bricolage-grotesque/files/bricolage-grotesque-latin-standard-normal.woff2?url","../../../node_modules/@fontsource-variable/manrope/files/manrope-latin-wght-normal.woff2?url","../../../app/components/AppMeta.tsx"],"sourcesContent":["'use client';\nimport { useState, useEffect } from 'react';\n\nfunction useDocumentVisibility() {\n  const [documentVisibility, setDocumentVisibility] = useState(\"visible\");\n  useEffect(() => {\n    const listener = () => setDocumentVisibility(document.visibilityState);\n    document.addEventListener(\"visibilitychange\", listener);\n    return () => document.removeEventListener(\"visibilitychange\", listener);\n  }, []);\n  return documentVisibility;\n}\n\nexport { useDocumentVisibility };\n//# sourceMappingURL=use-document-visibility.mjs.map\n","'use client';\nimport { useState, useEffect } from 'react';\n\nfunction useMounted() {\n  const [mounted, setMounted] = useState(false);\n  useEffect(() => setMounted(true), []);\n  return mounted;\n}\n\nexport { useMounted };\n//# sourceMappingURL=use-mounted.mjs.map\n","import { useDocumentVisibility, useMediaQuery } from \"@mantine/hooks\";\nimport { useMounted } from \"@mantine/hooks\";\n\nexport const useIsStandalone = (): boolean | undefined => {\n  const mounted = useMounted();\n  const isStandalone = useMediaQuery(\"(display-mode: standalone)\");\n  if (mounted) {\n    return isStandalone;\n  }\n};\n\nexport const useInstallPromptEvent = (): Event | null => {\n  const [event, setEvent] = useState<Event | null>(null);\n  useEffect(() => {\n    const capturedEvent = window.installPromptEvent;\n    if (capturedEvent) {\n      setEvent(capturedEvent);\n    }\n    addEventListener(\"beforeinstallprompt\", event => {\n      event.preventDefault();\n      setEvent(event);\n    });\n    return () => {\n      removeEventListener(\"beforeinstallprompt\", setEvent);\n    };\n  }, []);\n  return event;\n};\n\nexport const useClearAppBadge = () => {\n  const isStandalone = useIsStandalone();\n  const visibility = useDocumentVisibility();\n  useEffect(() => {\n    if (\n      isStandalone &&\n      visibility === \"visible\" &&\n      \"clearAppBadge\" in navigator\n    ) {\n      void navigator.clearAppBadge();\n    }\n  }, [isStandalone, visibility]);\n};\n","export default \"__VITE_ASSET__Cu8MbTEF__\"","export default \"__VITE_ASSET__CoSZXsjk__\"","import bricolageGrotesqueSrc from \"@fontsource-variable/bricolage-grotesque/files/bricolage-grotesque-latin-standard-normal.woff2?url\";\nimport manropeWoff2Src from \"@fontsource-variable/manrope/files/manrope-latin-wght-normal.woff2?url\";\nimport { useDocumentVisibility } from \"@mantine/hooks\";\n\nconst APP_META_SITE_TYPE = \"website\";\nconst APP_META_SITE_NAME = \"it's kai\";\nconst APP_META_SITE_DESCRIPTION =\n  \"welcome to my little corner of the internet :)\";\nconst APP_META_SITE_IMAGE = \"/banner.png\";\nconst APP_META_TITLE_SEPARATOR = \"|\";\n\nexport interface AppMetaProps {\n  siteName?: string;\n  title?: string | string[];\n  description?: string | null;\n  imageUrl?: string | null;\n  manifestUrl?: string | null;\n  noIndex?: boolean;\n}\n\nconst AppMeta: FC<AppMetaProps> = ({\n  description = APP_META_SITE_DESCRIPTION,\n  imageUrl = APP_META_SITE_IMAGE,\n  manifestUrl = \"/site.webmanifest\",\n  noIndex,\n  siteName = APP_META_SITE_NAME,\n  title: titleProp,\n}) => {\n  const isStandalone = useIsStandalone();\n  const pageVisibility = useDocumentVisibility();\n  const pageTitle = useMemo<string>(() => {\n    const components = Array.isArray(titleProp) ? titleProp : [titleProp];\n    return components\n      .reverse()\n      .filter(component => !!component)\n      .join(` ${APP_META_TITLE_SEPARATOR} `);\n  }, [titleProp]);\n  const siteTitle = useMemo<string>(\n    () =>\n      [pageTitle, siteName]\n        .filter(component => !!component)\n        .join(` ${APP_META_TITLE_SEPARATOR} `),\n    [pageTitle, siteName],\n  );\n  const tabTitle = useMemo<string>(() => {\n    let title = pageTitle;\n    if (\n      pageVisibility === \"hidden\" &&\n      !title &&\n      siteName === APP_META_SITE_NAME\n    ) {\n      title = \"🥺 come back\";\n    }\n    if (isStandalone) {\n      return title;\n    }\n    return [title, siteName]\n      .filter(component => !!component)\n      .join(` ${APP_META_TITLE_SEPARATOR} `);\n  }, [pageTitle, pageVisibility, siteName, isStandalone]);\n\n  return (\n    <Head>\n      <title head-key=\"title\">{tabTitle}</title>\n      {!!manifestUrl && (\n        <link head-key=\"manifest\" rel=\"manifest\" href={manifestUrl} />\n      )}\n      {!!description && (\n        <meta head-key=\"description\" name=\"description\" content={description} />\n      )}\n      <meta property=\"og:site_name\" content={siteName} />\n      <meta property=\"og:type\" content={APP_META_SITE_TYPE} />\n      {!!pageTitle && <meta property=\"og:title\" content={pageTitle} />}\n      {!!description && (\n        <meta property=\"og:description\" content={description} />\n      )}\n      {!!imageUrl && <meta property=\"og:image\" content={imageUrl} />}\n      <meta name=\"twitter:card\" content=\"summary\" />\n      <meta name=\"twitter:title\" content={siteTitle} />\n      {!!description && (\n        <meta name=\"twitter:description\" content={description} />\n      )}\n      {!!imageUrl && <meta name=\"twitter:image\" content={imageUrl} />}\n      {noIndex && <meta name=\"robots\" content=\"noindex\" />}\n      <link\n        rel=\"preload\"\n        as=\"font\"\n        type=\"font/woff2\"\n        href={manropeWoff2Src}\n        crossOrigin=\"anonymous\"\n      />\n      <link\n        as=\"font\"\n        type=\"font/woff2\"\n        href={bricolageGrotesqueSrc}\n        crossOrigin=\"anonymous\"\n      />\n    </Head>\n  );\n};\n\nexport default AppMeta;\n"],"names":["useDocumentVisibility","documentVisibility","setDocumentVisibility","useState","useEffect","listener","useMounted","mounted","setMounted","useIsStandalone","isStandalone","useMediaQuery","useInstallPromptEvent","event","setEvent","capturedEvent","useClearAppBadge","visibility","bricolageGrotesqueSrc","manropeWoff2Src","APP_META_SITE_TYPE","APP_META_SITE_NAME","APP_META_SITE_DESCRIPTION","APP_META_SITE_IMAGE","APP_META_TITLE_SEPARATOR","AppMeta","description","imageUrl","manifestUrl","noIndex","siteName","title","titleProp","pageVisibility","pageTitle","useMemo","Array","isArray","reverse","filter","component","join","siteTitle","tabTitle","Head","children","_jsx","rel","href","name","content","property","as","type","crossOrigin"],"mappings":"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","x_google_ignoreList":[0,1,3,4]}