{"version":3,"file":"manifest.cjs","names":[],"sources":["../../src/manifest.ts"],"sourcesContent":["export type AssetCrossOrigin = 'anonymous' | 'use-credentials'\n\nexport type AssetCrossOriginConfig =\n  | AssetCrossOrigin\n  | Partial<Record<'modulepreload' | 'stylesheet', AssetCrossOrigin>>\n\nexport type ManifestAssetLink =\n  | string\n  | {\n      href: string\n      crossOrigin?: AssetCrossOrigin\n    }\n\nexport function getAssetCrossOrigin(\n  assetCrossOrigin: AssetCrossOriginConfig | undefined,\n  kind: 'modulepreload' | 'stylesheet',\n): AssetCrossOrigin | undefined {\n  if (!assetCrossOrigin) {\n    return undefined\n  }\n\n  if (typeof assetCrossOrigin === 'string') {\n    return assetCrossOrigin\n  }\n\n  return assetCrossOrigin[kind]\n}\n\nexport function resolveManifestAssetLink(link: ManifestAssetLink) {\n  if (typeof link === 'string') {\n    return { href: link, crossOrigin: undefined }\n  }\n\n  return link\n}\n\nexport type Manifest = {\n  inlineCss?: {\n    styles: Record<string, string>\n  }\n  routes: Record<\n    string,\n    {\n      filePath?: string\n      preloads?: Array<ManifestAssetLink>\n      assets?: Array<RouterManagedTag>\n    }\n  >\n}\n\nexport type RouterManagedTag =\n  | {\n      tag: 'title'\n      attrs?: Record<string, any>\n      children: string\n    }\n  | {\n      tag: 'meta' | 'link'\n      attrs?: Record<string, any>\n      children?: never\n    }\n  | {\n      tag: 'script'\n      attrs?: Record<string, any>\n      children?: string\n    }\n  | {\n      tag: 'style'\n      attrs?: Record<string, any>\n      children?: string\n      inlineCss?: true\n    }\n\nexport function getStylesheetHref(asset: RouterManagedTag) {\n  if (asset.tag !== 'link') return undefined\n\n  const rel = asset.attrs?.rel\n  const href = asset.attrs?.href\n  if (typeof href !== 'string') return undefined\n\n  const relTokens = typeof rel === 'string' ? rel.split(/\\s+/) : []\n  if (!relTokens.includes('stylesheet')) return undefined\n\n  return href\n}\n\nexport function isInlinableStylesheet(\n  manifest: Manifest | undefined,\n  asset: RouterManagedTag,\n) {\n  const href = getStylesheetHref(asset)\n  return !!href && manifest?.inlineCss?.styles[href] !== undefined\n}\n\nexport function createInlineCssStyleAsset(css: string): RouterManagedTag {\n  return {\n    tag: 'style',\n    attrs: {\n      suppressHydrationWarning: true,\n    },\n    inlineCss: true,\n    children: css,\n  }\n}\n\nexport function createInlineCssPlaceholderAsset(): RouterManagedTag {\n  return {\n    tag: 'style',\n    attrs: {\n      suppressHydrationWarning: true,\n    },\n    inlineCss: true,\n  }\n}\n"],"mappings":";AAaA,SAAgB,oBACd,kBACA,MAC8B;AAC9B,KAAI,CAAC,iBACH;AAGF,KAAI,OAAO,qBAAqB,SAC9B,QAAO;AAGT,QAAO,iBAAiB;;AAG1B,SAAgB,yBAAyB,MAAyB;AAChE,KAAI,OAAO,SAAS,SAClB,QAAO;EAAE,MAAM;EAAM,aAAa,KAAA;EAAW;AAG/C,QAAO;;AAwCT,SAAgB,kBAAkB,OAAyB;AACzD,KAAI,MAAM,QAAQ,OAAQ,QAAO,KAAA;CAEjC,MAAM,MAAM,MAAM,OAAO;CACzB,MAAM,OAAO,MAAM,OAAO;AAC1B,KAAI,OAAO,SAAS,SAAU,QAAO,KAAA;AAGrC,KAAI,EADc,OAAO,QAAQ,WAAW,IAAI,MAAM,MAAM,GAAG,EAAE,EAClD,SAAS,aAAa,CAAE,QAAO,KAAA;AAE9C,QAAO;;AAGT,SAAgB,sBACd,UACA,OACA;CACA,MAAM,OAAO,kBAAkB,MAAM;AACrC,QAAO,CAAC,CAAC,QAAQ,UAAU,WAAW,OAAO,UAAU,KAAA;;AAGzD,SAAgB,0BAA0B,KAA+B;AACvE,QAAO;EACL,KAAK;EACL,OAAO,EACL,0BAA0B,MAC3B;EACD,WAAW;EACX,UAAU;EACX;;AAGH,SAAgB,kCAAoD;AAClE,QAAO;EACL,KAAK;EACL,OAAO,EACL,0BAA0B,MAC3B;EACD,WAAW;EACZ"}