@tanstack/solid-router 1.133.20 → 1.133.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/Asset.cjs +8 -12
- package/dist/cjs/Asset.cjs.map +1 -1
- package/dist/cjs/HeadContent.cjs +6 -1
- package/dist/cjs/HeadContent.cjs.map +1 -1
- package/dist/esm/Asset.js +9 -13
- package/dist/esm/Asset.js.map +1 -1
- package/dist/esm/HeadContent.js +7 -1
- package/dist/esm/HeadContent.js.map +1 -1
- package/dist/source/Asset.jsx +2 -2
- package/dist/source/Asset.jsx.map +1 -1
- package/dist/source/HeadContent.jsx +2 -1
- package/dist/source/HeadContent.jsx.map +1 -1
- package/package.json +4 -4
- package/src/Asset.tsx +2 -2
- package/src/HeadContent.tsx +2 -3
package/dist/cjs/Asset.cjs
CHANGED
|
@@ -4,7 +4,7 @@ const Solid = require("solid-js/web");
|
|
|
4
4
|
const meta = require("@solidjs/meta");
|
|
5
5
|
const Solid$1 = require("solid-js");
|
|
6
6
|
const useRouter = require("./useRouter.cjs");
|
|
7
|
-
var _tmpl$ = /* @__PURE__ */ Solid.template(`<
|
|
7
|
+
var _tmpl$ = /* @__PURE__ */ Solid.template(`<script>`);
|
|
8
8
|
function Asset({
|
|
9
9
|
tag,
|
|
10
10
|
attrs,
|
|
@@ -18,11 +18,7 @@ function Asset({
|
|
|
18
18
|
case "meta":
|
|
19
19
|
return Solid.createComponent(meta.Meta, attrs);
|
|
20
20
|
case "link":
|
|
21
|
-
return (
|
|
22
|
-
var _el$ = _tmpl$();
|
|
23
|
-
Solid.spread(_el$, attrs, false, false);
|
|
24
|
-
return _el$;
|
|
25
|
-
})();
|
|
21
|
+
return Solid.createComponent(meta.Link, attrs);
|
|
26
22
|
case "style":
|
|
27
23
|
return Solid.createComponent(meta.Style, Solid.mergeProps(attrs, {
|
|
28
24
|
innerHTML: children
|
|
@@ -102,18 +98,18 @@ function Script({
|
|
|
102
98
|
}
|
|
103
99
|
if (attrs?.src && typeof attrs.src === "string") {
|
|
104
100
|
return (() => {
|
|
105
|
-
var _el$
|
|
106
|
-
Solid.spread(_el
|
|
107
|
-
return _el
|
|
101
|
+
var _el$ = _tmpl$();
|
|
102
|
+
Solid.spread(_el$, attrs, false, false);
|
|
103
|
+
return _el$;
|
|
108
104
|
})();
|
|
109
105
|
}
|
|
110
106
|
if (typeof children === "string") {
|
|
111
107
|
return (() => {
|
|
112
|
-
var _el$
|
|
113
|
-
Solid.spread(_el$
|
|
108
|
+
var _el$2 = _tmpl$();
|
|
109
|
+
Solid.spread(_el$2, Solid.mergeProps(attrs, {
|
|
114
110
|
"innerHTML": children
|
|
115
111
|
}), false, false);
|
|
116
|
-
return _el$
|
|
112
|
+
return _el$2;
|
|
117
113
|
})();
|
|
118
114
|
}
|
|
119
115
|
return null;
|
package/dist/cjs/Asset.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Asset.cjs","sources":["../../src/Asset.tsx"],"sourcesContent":["import { Meta, Style, Title } from '@solidjs/meta'\nimport { onCleanup, onMount } from 'solid-js'\nimport { useRouter } from './useRouter'\nimport type { RouterManagedTag } from '@tanstack/router-core'\nimport type { JSX } from 'solid-js'\n\nexport function Asset({\n tag,\n attrs,\n children,\n}: RouterManagedTag): JSX.Element | null {\n switch (tag) {\n case 'title':\n return <Title {...attrs}>{children}</Title>\n case 'meta':\n return <Meta {...attrs} />\n case 'link':\n return <
|
|
1
|
+
{"version":3,"file":"Asset.cjs","sources":["../../src/Asset.tsx"],"sourcesContent":["import { Link, Meta, Style, Title } from '@solidjs/meta'\nimport { onCleanup, onMount } from 'solid-js'\nimport { useRouter } from './useRouter'\nimport type { RouterManagedTag } from '@tanstack/router-core'\nimport type { JSX } from 'solid-js'\n\nexport function Asset({\n tag,\n attrs,\n children,\n}: RouterManagedTag): JSX.Element | null {\n switch (tag) {\n case 'title':\n return <Title {...attrs}>{children}</Title>\n case 'meta':\n return <Meta {...attrs} />\n case 'link':\n return <Link {...attrs} />\n case 'style':\n return <Style {...attrs} innerHTML={children} />\n case 'script':\n return <Script attrs={attrs}>{children}</Script>\n default:\n return null\n }\n}\n\ninterface ScriptAttrs {\n [key: string]: string | boolean | undefined\n src?: string\n}\n\nfunction Script({\n attrs,\n children,\n}: {\n attrs?: ScriptAttrs\n children?: string\n}): JSX.Element | null {\n const router = useRouter()\n\n onMount(() => {\n if (attrs?.src) {\n const normSrc = (() => {\n try {\n const base = document.baseURI || window.location.href\n return new URL(attrs.src, base).href\n } catch {\n return attrs.src\n }\n })()\n const existingScript = Array.from(\n document.querySelectorAll('script[src]'),\n ).find((el) => (el as HTMLScriptElement).src === normSrc)\n\n if (existingScript) {\n return\n }\n\n const script = document.createElement('script')\n\n for (const [key, value] of Object.entries(attrs)) {\n if (value !== undefined && value !== false) {\n script.setAttribute(\n key,\n typeof value === 'boolean' ? '' : String(value),\n )\n }\n }\n\n document.head.appendChild(script)\n\n onCleanup(() => {\n if (script.parentNode) {\n script.parentNode.removeChild(script)\n }\n })\n }\n\n if (typeof children === 'string') {\n const typeAttr =\n typeof attrs?.type === 'string' ? attrs.type : 'text/javascript'\n const nonceAttr =\n typeof attrs?.nonce === 'string' ? attrs.nonce : undefined\n const existingScript = Array.from(\n document.querySelectorAll('script:not([src])'),\n ).find((el) => {\n if (!(el instanceof HTMLScriptElement)) return false\n const sType = el.getAttribute('type') ?? 'text/javascript'\n const sNonce = el.getAttribute('nonce') ?? undefined\n return (\n el.textContent === children &&\n sType === typeAttr &&\n sNonce === nonceAttr\n )\n })\n\n if (existingScript) {\n return\n }\n\n const script = document.createElement('script')\n script.textContent = children\n\n if (attrs) {\n for (const [key, value] of Object.entries(attrs)) {\n if (value !== undefined && value !== false) {\n script.setAttribute(\n key,\n typeof value === 'boolean' ? '' : String(value),\n )\n }\n }\n }\n\n document.head.appendChild(script)\n\n onCleanup(() => {\n if (script.parentNode) {\n script.parentNode.removeChild(script)\n }\n })\n }\n })\n\n if (router && !router.isServer) {\n return null\n }\n\n if (attrs?.src && typeof attrs.src === 'string') {\n return <script {...attrs} />\n }\n\n if (typeof children === 'string') {\n return <script {...attrs} innerHTML={children} />\n }\n\n return null\n}\n"],"names":["Asset","tag","attrs","children","_$createComponent","Title","_$mergeProps","Meta","Link","Style","innerHTML","Script","router","useRouter","onMount","src","normSrc","base","document","baseURI","window","location","href","URL","existingScript","Array","from","querySelectorAll","find","el","script","createElement","key","value","Object","entries","undefined","setAttribute","String","head","appendChild","onCleanup","parentNode","removeChild","typeAttr","type","nonceAttr","nonce","HTMLScriptElement","sType","getAttribute","sNonce","textContent","isServer","_el$","_tmpl$","_$spread","_el$2"],"mappings":";;;;;;;AAMO,SAASA,MAAM;AAAA,EACpBC;AAAAA,EACAC;AAAAA,EACAC;AACgB,GAAuB;AACvC,UAAQF,KAAAA;AAAAA,IACN,KAAK;AACH,aAAAG,sBAAQC,KAAAA,OAAKC,MAAAA,WAAKJ,OAAK;AAAA,QAAAC;AAAAA,MAAAA,CAAW,CAAA;AAAA,IACpC,KAAK;AACH,aAAAC,MAAAA,gBAAQG,KAAAA,MAASL,KAAK;AAAA,IACxB,KAAK;AACH,aAAAE,MAAAA,gBAAQI,KAAAA,MAASN,KAAK;AAAA,IACxB,KAAK;AACH,aAAAE,sBAAQK,KAAAA,OAAKH,MAAAA,WAAKJ,OAAK;AAAA,QAAEQ,WAAWP;AAAAA,MAAAA,CAAQ,CAAA;AAAA,IAC9C,KAAK;AACH,aAAAC,MAAAA,gBAAQO,QAAM;AAAA,QAACT;AAAAA,QAAYC;AAAAA,MAAAA,CAAW;AAAA,IACxC;AACE,aAAO;AAAA,EAAA;AAEb;AAOA,SAASQ,OAAO;AAAA,EACdT;AAAAA,EACAC;AAIF,GAAuB;AACrB,QAAMS,SAASC,UAAAA,UAAAA;AAEfC,UAAAA,QAAQ,MAAM;AACZ,QAAIZ,OAAOa,KAAK;AACd,YAAMC,WAAW,MAAM;AACrB,YAAI;AACF,gBAAMC,OAAOC,SAASC,WAAWC,OAAOC,SAASC;AACjD,iBAAO,IAAIC,IAAIrB,MAAMa,KAAKE,IAAI,EAAEK;AAAAA,QAClC,QAAQ;AACN,iBAAOpB,MAAMa;AAAAA,QACf;AAAA,MACF,GAAA;AACA,YAAMS,iBAAiBC,MAAMC,KAC3BR,SAASS,iBAAiB,aAAa,CACzC,EAAEC,KAAMC,CAAAA,OAAQA,GAAyBd,QAAQC,OAAO;AAExD,UAAIQ,gBAAgB;AAClB;AAAA,MACF;AAEA,YAAMM,SAASZ,SAASa,cAAc,QAAQ;AAE9C,iBAAW,CAACC,KAAKC,KAAK,KAAKC,OAAOC,QAAQjC,KAAK,GAAG;AAChD,YAAI+B,UAAUG,UAAaH,UAAU,OAAO;AAC1CH,iBAAOO,aACLL,KACA,OAAOC,UAAU,YAAY,KAAKK,OAAOL,KAAK,CAChD;AAAA,QACF;AAAA,MACF;AAEAf,eAASqB,KAAKC,YAAYV,MAAM;AAEhCW,cAAAA,UAAU,MAAM;AACd,YAAIX,OAAOY,YAAY;AACrBZ,iBAAOY,WAAWC,YAAYb,MAAM;AAAA,QACtC;AAAA,MACF,CAAC;AAAA,IACH;AAEA,QAAI,OAAO3B,aAAa,UAAU;AAChC,YAAMyC,WACJ,OAAO1C,OAAO2C,SAAS,WAAW3C,MAAM2C,OAAO;AACjD,YAAMC,YACJ,OAAO5C,OAAO6C,UAAU,WAAW7C,MAAM6C,QAAQX;AACnD,YAAMZ,iBAAiBC,MAAMC,KAC3BR,SAASS,iBAAiB,mBAAmB,CAC/C,EAAEC,KAAMC,CAAAA,OAAO;AACb,YAAI,EAAEA,cAAcmB,mBAAoB,QAAO;AAC/C,cAAMC,QAAQpB,GAAGqB,aAAa,MAAM,KAAK;AACzC,cAAMC,SAAStB,GAAGqB,aAAa,OAAO,KAAKd;AAC3C,eACEP,GAAGuB,gBAAgBjD,YACnB8C,UAAUL,YACVO,WAAWL;AAAAA,MAEf,CAAC;AAED,UAAItB,gBAAgB;AAClB;AAAA,MACF;AAEA,YAAMM,SAASZ,SAASa,cAAc,QAAQ;AAC9CD,aAAOsB,cAAcjD;AAErB,UAAID,OAAO;AACT,mBAAW,CAAC8B,KAAKC,KAAK,KAAKC,OAAOC,QAAQjC,KAAK,GAAG;AAChD,cAAI+B,UAAUG,UAAaH,UAAU,OAAO;AAC1CH,mBAAOO,aACLL,KACA,OAAOC,UAAU,YAAY,KAAKK,OAAOL,KAAK,CAChD;AAAA,UACF;AAAA,QACF;AAAA,MACF;AAEAf,eAASqB,KAAKC,YAAYV,MAAM;AAEhCW,cAAAA,UAAU,MAAM;AACd,YAAIX,OAAOY,YAAY;AACrBZ,iBAAOY,WAAWC,YAAYb,MAAM;AAAA,QACtC;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF,CAAC;AAED,MAAIlB,UAAU,CAACA,OAAOyC,UAAU;AAC9B,WAAO;AAAA,EACT;AAEA,MAAInD,OAAOa,OAAO,OAAOb,MAAMa,QAAQ,UAAU;AAC/C,YAAA,MAAA;AAAA,UAAAuC,OAAAC,OAAAA;AAAAC,YAAAA,OAAAF,MAAmBpD,OAAK,OAAA,KAAA;AAAA,aAAAoD;AAAAA,IAAA,GAAA;AAAA,EAC1B;AAEA,MAAI,OAAOnD,aAAa,UAAU;AAChC,YAAA,MAAA;AAAA,UAAAsD,QAAAF,OAAAA;AAAAC,mBAAAC,OAAAnD,MAAAA,WAAmBJ,OAAK;AAAA,QAAA,aAAaC;AAAAA,MAAAA,CAAQ,GAAA,OAAA,KAAA;AAAA,aAAAsD;AAAAA,IAAA,GAAA;AAAA,EAC/C;AAEA,SAAO;AACT;;"}
|
package/dist/cjs/HeadContent.cjs
CHANGED
|
@@ -152,7 +152,12 @@ function HeadContent() {
|
|
|
152
152
|
const tags = useTags();
|
|
153
153
|
return Solid.createComponent(meta.MetaProvider, {
|
|
154
154
|
get children() {
|
|
155
|
-
return
|
|
155
|
+
return Solid.createComponent(Solid$1.For, {
|
|
156
|
+
get each() {
|
|
157
|
+
return tags();
|
|
158
|
+
},
|
|
159
|
+
children: (tag) => Solid.createComponent(Asset.Asset, tag)
|
|
160
|
+
});
|
|
156
161
|
}
|
|
157
162
|
});
|
|
158
163
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HeadContent.cjs","sources":["../../src/HeadContent.tsx"],"sourcesContent":["import * as Solid from 'solid-js'\nimport { MetaProvider } from '@solidjs/meta'\nimport { Asset } from './Asset'\nimport { useRouter } from './useRouter'\nimport { useRouterState } from './useRouterState'\nimport type { RouterManagedTag } from '@tanstack/router-core'\n\nexport const useTags = () => {\n const router = useRouter()\n const nonce = router.options.ssr?.nonce\n const routeMeta = useRouterState({\n select: (state) => {\n return state.matches.map((match) => match.meta!).filter(Boolean)\n },\n })\n\n const meta: Solid.Accessor<Array<RouterManagedTag>> = Solid.createMemo(() => {\n const resultMeta: Array<RouterManagedTag> = []\n const metaByAttribute: Record<string, true> = {}\n let title: RouterManagedTag | undefined\n const routeMetasArray = routeMeta()\n for (let i = routeMetasArray.length - 1; i >= 0; i--) {\n const metas = routeMetasArray[i]!\n for (let j = metas.length - 1; j >= 0; j--) {\n const m = metas[j]\n if (!m) continue\n\n if (m.title) {\n if (!title) {\n title = {\n tag: 'title',\n children: m.title,\n }\n }\n } else {\n const attribute = m.name ?? m.property\n if (attribute) {\n if (metaByAttribute[attribute]) {\n continue\n } else {\n metaByAttribute[attribute] = true\n }\n }\n\n resultMeta.push({\n tag: 'meta',\n attrs: {\n ...m,\n nonce,\n },\n })\n }\n }\n }\n\n if (title) {\n resultMeta.push(title)\n }\n\n if (router.options.ssr?.nonce) {\n resultMeta.push({\n tag: 'meta',\n attrs: {\n property: 'csp-nonce',\n content: router.options.ssr.nonce,\n },\n })\n }\n resultMeta.reverse()\n\n return resultMeta\n })\n\n const links = useRouterState({\n select: (state) => {\n const constructed = state.matches\n .map((match) => match.links!)\n .filter(Boolean)\n .flat(1)\n .map((link) => ({\n tag: 'link',\n attrs: {\n ...link,\n nonce,\n },\n })) satisfies Array<RouterManagedTag>\n\n const manifest = router.ssr?.manifest\n\n // These are the assets extracted from the ViteManifest\n // using the `startManifestPlugin`\n const assets = state.matches\n .map((match) => manifest?.routes[match.routeId]?.assets ?? [])\n .filter(Boolean)\n .flat(1)\n .filter((asset) => asset.tag === 'link')\n .map(\n (asset) =>\n ({\n tag: 'link',\n attrs: { ...asset.attrs, nonce },\n }) satisfies RouterManagedTag,\n )\n\n return [...constructed, ...assets]\n },\n })\n\n const preloadMeta = useRouterState({\n select: (state) => {\n const preloadMeta: Array<RouterManagedTag> = []\n\n state.matches\n .map((match) => router.looseRoutesById[match.routeId]!)\n .forEach((route) =>\n router.ssr?.manifest?.routes[route.id]?.preloads\n ?.filter(Boolean)\n .forEach((preload) => {\n preloadMeta.push({\n tag: 'link',\n attrs: {\n rel: 'modulepreload',\n href: preload,\n nonce,\n },\n })\n }),\n )\n\n return preloadMeta\n },\n })\n\n const styles = useRouterState({\n select: (state) =>\n (\n state.matches\n .map((match) => match.styles!)\n .flat(1)\n .filter(Boolean) as Array<RouterManagedTag>\n ).map(({ children, ...style }) => ({\n tag: 'style',\n attrs: {\n ...style,\n nonce,\n },\n children,\n })),\n })\n\n const headScripts = useRouterState({\n select: (state) =>\n (\n state.matches\n .map((match) => match.headScripts!)\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 return () =>\n uniqBy(\n [\n ...meta(),\n ...preloadMeta(),\n ...links(),\n ...styles(),\n ...headScripts(),\n ] as Array<RouterManagedTag>,\n (d) => {\n return JSON.stringify(d)\n },\n )\n}\n\n/**\n * @description The `HeadContent` component is used to render meta tags, links, and scripts for the current route.\n * When using full document hydration (hydrating from `<html>`), this component should be rendered in the `<body>`\n * to ensure it's part of the reactive tree and updates correctly during client-side navigation.\n * The component uses portals internally to render content into the `<head>` element.\n */\nexport function HeadContent() {\n const tags = useTags()\n\n return (\n <MetaProvider>\n {tags().map((tag) => (\n <Asset {...tag} />\n ))}\n </MetaProvider>\n )\n}\n\nfunction uniqBy<T>(arr: Array<T>, fn: (item: T) => string) {\n const seen = new Set<string>()\n return arr.filter((item) => {\n const key = fn(item)\n if (seen.has(key)) {\n return false\n }\n seen.add(key)\n return true\n })\n}\n"],"names":["useTags","router","useRouter","nonce","options","ssr","routeMeta","useRouterState","select","state","matches","map","match","meta","filter","Boolean","Solid","createMemo","resultMeta","metaByAttribute","title","routeMetasArray","i","length","metas","j","m","tag","children","attribute","name","property","push","attrs","content","reverse","links","constructed","flat","link","manifest","assets","routes","routeId","asset","preloadMeta","looseRoutesById","forEach","route","id","preloads","preload","rel","href","styles","style","headScripts","script","uniqBy","d","JSON","stringify","HeadContent","tags","_$createComponent","MetaProvider","Asset","arr","fn","seen","Set","item","key","has","add"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"HeadContent.cjs","sources":["../../src/HeadContent.tsx"],"sourcesContent":["import * as Solid from 'solid-js'\nimport { MetaProvider } from '@solidjs/meta'\nimport { For } from 'solid-js'\nimport { Asset } from './Asset'\nimport { useRouter } from './useRouter'\nimport { useRouterState } from './useRouterState'\nimport type { RouterManagedTag } from '@tanstack/router-core'\n\nexport const useTags = () => {\n const router = useRouter()\n const nonce = router.options.ssr?.nonce\n const routeMeta = useRouterState({\n select: (state) => {\n return state.matches.map((match) => match.meta!).filter(Boolean)\n },\n })\n\n const meta: Solid.Accessor<Array<RouterManagedTag>> = Solid.createMemo(() => {\n const resultMeta: Array<RouterManagedTag> = []\n const metaByAttribute: Record<string, true> = {}\n let title: RouterManagedTag | undefined\n const routeMetasArray = routeMeta()\n for (let i = routeMetasArray.length - 1; i >= 0; i--) {\n const metas = routeMetasArray[i]!\n for (let j = metas.length - 1; j >= 0; j--) {\n const m = metas[j]\n if (!m) continue\n\n if (m.title) {\n if (!title) {\n title = {\n tag: 'title',\n children: m.title,\n }\n }\n } else {\n const attribute = m.name ?? m.property\n if (attribute) {\n if (metaByAttribute[attribute]) {\n continue\n } else {\n metaByAttribute[attribute] = true\n }\n }\n\n resultMeta.push({\n tag: 'meta',\n attrs: {\n ...m,\n nonce,\n },\n })\n }\n }\n }\n\n if (title) {\n resultMeta.push(title)\n }\n\n if (router.options.ssr?.nonce) {\n resultMeta.push({\n tag: 'meta',\n attrs: {\n property: 'csp-nonce',\n content: router.options.ssr.nonce,\n },\n })\n }\n resultMeta.reverse()\n\n return resultMeta\n })\n\n const links = useRouterState({\n select: (state) => {\n const constructed = state.matches\n .map((match) => match.links!)\n .filter(Boolean)\n .flat(1)\n .map((link) => ({\n tag: 'link',\n attrs: {\n ...link,\n nonce,\n },\n })) satisfies Array<RouterManagedTag>\n\n const manifest = router.ssr?.manifest\n\n // These are the assets extracted from the ViteManifest\n // using the `startManifestPlugin`\n const assets = state.matches\n .map((match) => manifest?.routes[match.routeId]?.assets ?? [])\n .filter(Boolean)\n .flat(1)\n .filter((asset) => asset.tag === 'link')\n .map(\n (asset) =>\n ({\n tag: 'link',\n attrs: { ...asset.attrs, nonce },\n }) satisfies RouterManagedTag,\n )\n\n return [...constructed, ...assets]\n },\n })\n\n const preloadMeta = useRouterState({\n select: (state) => {\n const preloadMeta: Array<RouterManagedTag> = []\n\n state.matches\n .map((match) => router.looseRoutesById[match.routeId]!)\n .forEach((route) =>\n router.ssr?.manifest?.routes[route.id]?.preloads\n ?.filter(Boolean)\n .forEach((preload) => {\n preloadMeta.push({\n tag: 'link',\n attrs: {\n rel: 'modulepreload',\n href: preload,\n nonce,\n },\n })\n }),\n )\n\n return preloadMeta\n },\n })\n\n const styles = useRouterState({\n select: (state) =>\n (\n state.matches\n .map((match) => match.styles!)\n .flat(1)\n .filter(Boolean) as Array<RouterManagedTag>\n ).map(({ children, ...style }) => ({\n tag: 'style',\n attrs: {\n ...style,\n nonce,\n },\n children,\n })),\n })\n\n const headScripts = useRouterState({\n select: (state) =>\n (\n state.matches\n .map((match) => match.headScripts!)\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 return () =>\n uniqBy(\n [\n ...meta(),\n ...preloadMeta(),\n ...links(),\n ...styles(),\n ...headScripts(),\n ] as Array<RouterManagedTag>,\n (d) => {\n return JSON.stringify(d)\n },\n )\n}\n\n/**\n * @description The `HeadContent` component is used to render meta tags, links, and scripts for the current route.\n * When using full document hydration (hydrating from `<html>`), this component should be rendered in the `<body>`\n * to ensure it's part of the reactive tree and updates correctly during client-side navigation.\n * The component uses portals internally to render content into the `<head>` element.\n */\nexport function HeadContent() {\n const tags = useTags()\n\n return (\n <MetaProvider>\n <For each={tags()}>{(tag) => <Asset {...tag} />}</For>\n </MetaProvider>\n )\n}\n\nfunction uniqBy<T>(arr: Array<T>, fn: (item: T) => string) {\n const seen = new Set<string>()\n return arr.filter((item) => {\n const key = fn(item)\n if (seen.has(key)) {\n return false\n }\n seen.add(key)\n return true\n })\n}\n"],"names":["useTags","router","useRouter","nonce","options","ssr","routeMeta","useRouterState","select","state","matches","map","match","meta","filter","Boolean","Solid","createMemo","resultMeta","metaByAttribute","title","routeMetasArray","i","length","metas","j","m","tag","children","attribute","name","property","push","attrs","content","reverse","links","constructed","flat","link","manifest","assets","routes","routeId","asset","preloadMeta","looseRoutesById","forEach","route","id","preloads","preload","rel","href","styles","style","headScripts","script","uniqBy","d","JSON","stringify","HeadContent","tags","_$createComponent","MetaProvider","For","each","Asset","arr","fn","seen","Set","item","key","has","add"],"mappings":"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"}
|
package/dist/esm/Asset.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { createComponent, mergeProps, template, spread } from "solid-js/web";
|
|
2
|
-
import { Style, Meta, Title } from "@solidjs/meta";
|
|
2
|
+
import { Style, Link, Meta, Title } from "@solidjs/meta";
|
|
3
3
|
import { onMount, onCleanup } from "solid-js";
|
|
4
4
|
import { useRouter } from "./useRouter.js";
|
|
5
|
-
var _tmpl$ = /* @__PURE__ */ template(`<
|
|
5
|
+
var _tmpl$ = /* @__PURE__ */ template(`<script>`);
|
|
6
6
|
function Asset({
|
|
7
7
|
tag,
|
|
8
8
|
attrs,
|
|
@@ -16,11 +16,7 @@ function Asset({
|
|
|
16
16
|
case "meta":
|
|
17
17
|
return createComponent(Meta, attrs);
|
|
18
18
|
case "link":
|
|
19
|
-
return (
|
|
20
|
-
var _el$ = _tmpl$();
|
|
21
|
-
spread(_el$, attrs, false, false);
|
|
22
|
-
return _el$;
|
|
23
|
-
})();
|
|
19
|
+
return createComponent(Link, attrs);
|
|
24
20
|
case "style":
|
|
25
21
|
return createComponent(Style, mergeProps(attrs, {
|
|
26
22
|
innerHTML: children
|
|
@@ -100,18 +96,18 @@ function Script({
|
|
|
100
96
|
}
|
|
101
97
|
if (attrs?.src && typeof attrs.src === "string") {
|
|
102
98
|
return (() => {
|
|
103
|
-
var _el$
|
|
104
|
-
spread(_el
|
|
105
|
-
return _el
|
|
99
|
+
var _el$ = _tmpl$();
|
|
100
|
+
spread(_el$, attrs, false, false);
|
|
101
|
+
return _el$;
|
|
106
102
|
})();
|
|
107
103
|
}
|
|
108
104
|
if (typeof children === "string") {
|
|
109
105
|
return (() => {
|
|
110
|
-
var _el$
|
|
111
|
-
spread(_el$
|
|
106
|
+
var _el$2 = _tmpl$();
|
|
107
|
+
spread(_el$2, mergeProps(attrs, {
|
|
112
108
|
"innerHTML": children
|
|
113
109
|
}), false, false);
|
|
114
|
-
return _el$
|
|
110
|
+
return _el$2;
|
|
115
111
|
})();
|
|
116
112
|
}
|
|
117
113
|
return null;
|
package/dist/esm/Asset.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Asset.js","sources":["../../src/Asset.tsx"],"sourcesContent":["import { Meta, Style, Title } from '@solidjs/meta'\nimport { onCleanup, onMount } from 'solid-js'\nimport { useRouter } from './useRouter'\nimport type { RouterManagedTag } from '@tanstack/router-core'\nimport type { JSX } from 'solid-js'\n\nexport function Asset({\n tag,\n attrs,\n children,\n}: RouterManagedTag): JSX.Element | null {\n switch (tag) {\n case 'title':\n return <Title {...attrs}>{children}</Title>\n case 'meta':\n return <Meta {...attrs} />\n case 'link':\n return <
|
|
1
|
+
{"version":3,"file":"Asset.js","sources":["../../src/Asset.tsx"],"sourcesContent":["import { Link, Meta, Style, Title } from '@solidjs/meta'\nimport { onCleanup, onMount } from 'solid-js'\nimport { useRouter } from './useRouter'\nimport type { RouterManagedTag } from '@tanstack/router-core'\nimport type { JSX } from 'solid-js'\n\nexport function Asset({\n tag,\n attrs,\n children,\n}: RouterManagedTag): JSX.Element | null {\n switch (tag) {\n case 'title':\n return <Title {...attrs}>{children}</Title>\n case 'meta':\n return <Meta {...attrs} />\n case 'link':\n return <Link {...attrs} />\n case 'style':\n return <Style {...attrs} innerHTML={children} />\n case 'script':\n return <Script attrs={attrs}>{children}</Script>\n default:\n return null\n }\n}\n\ninterface ScriptAttrs {\n [key: string]: string | boolean | undefined\n src?: string\n}\n\nfunction Script({\n attrs,\n children,\n}: {\n attrs?: ScriptAttrs\n children?: string\n}): JSX.Element | null {\n const router = useRouter()\n\n onMount(() => {\n if (attrs?.src) {\n const normSrc = (() => {\n try {\n const base = document.baseURI || window.location.href\n return new URL(attrs.src, base).href\n } catch {\n return attrs.src\n }\n })()\n const existingScript = Array.from(\n document.querySelectorAll('script[src]'),\n ).find((el) => (el as HTMLScriptElement).src === normSrc)\n\n if (existingScript) {\n return\n }\n\n const script = document.createElement('script')\n\n for (const [key, value] of Object.entries(attrs)) {\n if (value !== undefined && value !== false) {\n script.setAttribute(\n key,\n typeof value === 'boolean' ? '' : String(value),\n )\n }\n }\n\n document.head.appendChild(script)\n\n onCleanup(() => {\n if (script.parentNode) {\n script.parentNode.removeChild(script)\n }\n })\n }\n\n if (typeof children === 'string') {\n const typeAttr =\n typeof attrs?.type === 'string' ? attrs.type : 'text/javascript'\n const nonceAttr =\n typeof attrs?.nonce === 'string' ? attrs.nonce : undefined\n const existingScript = Array.from(\n document.querySelectorAll('script:not([src])'),\n ).find((el) => {\n if (!(el instanceof HTMLScriptElement)) return false\n const sType = el.getAttribute('type') ?? 'text/javascript'\n const sNonce = el.getAttribute('nonce') ?? undefined\n return (\n el.textContent === children &&\n sType === typeAttr &&\n sNonce === nonceAttr\n )\n })\n\n if (existingScript) {\n return\n }\n\n const script = document.createElement('script')\n script.textContent = children\n\n if (attrs) {\n for (const [key, value] of Object.entries(attrs)) {\n if (value !== undefined && value !== false) {\n script.setAttribute(\n key,\n typeof value === 'boolean' ? '' : String(value),\n )\n }\n }\n }\n\n document.head.appendChild(script)\n\n onCleanup(() => {\n if (script.parentNode) {\n script.parentNode.removeChild(script)\n }\n })\n }\n })\n\n if (router && !router.isServer) {\n return null\n }\n\n if (attrs?.src && typeof attrs.src === 'string') {\n return <script {...attrs} />\n }\n\n if (typeof children === 'string') {\n return <script {...attrs} innerHTML={children} />\n }\n\n return null\n}\n"],"names":["Asset","tag","attrs","children","_$createComponent","Title","_$mergeProps","Meta","Link","Style","innerHTML","Script","router","useRouter","onMount","src","normSrc","base","document","baseURI","window","location","href","URL","existingScript","Array","from","querySelectorAll","find","el","script","createElement","key","value","Object","entries","undefined","setAttribute","String","head","appendChild","onCleanup","parentNode","removeChild","typeAttr","type","nonceAttr","nonce","HTMLScriptElement","sType","getAttribute","sNonce","textContent","isServer","_el$","_tmpl$","_$spread","_el$2"],"mappings":"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"}
|
package/dist/esm/HeadContent.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { createComponent } from "solid-js/web";
|
|
2
2
|
import * as Solid from "solid-js";
|
|
3
|
+
import { For } from "solid-js";
|
|
3
4
|
import { MetaProvider } from "@solidjs/meta";
|
|
4
5
|
import { Asset } from "./Asset.js";
|
|
5
6
|
import { useRouter } from "./useRouter.js";
|
|
@@ -133,7 +134,12 @@ function HeadContent() {
|
|
|
133
134
|
const tags = useTags();
|
|
134
135
|
return createComponent(MetaProvider, {
|
|
135
136
|
get children() {
|
|
136
|
-
return
|
|
137
|
+
return createComponent(For, {
|
|
138
|
+
get each() {
|
|
139
|
+
return tags();
|
|
140
|
+
},
|
|
141
|
+
children: (tag) => createComponent(Asset, tag)
|
|
142
|
+
});
|
|
137
143
|
}
|
|
138
144
|
});
|
|
139
145
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HeadContent.js","sources":["../../src/HeadContent.tsx"],"sourcesContent":["import * as Solid from 'solid-js'\nimport { MetaProvider } from '@solidjs/meta'\nimport { Asset } from './Asset'\nimport { useRouter } from './useRouter'\nimport { useRouterState } from './useRouterState'\nimport type { RouterManagedTag } from '@tanstack/router-core'\n\nexport const useTags = () => {\n const router = useRouter()\n const nonce = router.options.ssr?.nonce\n const routeMeta = useRouterState({\n select: (state) => {\n return state.matches.map((match) => match.meta!).filter(Boolean)\n },\n })\n\n const meta: Solid.Accessor<Array<RouterManagedTag>> = Solid.createMemo(() => {\n const resultMeta: Array<RouterManagedTag> = []\n const metaByAttribute: Record<string, true> = {}\n let title: RouterManagedTag | undefined\n const routeMetasArray = routeMeta()\n for (let i = routeMetasArray.length - 1; i >= 0; i--) {\n const metas = routeMetasArray[i]!\n for (let j = metas.length - 1; j >= 0; j--) {\n const m = metas[j]\n if (!m) continue\n\n if (m.title) {\n if (!title) {\n title = {\n tag: 'title',\n children: m.title,\n }\n }\n } else {\n const attribute = m.name ?? m.property\n if (attribute) {\n if (metaByAttribute[attribute]) {\n continue\n } else {\n metaByAttribute[attribute] = true\n }\n }\n\n resultMeta.push({\n tag: 'meta',\n attrs: {\n ...m,\n nonce,\n },\n })\n }\n }\n }\n\n if (title) {\n resultMeta.push(title)\n }\n\n if (router.options.ssr?.nonce) {\n resultMeta.push({\n tag: 'meta',\n attrs: {\n property: 'csp-nonce',\n content: router.options.ssr.nonce,\n },\n })\n }\n resultMeta.reverse()\n\n return resultMeta\n })\n\n const links = useRouterState({\n select: (state) => {\n const constructed = state.matches\n .map((match) => match.links!)\n .filter(Boolean)\n .flat(1)\n .map((link) => ({\n tag: 'link',\n attrs: {\n ...link,\n nonce,\n },\n })) satisfies Array<RouterManagedTag>\n\n const manifest = router.ssr?.manifest\n\n // These are the assets extracted from the ViteManifest\n // using the `startManifestPlugin`\n const assets = state.matches\n .map((match) => manifest?.routes[match.routeId]?.assets ?? [])\n .filter(Boolean)\n .flat(1)\n .filter((asset) => asset.tag === 'link')\n .map(\n (asset) =>\n ({\n tag: 'link',\n attrs: { ...asset.attrs, nonce },\n }) satisfies RouterManagedTag,\n )\n\n return [...constructed, ...assets]\n },\n })\n\n const preloadMeta = useRouterState({\n select: (state) => {\n const preloadMeta: Array<RouterManagedTag> = []\n\n state.matches\n .map((match) => router.looseRoutesById[match.routeId]!)\n .forEach((route) =>\n router.ssr?.manifest?.routes[route.id]?.preloads\n ?.filter(Boolean)\n .forEach((preload) => {\n preloadMeta.push({\n tag: 'link',\n attrs: {\n rel: 'modulepreload',\n href: preload,\n nonce,\n },\n })\n }),\n )\n\n return preloadMeta\n },\n })\n\n const styles = useRouterState({\n select: (state) =>\n (\n state.matches\n .map((match) => match.styles!)\n .flat(1)\n .filter(Boolean) as Array<RouterManagedTag>\n ).map(({ children, ...style }) => ({\n tag: 'style',\n attrs: {\n ...style,\n nonce,\n },\n children,\n })),\n })\n\n const headScripts = useRouterState({\n select: (state) =>\n (\n state.matches\n .map((match) => match.headScripts!)\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 return () =>\n uniqBy(\n [\n ...meta(),\n ...preloadMeta(),\n ...links(),\n ...styles(),\n ...headScripts(),\n ] as Array<RouterManagedTag>,\n (d) => {\n return JSON.stringify(d)\n },\n )\n}\n\n/**\n * @description The `HeadContent` component is used to render meta tags, links, and scripts for the current route.\n * When using full document hydration (hydrating from `<html>`), this component should be rendered in the `<body>`\n * to ensure it's part of the reactive tree and updates correctly during client-side navigation.\n * The component uses portals internally to render content into the `<head>` element.\n */\nexport function HeadContent() {\n const tags = useTags()\n\n return (\n <MetaProvider>\n {tags()
|
|
1
|
+
{"version":3,"file":"HeadContent.js","sources":["../../src/HeadContent.tsx"],"sourcesContent":["import * as Solid from 'solid-js'\nimport { MetaProvider } from '@solidjs/meta'\nimport { For } from 'solid-js'\nimport { Asset } from './Asset'\nimport { useRouter } from './useRouter'\nimport { useRouterState } from './useRouterState'\nimport type { RouterManagedTag } from '@tanstack/router-core'\n\nexport const useTags = () => {\n const router = useRouter()\n const nonce = router.options.ssr?.nonce\n const routeMeta = useRouterState({\n select: (state) => {\n return state.matches.map((match) => match.meta!).filter(Boolean)\n },\n })\n\n const meta: Solid.Accessor<Array<RouterManagedTag>> = Solid.createMemo(() => {\n const resultMeta: Array<RouterManagedTag> = []\n const metaByAttribute: Record<string, true> = {}\n let title: RouterManagedTag | undefined\n const routeMetasArray = routeMeta()\n for (let i = routeMetasArray.length - 1; i >= 0; i--) {\n const metas = routeMetasArray[i]!\n for (let j = metas.length - 1; j >= 0; j--) {\n const m = metas[j]\n if (!m) continue\n\n if (m.title) {\n if (!title) {\n title = {\n tag: 'title',\n children: m.title,\n }\n }\n } else {\n const attribute = m.name ?? m.property\n if (attribute) {\n if (metaByAttribute[attribute]) {\n continue\n } else {\n metaByAttribute[attribute] = true\n }\n }\n\n resultMeta.push({\n tag: 'meta',\n attrs: {\n ...m,\n nonce,\n },\n })\n }\n }\n }\n\n if (title) {\n resultMeta.push(title)\n }\n\n if (router.options.ssr?.nonce) {\n resultMeta.push({\n tag: 'meta',\n attrs: {\n property: 'csp-nonce',\n content: router.options.ssr.nonce,\n },\n })\n }\n resultMeta.reverse()\n\n return resultMeta\n })\n\n const links = useRouterState({\n select: (state) => {\n const constructed = state.matches\n .map((match) => match.links!)\n .filter(Boolean)\n .flat(1)\n .map((link) => ({\n tag: 'link',\n attrs: {\n ...link,\n nonce,\n },\n })) satisfies Array<RouterManagedTag>\n\n const manifest = router.ssr?.manifest\n\n // These are the assets extracted from the ViteManifest\n // using the `startManifestPlugin`\n const assets = state.matches\n .map((match) => manifest?.routes[match.routeId]?.assets ?? [])\n .filter(Boolean)\n .flat(1)\n .filter((asset) => asset.tag === 'link')\n .map(\n (asset) =>\n ({\n tag: 'link',\n attrs: { ...asset.attrs, nonce },\n }) satisfies RouterManagedTag,\n )\n\n return [...constructed, ...assets]\n },\n })\n\n const preloadMeta = useRouterState({\n select: (state) => {\n const preloadMeta: Array<RouterManagedTag> = []\n\n state.matches\n .map((match) => router.looseRoutesById[match.routeId]!)\n .forEach((route) =>\n router.ssr?.manifest?.routes[route.id]?.preloads\n ?.filter(Boolean)\n .forEach((preload) => {\n preloadMeta.push({\n tag: 'link',\n attrs: {\n rel: 'modulepreload',\n href: preload,\n nonce,\n },\n })\n }),\n )\n\n return preloadMeta\n },\n })\n\n const styles = useRouterState({\n select: (state) =>\n (\n state.matches\n .map((match) => match.styles!)\n .flat(1)\n .filter(Boolean) as Array<RouterManagedTag>\n ).map(({ children, ...style }) => ({\n tag: 'style',\n attrs: {\n ...style,\n nonce,\n },\n children,\n })),\n })\n\n const headScripts = useRouterState({\n select: (state) =>\n (\n state.matches\n .map((match) => match.headScripts!)\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 return () =>\n uniqBy(\n [\n ...meta(),\n ...preloadMeta(),\n ...links(),\n ...styles(),\n ...headScripts(),\n ] as Array<RouterManagedTag>,\n (d) => {\n return JSON.stringify(d)\n },\n )\n}\n\n/**\n * @description The `HeadContent` component is used to render meta tags, links, and scripts for the current route.\n * When using full document hydration (hydrating from `<html>`), this component should be rendered in the `<body>`\n * to ensure it's part of the reactive tree and updates correctly during client-side navigation.\n * The component uses portals internally to render content into the `<head>` element.\n */\nexport function HeadContent() {\n const tags = useTags()\n\n return (\n <MetaProvider>\n <For each={tags()}>{(tag) => <Asset {...tag} />}</For>\n </MetaProvider>\n )\n}\n\nfunction uniqBy<T>(arr: Array<T>, fn: (item: T) => string) {\n const seen = new Set<string>()\n return arr.filter((item) => {\n const key = fn(item)\n if (seen.has(key)) {\n return false\n }\n seen.add(key)\n return true\n })\n}\n"],"names":["useTags","router","useRouter","nonce","options","ssr","routeMeta","useRouterState","select","state","matches","map","match","meta","filter","Boolean","Solid","createMemo","resultMeta","metaByAttribute","title","routeMetasArray","i","length","metas","j","m","tag","children","attribute","name","property","push","attrs","content","reverse","links","constructed","flat","link","manifest","assets","routes","routeId","asset","preloadMeta","looseRoutesById","forEach","route","id","preloads","preload","rel","href","styles","style","headScripts","script","uniqBy","d","JSON","stringify","HeadContent","tags","_$createComponent","MetaProvider","For","each","Asset","arr","fn","seen","Set","item","key","has","add"],"mappings":"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"}
|
package/dist/source/Asset.jsx
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Meta, Style, Title } from '@solidjs/meta';
|
|
1
|
+
import { Link, Meta, Style, Title } from '@solidjs/meta';
|
|
2
2
|
import { onCleanup, onMount } from 'solid-js';
|
|
3
3
|
import { useRouter } from './useRouter';
|
|
4
4
|
export function Asset({ tag, attrs, children, }) {
|
|
@@ -8,7 +8,7 @@ export function Asset({ tag, attrs, children, }) {
|
|
|
8
8
|
case 'meta':
|
|
9
9
|
return <Meta {...attrs}/>;
|
|
10
10
|
case 'link':
|
|
11
|
-
return <
|
|
11
|
+
return <Link {...attrs}/>;
|
|
12
12
|
case 'style':
|
|
13
13
|
return <Style {...attrs} innerHTML={children}/>;
|
|
14
14
|
case 'script':
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Asset.jsx","sourceRoot":"","sources":["../../src/Asset.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"Asset.jsx","sourceRoot":"","sources":["../../src/Asset.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as Solid from 'solid-js';
|
|
2
2
|
import { MetaProvider } from '@solidjs/meta';
|
|
3
|
+
import { For } from 'solid-js';
|
|
3
4
|
import { Asset } from './Asset';
|
|
4
5
|
import { useRouter } from './useRouter';
|
|
5
6
|
import { useRouterState } from './useRouterState';
|
|
@@ -158,7 +159,7 @@ export const useTags = () => {
|
|
|
158
159
|
export function HeadContent() {
|
|
159
160
|
const tags = useTags();
|
|
160
161
|
return (<MetaProvider>
|
|
161
|
-
{tags()
|
|
162
|
+
<For each={tags()}>{(tag) => <Asset {...tag}/>}</For>
|
|
162
163
|
</MetaProvider>);
|
|
163
164
|
}
|
|
164
165
|
function uniqBy(arr, fn) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HeadContent.jsx","sourceRoot":"","sources":["../../src/HeadContent.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"HeadContent.jsx","sourceRoot":"","sources":["../../src/HeadContent.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tanstack/solid-router",
|
|
3
|
-
"version": "1.133.
|
|
3
|
+
"version": "1.133.23",
|
|
4
4
|
"description": "Modern and scalable routing for Solid applications",
|
|
5
5
|
"author": "Tanner Linsley",
|
|
6
6
|
"license": "MIT",
|
|
@@ -88,8 +88,8 @@
|
|
|
88
88
|
"isbot": "^5.1.22",
|
|
89
89
|
"tiny-invariant": "^1.3.3",
|
|
90
90
|
"tiny-warning": "^1.0.3",
|
|
91
|
-
"@tanstack/
|
|
92
|
-
"@tanstack/
|
|
91
|
+
"@tanstack/router-core": "1.133.20",
|
|
92
|
+
"@tanstack/history": "1.133.19"
|
|
93
93
|
},
|
|
94
94
|
"devDependencies": {
|
|
95
95
|
"@solidjs/testing-library": "^0.8.10",
|
|
@@ -97,7 +97,7 @@
|
|
|
97
97
|
"combinate": "^1.1.11",
|
|
98
98
|
"eslint-plugin-solid": "^0.14.5",
|
|
99
99
|
"solid-js": "^1.9.5",
|
|
100
|
-
"vite-plugin-solid": "^2.11.
|
|
100
|
+
"vite-plugin-solid": "^2.11.10",
|
|
101
101
|
"zod": "^3.23.8"
|
|
102
102
|
},
|
|
103
103
|
"peerDependencies": {
|
package/src/Asset.tsx
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Meta, Style, Title } from '@solidjs/meta'
|
|
1
|
+
import { Link, Meta, Style, Title } from '@solidjs/meta'
|
|
2
2
|
import { onCleanup, onMount } from 'solid-js'
|
|
3
3
|
import { useRouter } from './useRouter'
|
|
4
4
|
import type { RouterManagedTag } from '@tanstack/router-core'
|
|
@@ -15,7 +15,7 @@ export function Asset({
|
|
|
15
15
|
case 'meta':
|
|
16
16
|
return <Meta {...attrs} />
|
|
17
17
|
case 'link':
|
|
18
|
-
return <
|
|
18
|
+
return <Link {...attrs} />
|
|
19
19
|
case 'style':
|
|
20
20
|
return <Style {...attrs} innerHTML={children} />
|
|
21
21
|
case 'script':
|
package/src/HeadContent.tsx
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import * as Solid from 'solid-js'
|
|
2
2
|
import { MetaProvider } from '@solidjs/meta'
|
|
3
|
+
import { For } from 'solid-js'
|
|
3
4
|
import { Asset } from './Asset'
|
|
4
5
|
import { useRouter } from './useRouter'
|
|
5
6
|
import { useRouterState } from './useRouterState'
|
|
@@ -191,9 +192,7 @@ export function HeadContent() {
|
|
|
191
192
|
|
|
192
193
|
return (
|
|
193
194
|
<MetaProvider>
|
|
194
|
-
{tags()
|
|
195
|
-
<Asset {...tag} />
|
|
196
|
-
))}
|
|
195
|
+
<For each={tags()}>{(tag) => <Asset {...tag} />}</For>
|
|
197
196
|
</MetaProvider>
|
|
198
197
|
)
|
|
199
198
|
}
|