{"version":3,"file":"links.server.cjs","names":["defaultBase","cssImports","createFilter","getMediaQuery"],"sources":["../src/links.server.ts"],"sourcesContent":["import cssImports from './imports.json' with { type: 'json' };\nimport { defaultBase } from './links/constants';\nimport { createFilter } from './links/create-filter';\nimport { getMediaQuery } from './links/get-media-query';\nimport type { LinkProps, LinkPropsList, LinksFunction } from './links/types';\n\nconst fontPreloadUrls = [\n  'https://www.volvocars.com/static/shared/fonts/volvo-centum/v1/volvo-centum.woff2',\n];\n\nexport const links: LinksFunction = ({ base = defaultBase, filter } = {}) => {\n  const baseHref = typeof base === 'string' ? base : base?.href;\n  const normalizedBase =\n    baseHref && !baseHref.endsWith('/') ? `${baseHref}/` : baseHref;\n  const cssLinkProps = Object.entries(cssImports)\n    .filter(createFilter(filter))\n    .flatMap<LinkProps>(([name, filename]) => {\n      const props: LinkProps = {\n        href: normalizedBase + filename,\n        rel: 'stylesheet',\n        crossOrigin: 'anonymous',\n      };\n      const media = getMediaQuery(name);\n      if (media) {\n        props.media = media;\n      }\n\n      const preloadProps: LinkProps = {\n        ...props,\n        rel: 'preload',\n        as: 'style',\n      };\n\n      props['data-volvo-css-name'] = name;\n\n      if (filter?.preload === false) {\n        return props;\n      }\n      return [preloadProps, props] as const;\n    })\n    .sort((a, b) =>\n      a.rel === 'preload' && b.rel === 'preload'\n        ? 0\n        : a.rel === 'preload'\n          ? -1\n          : 1,\n    );\n\n  const fontPreloads: LinkProps[] =\n    filter?.fonts === false || filter?.preload === false\n      ? []\n      : fontPreloadUrls.map((href) => ({\n          rel: 'preload',\n          href,\n          as: 'font',\n          type: 'font/woff2',\n          crossOrigin: 'anonymous',\n        }));\n  const linkProps: LinkPropsList = [...fontPreloads, ...cssLinkProps];\n\n  linkProps.toString = function () {\n    let html = '';\n    for (const link of this) {\n      const attrs = Object.entries(link)\n        .map(([key, value]) => `${key}=\"${value}\"`)\n        .join(' ');\n      html += `<link ${attrs} />\\n`;\n    }\n    return html;\n  };\n\n  return linkProps;\n};\n\nexport type { LinkProps, LinksFunction };\n"],"mappings":"qHAMM,EAAkB,CACtB,kFACF,EAEa,GAAwB,CAAE,OAAOA,EAAAA,EAAa,UAAW,CAAC,IAAM,CAC3E,IAAM,EAAW,OAAO,GAAS,SAAW,EAAA,GAAA,KAAA,IAAA,GAAO,EAAM,KACnD,EACJ,GAAY,CAAC,EAAS,SAAS,GAAG,EAAI,GAAG,EAAS,GAAK,EACnD,EAAe,OAAO,QAAQC,EAAAA,CAAU,CAAC,CAC5C,OAAOC,EAAAA,EAAa,CAAM,CAAC,CAAC,CAC5B,SAAoB,CAAC,EAAM,KAAc,CACxC,IAAM,EAAmB,CACvB,KAAM,EAAiB,EACvB,IAAK,aACL,YAAa,WACf,EACM,EAAQC,EAAAA,EAAc,CAAI,EAC5B,IACF,EAAM,MAAQ,GAGhB,IAAM,EAA0B,CAC9B,GAAG,EACH,IAAK,UACL,GAAI,OACN,EAOA,MALA,GAAM,uBAAyB,GAE/B,GAAA,KAAA,IAAA,GAAI,EAAQ,WAAY,GACf,EAEF,CAAC,EAAc,CAAK,CAC7B,CAAC,CAAC,CACD,MAAM,EAAG,IACR,EAAE,MAAQ,WAAa,EAAE,MAAQ,UAC7B,EACA,EAAE,MAAQ,UACR,GACA,CACR,EAYI,EAA2B,CAAC,IAAA,GAAA,KAAA,IAAA,GAThC,EAAQ,SAAU,KAAA,GAAA,KAAA,IAAA,GAAS,EAAQ,WAAY,GAC3C,CAAC,EACD,EAAgB,IAAK,IAAU,CAC7B,IAAK,UACL,OACA,GAAI,OACJ,KAAM,aACN,YAAa,WACf,EAAE,EAC2C,GAAG,CAAY,EAalE,MAXA,GAAU,SAAW,UAAY,CAC/B,IAAI,EAAO,GACX,IAAK,IAAM,KAAQ,KAAM,CACvB,IAAM,EAAQ,OAAO,QAAQ,CAAI,CAAC,CAC/B,KAAK,CAAC,EAAK,KAAW,GAAG,EAAI,IAAI,EAAM,EAAE,CAAC,CAC1C,KAAK,GAAG,EACX,GAAQ,SAAS,EAAM,MACzB,CACA,OAAO,CACT,EAEO,CACT"}