@tanstack/solid-router
Version:
Modern and scalable routing for Solid applications
1 lines • 3.89 kB
Source Map (JSON)
{"version":3,"file":"Scripts.cjs","names":["NoHydration","Solid","Asset","useRouter","RouterManagedTag","Scripts","router","nonce","options","ssr","activeMatches","createMemo","stores","activeMatchesSnapshot","state","assetScripts","Array","manifest","map","match","looseRoutesById","routeId","forEach","route","routes","id","assets","filter","d","tag","asset","push","attrs","children","scripts","flat","Boolean","script","serverBufferedScript","serverSsr","takeBufferedScripts","undefined","allScripts","result","unshift","_$createComponent","For","each","a","untrack"],"sources":["../../src/Scripts.tsx"],"sourcesContent":["import { NoHydration } from '@solidjs/web'\nimport * as Solid from 'solid-js'\nimport { Asset } from './Asset'\nimport { useRouter } from './useRouter'\nimport type { RouterManagedTag } from '@tanstack/router-core'\n\nexport const Scripts = () => {\n const router = useRouter()\n const nonce = router.options.ssr?.nonce\n const activeMatches = Solid.createMemo(\n () => router.stores.activeMatchesSnapshot.state,\n )\n const assetScripts = Solid.createMemo(() => {\n const assetScripts: Array<RouterManagedTag> = []\n const manifest = router.ssr?.manifest\n\n if (!manifest) {\n return []\n }\n\n activeMatches()\n .map((match) => router.looseRoutesById[match.routeId]!)\n .forEach((route) =>\n manifest.routes[route.id]?.assets\n ?.filter((d) => d.tag === 'script')\n .forEach((asset) => {\n assetScripts.push({\n tag: 'script',\n attrs: { ...asset.attrs, nonce },\n children: asset.children,\n } as any)\n }),\n )\n\n return assetScripts\n })\n\n const scripts = Solid.createMemo(() =>\n (\n activeMatches()\n .map((match) => match.scripts!)\n .flat(1)\n .filter(Boolean) as Array<RouterManagedTag>\n ).map(({ children, ...script }) => ({\n tag: 'script',\n attrs: {\n ...script,\n nonce,\n },\n children,\n })),\n )\n\n const serverBufferedScript: RouterManagedTag | undefined = router.serverSsr\n ? router.serverSsr.takeBufferedScripts()\n : undefined\n\n const allScripts = Solid.createMemo(() => {\n const result = [...scripts(), ...assetScripts()] as Array<RouterManagedTag>\n\n if (serverBufferedScript) {\n result.unshift(serverBufferedScript)\n }\n\n return result\n })\n\n return (\n <NoHydration>\n <Solid.For each={allScripts()}>\n {(asset) => {\n const a = Solid.untrack(asset)\n return <Asset {...a} />\n }}\n </Solid.For>\n </NoHydration>\n )\n}\n"],"mappings":";;;;;;;AAMA,IAAaK,gBAAgB;CAC3B,MAAMC,SAASH,kBAAAA,WAAW;CAC1B,MAAMI,QAAQD,OAAOE,QAAQC,KAAKF;CAClC,MAAMG,gBAAgBT,SAAMU,iBACpBL,OAAOM,OAAOC,sBAAsBC,MAC3C;CACD,MAAMC,eAAed,SAAMU,iBAAiB;EAC1C,MAAMI,eAAwC,EAAE;EAChD,MAAME,WAAWX,OAAOG,KAAKQ;AAE7B,MAAI,CAACA,SACH,QAAO,EAAE;AAGXP,iBAAe,CACZQ,KAAKC,UAAUb,OAAOc,gBAAgBD,MAAME,SAAU,CACtDC,SAASC,UACRN,SAASO,OAAOD,MAAME,KAAKC,QACvBC,QAAQC,MAAMA,EAAEC,QAAQ,SAAS,CAClCP,SAASQ,UAAU;AAClBf,gBAAagB,KAAK;IAChBF,KAAK;IACLG,OAAO;KAAE,GAAGF,MAAME;KAAOzB;KAAO;IAChC0B,UAAUH,MAAMG;IACjB,CAAQ;IAEf,CAAC;AAEH,SAAOlB;GACP;CAEF,MAAMmB,UAAUjC,SAAMU,iBAElBD,eAAe,CACZQ,KAAKC,UAAUA,MAAMe,QAAS,CAC9BC,KAAK,EAAE,CACPR,OAAOS,QAAQ,CAClBlB,KAAK,EAAEe,UAAU,GAAGI,cAAc;EAClCR,KAAK;EACLG,OAAO;GACL,GAAGK;GACH9B;GACD;EACD0B;EACD,EACH,CAAC;CAED,MAAMK,uBAAqDhC,OAAOiC,YAC9DjC,OAAOiC,UAAUC,qBAAqB,GACtCC,KAAAA;CAEJ,MAAMC,aAAazC,SAAMU,iBAAiB;EACxC,MAAMgC,SAAS,CAAC,GAAGT,SAAS,EAAE,GAAGnB,cAAc,CAAC;AAEhD,MAAIuB,qBACFK,QAAOC,QAAQN,qBAAqB;AAGtC,SAAOK;GACP;AAEF,SAAA,GAAA,aAAA,iBACG3C,aAAAA,aAAW,EAAA,IAAAiC,WAAA;AAAA,UAAA,GAAA,aAAA,iBACThC,SAAM6C,KAAG;GAAA,IAACC,OAAI;AAAA,WAAEL,YAAY;;GAAAT,WACzBH,UAAU;AAEV,YAAA,GAAA,aAAA,iBAAQ5B,cAAAA,OADED,SAAMgD,QAAQnB,MAAM,CACX;;GACpB,CAAA;IAAA,CAAA"}