{"version":3,"sources":["../src/lib/metadata/index.ts"],"sourcesContent":["import {\n  type LocalizedContent,\n  MediaItem,\n  type Site,\n  getLocalizedContent,\n  setConfig,\n} from \"@venuecms/sdk\";\nimport { getSite } from \"../api\";\nimport removeMarkdown from \"remove-markdown\";\nimport { getPublicImage } from \"../../components/utils\";\n\n\ntype Params = { locale: string; siteKey: string };\n\ntype LocalizedItem = {\n  image?: MediaItem;\n  localizedContent: Array<LocalizedContent>;\n};\n\ntype Metadata = {\n  title: string;\n  siteName: string;\n  metaTitle: string;\n  metaDescription: string;\n  keywords: string;\n\n  content: string;\n  shortContent: string;\n};\n\nexport const getLocalizedMetadata = ({\n  locale,\n  item,\n  site,\n  overrides = {},\n}: {\n  locale: string;\n  item?: LocalizedItem;\n  site: Site;\n  overrides?: Partial<Metadata>;\n}) => {\n  const { content } = item?.localizedContent\n    ? getLocalizedContent(item?.localizedContent, locale)\n    : {};\n\n  const {\n    title,\n    content: description,\n    shortContent,\n    metaTitle,\n    metaDescription,\n    keywords,\n  } = content ?? overrides;\n\n  const getOpenGraphFromLocalizedContent = (item?: LocalizedItem) => {\n    const imageUrl = item?.image && getPublicImage(item.image);\n    const siteImageUrl = site.image && getPublicImage(site.image);\n\n    const trimDescription = description\n      ? removeMarkdown(description).split(\"\\n\")[0]\n      : undefined;\n    return {\n      title: metaTitle || title,\n      description: metaDescription || shortContent || trimDescription,\n      siteName: site.name,\n      ...(item?.image && imageUrl\n        ? {\n            images: [\n              {\n                width: item.image.metadata?.width,\n                height: item.image.metadata?.height,\n                url: imageUrl,\n              },\n            ],\n          }\n        : {\n            images: [\n              {\n                width: site.image?.metadata?.width,\n                height: site.image?.metadata?.height,\n                url: siteImageUrl,\n              },\n            ],\n          }),\n      locale,\n      type: \"website\",\n      ...overrides,\n    };\n  };\n\n  return {\n    title: `${site.name}${title ? ` - ${title}` : \"\"}`,\n    description:\n      metaDescription ||\n      shortContent ||\n      (description ? removeMarkdown(description) : undefined),\n    keywords: keywords?.split(\", \"),\n    openGraph: getOpenGraphFromLocalizedContent(item),\n    ...overrides,\n  };\n};\n\n// Gets metadata for a single item that is queried by a slug.\n// When a getItem is not passed, it will simply use the overrides passed\nexport const getGenerateMetadata =\n  (getItem: (params: { slug: string }) => Promise<{ data: any }>) =>\n  async ({ params }: { params: Promise<Params & { slug: string }> }) => {\n    try {\n      const { siteKey, slug, locale } = await params;\n      setConfig({ siteKey });\n\n      const [{ data: site }, { data: item }] = await Promise.all([\n        getSite(),\n        getItem({ slug }),\n      ]);\n\n      if (!site || !item) {\n        return {};\n      }\n\n      const metadata = getLocalizedMetadata({\n        locale,\n        item,\n        site,\n      });\n\n      return metadata;\n    } catch (e) {\n      return {};\n    }\n  };\n"],"mappings":"kFAAA,OAIE,uBAAAA,EACA,aAAAC,MACK,gBAEP,OAAOC,MAAoB,kBAsBpB,IAAMC,EAAuB,CAAC,CACnC,OAAAC,EACA,KAAAC,EACA,KAAAC,EACA,UAAAC,EAAY,CAAC,CACf,IAKM,CACJ,GAAM,CAAE,QAAAC,CAAQ,EAAIH,GAAM,iBACtBI,EAAoBJ,GAAM,iBAAkBD,CAAM,EAClD,CAAC,EAEC,CACJ,MAAAM,EACA,QAASC,EACT,aAAAC,EACA,UAAAC,EACA,gBAAAC,EACA,SAAAC,CACF,EAAIP,GAAWD,EAETS,EAAoCX,GAAyB,CACjE,IAAMY,EAAWZ,GAAM,OAASa,EAAeb,EAAK,KAAK,EACnDc,EAAeb,EAAK,OAASY,EAAeZ,EAAK,KAAK,EAEtDc,EAAkBT,EACpBU,EAAeV,CAAW,EAAE,MAAM;AAAA,CAAI,EAAE,CAAC,EACzC,OACJ,MAAO,CACL,MAAOE,GAAaH,EACpB,YAAaI,GAAmBF,GAAgBQ,EAChD,SAAUd,EAAK,KACf,GAAID,GAAM,OAASY,EACf,CACE,OAAQ,CACN,CACE,MAAOZ,EAAK,MAAM,UAAU,MAC5B,OAAQA,EAAK,MAAM,UAAU,OAC7B,IAAKY,CACP,CACF,CACF,EACA,CACE,OAAQ,CACN,CACE,MAAOX,EAAK,OAAO,UAAU,MAC7B,OAAQA,EAAK,OAAO,UAAU,OAC9B,IAAKa,CACP,CACF,CACF,EACJ,OAAAf,EACA,KAAM,UACN,GAAGG,CACL,CACF,EAEA,MAAO,CACL,MAAO,GAAGD,EAAK,IAAI,GAAGI,EAAQ,MAAMA,CAAK,GAAK,EAAE,GAChD,YACEI,GACAF,IACCD,EAAcU,EAAeV,CAAW,EAAI,QAC/C,SAAUI,GAAU,MAAM,IAAI,EAC9B,UAAWC,EAAiCX,CAAI,EAChD,GAAGE,CACL,CACF,EAIae,EACVC,GACD,MAAO,CAAE,OAAAC,CAAO,IAAsD,CACpE,GAAI,CACF,GAAM,CAAE,QAAAC,EAAS,KAAAC,EAAM,OAAAtB,CAAO,EAAI,MAAMoB,EACxCG,EAAU,CAAE,QAAAF,CAAQ,CAAC,EAErB,GAAM,CAAC,CAAE,KAAMnB,CAAK,EAAG,CAAE,KAAMD,CAAK,CAAC,EAAI,MAAM,QAAQ,IAAI,CACzDuB,EAAQ,EACRL,EAAQ,CAAE,KAAAG,CAAK,CAAC,CAClB,CAAC,EAED,MAAI,CAACpB,GAAQ,CAACD,EACL,CAAC,EAGOF,EAAqB,CACpC,OAAAC,EACA,KAAAC,EACA,KAAAC,CACF,CAAC,CAGH,MAAY,CACV,MAAO,CAAC,CACV,CACF","names":["getLocalizedContent","setConfig","removeMarkdown","getLocalizedMetadata","locale","item","site","overrides","content","getLocalizedContent","title","description","shortContent","metaTitle","metaDescription","keywords","getOpenGraphFromLocalizedContent","imageUrl","getPublicImage","siteImageUrl","trimDescription","removeMarkdown","getGenerateMetadata","getItem","params","siteKey","slug","setConfig","getSite"]}