{"version":3,"file":"Scripts.cjs","names":[],"sources":["../../src/Scripts.tsx"],"sourcesContent":["import { useSelector } from '@tanstack/react-store'\nimport {\n  composeSsrBodyScripts,\n  deepEqual,\n  getSsrBodyScriptParts,\n} from '@tanstack/router-core'\nimport { isServer } from '@tanstack/router-core/isServer'\nimport { Asset } from './Asset'\nimport { useRouter } from './useRouter'\nimport type { RouterManagedTag } from '@tanstack/router-core'\n\ntype ScriptRenderAsset = RouterManagedTag & {\n  preventScriptHoist?: boolean\n}\n\nconst routeScriptAttrs = { suppressHydrationWarning: true }\n\n/**\n * Render body script tags collected from route matches and SSR manifests.\n * During streaming SSR, `<Scripts>` marks where late hydration scripts may\n * begin to be inserted.\n */\nexport const Scripts = () => {\n  const router = useRouter()\n  const nonce = router.options.ssr?.nonce\n\n  const getParts = (matches: Array<any>) => {\n    const parts = getSsrBodyScriptParts(\n      matches,\n      router.ssr?.manifest,\n      nonce,\n      routeScriptAttrs,\n    )\n    for (const script of parts[1]) {\n      if (typeof script.attrs?.src === 'string') {\n        const scriptWithHoist = script as ScriptRenderAsset\n        scriptWithHoist.preventScriptHoist = true\n      }\n    }\n    return parts\n  }\n\n  const getScripts = (matches: Array<any>) => {\n    return composeSsrBodyScripts(getParts(matches))\n  }\n\n  if (isServer ?? router.isServer) {\n    const activeMatches = router.stores.matches.get()\n    return renderScripts(\n      composeSsrBodyScripts(\n        getParts(activeMatches),\n        router.serverSsr?.takeInitialHydrationScriptTags(),\n      ),\n    )\n  }\n\n  // eslint-disable-next-line react-hooks/rules-of-hooks -- condition is static\n  const scripts = useSelector(router.stores.matches, getScripts, {\n    compare: deepEqual,\n  })\n\n  return renderScripts(scripts)\n}\n\nfunction renderScripts(scripts: Array<ScriptRenderAsset>) {\n  return (\n    <>\n      {scripts.map((asset, i) => (\n        <Asset {...asset} key={`tsr-scripts-${asset.tag}-${i}`} />\n      ))}\n    </>\n  )\n}\n"],"mappings":";;;;;;;;AAeA,IAAM,mBAAmB,EAAE,0BAA0B,KAAK;;;;;;AAO1D,IAAa,gBAAgB;CAC3B,MAAM,SAAS,kBAAA,UAAU;CACzB,MAAM,QAAQ,OAAO,QAAQ,KAAK;CAElC,MAAM,YAAY,YAAwB;EACxC,MAAM,SAAA,GAAA,sBAAA,uBACJ,SACA,OAAO,KAAK,UACZ,OACA,gBACF;EACA,KAAK,MAAM,UAAU,MAAM,IACzB,IAAI,OAAO,OAAO,OAAO,QAAQ,UAAU;GACzC,MAAM,kBAAkB;GACxB,gBAAgB,qBAAqB;EACvC;EAEF,OAAO;CACT;CAEA,MAAM,cAAc,YAAwB;EAC1C,QAAA,GAAA,sBAAA,uBAA6B,SAAS,OAAO,CAAC;CAChD;CAEA,IAAI,+BAAA,YAAY,OAAO,UAErB,OAAO,eAAA,GAAA,sBAAA,uBAEH,SAHkB,OAAO,OAAO,QAAQ,IAG/B,CAAa,GACtB,OAAO,WAAW,+BAA+B,CACnD,CACF;CAQF,OAAO,eAAA,GAAA,sBAAA,aAJqB,OAAO,OAAO,SAAS,YAAY,EAC7D,SAAS,sBAAA,UACX,CAEqB,CAAO;AAC9B;AAEA,SAAS,cAAc,SAAmC;CACxD,OACE,iBAAA,GAAA,kBAAA,KAAA,kBAAA,UAAA,EAAA,UACG,QAAQ,KAAK,OAAO,MACnB,iBAAA,GAAA,MAAA,eAAC,cAAA,OAAD;EAAO,GAAI;EAAO,KAAK,eAAe,MAAM,IAAI,GAAG;CAAM,CAAA,CAC1D,EACD,CAAA;AAEN"}