@tanstack/vue-router 1.168.18 → 1.168.20
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/esm/Asset.d.ts +1 -1
- package/dist/esm/Asset.js +35 -2
- package/dist/esm/Asset.js.map +1 -1
- package/dist/esm/headContentUtils.js +19 -7
- package/dist/esm/headContentUtils.js.map +1 -1
- package/dist/source/Asset.d.ts +1 -1
- package/dist/source/Asset.jsx +36 -2
- package/dist/source/Asset.jsx.map +1 -1
- package/dist/source/headContentUtils.jsx +29 -10
- package/dist/source/headContentUtils.jsx.map +1 -1
- package/package.json +2 -2
- package/src/Asset.tsx +53 -2
- package/src/headContentUtils.tsx +32 -12
package/dist/esm/Asset.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { RouterManagedTag } from '@tanstack/router-core';
|
|
2
|
-
export declare function Asset(
|
|
2
|
+
export declare function Asset(asset: RouterManagedTag): any;
|
package/dist/esm/Asset.js
CHANGED
|
@@ -3,6 +3,7 @@ import * as Vue from "vue";
|
|
|
3
3
|
import { createVNode, mergeProps } from "vue";
|
|
4
4
|
import { isServer } from "@tanstack/router-core/isServer";
|
|
5
5
|
//#region src/Asset.tsx
|
|
6
|
+
var INLINE_CSS_HYDRATION_ATTR = "data-tsr-inline-css";
|
|
6
7
|
var Title = Vue.defineComponent({
|
|
7
8
|
name: "Title",
|
|
8
9
|
props: { children: {
|
|
@@ -94,12 +95,44 @@ var Script = Vue.defineComponent({
|
|
|
94
95
|
};
|
|
95
96
|
}
|
|
96
97
|
});
|
|
97
|
-
|
|
98
|
+
var InlineCssStyle = Vue.defineComponent({
|
|
99
|
+
name: "InlineCssStyle",
|
|
100
|
+
props: {
|
|
101
|
+
attrs: {
|
|
102
|
+
type: Object,
|
|
103
|
+
default: () => ({})
|
|
104
|
+
},
|
|
105
|
+
children: {
|
|
106
|
+
type: String,
|
|
107
|
+
default: void 0
|
|
108
|
+
}
|
|
109
|
+
},
|
|
110
|
+
setup(props) {
|
|
111
|
+
const isInlineCssPlaceholder = props.children === void 0;
|
|
112
|
+
const hydratedInlineCss = isInlineCssPlaceholder && typeof document !== "undefined" ? document.querySelector(`style[${INLINE_CSS_HYDRATION_ATTR}]`)?.textContent ?? "" : void 0;
|
|
113
|
+
return () => Vue.h("style", {
|
|
114
|
+
...props.attrs,
|
|
115
|
+
[INLINE_CSS_HYDRATION_ATTR]: "",
|
|
116
|
+
"data-allow-mismatch": true,
|
|
117
|
+
innerHTML: isInlineCssPlaceholder ? hydratedInlineCss ?? "" : props.children ?? ""
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
});
|
|
121
|
+
function Asset(asset) {
|
|
122
|
+
const { tag, attrs, children } = asset;
|
|
98
123
|
switch (tag) {
|
|
99
124
|
case "title": return Vue.h(Title, { children });
|
|
100
125
|
case "meta": return createVNode("meta", attrs, null);
|
|
101
126
|
case "link": return createVNode("link", attrs, null);
|
|
102
|
-
case "style":
|
|
127
|
+
case "style":
|
|
128
|
+
if (asset.inlineCss && (process.env.TSS_INLINE_CSS_ENABLED === "true" || process.env.TSS_INLINE_CSS_ENABLED === void 0 && isServer)) return Vue.h(InlineCssStyle, {
|
|
129
|
+
attrs,
|
|
130
|
+
children
|
|
131
|
+
});
|
|
132
|
+
return createVNode("style", mergeProps(attrs, {
|
|
133
|
+
"data-allow-mismatch": asset.inlineCss || void 0,
|
|
134
|
+
"innerHTML": children
|
|
135
|
+
}), null);
|
|
103
136
|
case "script": return Vue.h(Script, {
|
|
104
137
|
attrs,
|
|
105
138
|
children
|
package/dist/esm/Asset.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Asset.js","names":["Vue","isServer","useRouter","Title","defineComponent","name","props","children","type","String","default","setup","router","onMounted","document","title","watch","newTitle","h","Script","attrs","Object","undefined","dataScript","src","normSrc","base","baseURI","window","location","href","URL","existingScript","Array","from","querySelectorAll","find","el","script","createElement","key","value","entries","setAttribute","head","appendChild","typeAttr","nonceAttr","nonce","HTMLScriptElement","sType","getAttribute","sNonce","textContent","innerHTML","_src","rest","Asset","tag","_createVNode","_mergeProps"],"sources":["../../src/Asset.tsx"],"sourcesContent":["import * as Vue from 'vue'\nimport { isServer } from '@tanstack/router-core/isServer'\nimport { useRouter } from './useRouter'\nimport type { RouterManagedTag } from '@tanstack/router-core'\n\ninterface ScriptAttrs {\n [key: string]: string | boolean | undefined\n src?: string\n}\n\nconst Title = Vue.defineComponent({\n name: 'Title',\n props: {\n children: {\n type: String,\n default: '',\n },\n },\n setup(props) {\n const router = useRouter()\n\n if (!(isServer ?? router.isServer)) {\n Vue.onMounted(() => {\n if (props.children) {\n document.title = props.children\n }\n })\n\n Vue.watch(\n () => props.children,\n (newTitle) => {\n if (newTitle) {\n document.title = newTitle\n }\n },\n )\n }\n\n return () => Vue.h('title', {}, props.children)\n },\n})\n\nconst Script = Vue.defineComponent({\n name: 'Script',\n props: {\n attrs: {\n type: Object as Vue.PropType<ScriptAttrs>,\n default: () => ({}),\n },\n children: {\n type: String,\n default: undefined,\n },\n },\n setup(props) {\n const router = useRouter()\n const dataScript =\n typeof props.attrs?.type === 'string' &&\n props.attrs.type !== '' &&\n props.attrs.type !== 'text/javascript' &&\n props.attrs.type !== 'module'\n\n if (!(isServer ?? router.isServer)) {\n Vue.onMounted(() => {\n if (dataScript) return\n\n const attrs = props.attrs\n const children = props.children\n\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 } else 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 })\n }\n\n return () => {\n if (!(isServer ?? router.isServer)) {\n if (dataScript && typeof props.children === 'string') {\n return Vue.h('script', {\n ...props.attrs,\n 'data-allow-mismatch': true,\n innerHTML: props.children,\n })\n }\n\n const { src: _src, ...rest } = props.attrs || {}\n return Vue.h('script', {\n ...rest,\n 'data-allow-mismatch': true,\n innerHTML: '',\n })\n }\n\n if (props.attrs?.src && typeof props.attrs.src === 'string') {\n return Vue.h('script', props.attrs)\n }\n\n if (typeof props.children === 'string') {\n return Vue.h('script', {\n ...props.attrs,\n innerHTML: props.children,\n })\n }\n\n return null\n }\n },\n})\n\nexport function Asset({ tag, attrs, children }: RouterManagedTag): any {\n switch (tag) {\n case 'title':\n return Vue.h(Title, { children: children })\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 Vue.h(Script, { attrs, children: children })\n default:\n return null\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Asset.js","names":["Vue","isServer","useRouter","INLINE_CSS_HYDRATION_ATTR","Title","defineComponent","name","props","children","type","String","default","setup","router","onMounted","document","title","watch","newTitle","h","Script","attrs","Object","undefined","dataScript","src","normSrc","base","baseURI","window","location","href","URL","existingScript","Array","from","querySelectorAll","find","el","script","createElement","key","value","entries","setAttribute","head","appendChild","typeAttr","nonceAttr","nonce","HTMLScriptElement","sType","getAttribute","sNonce","textContent","innerHTML","_src","rest","InlineCssStyle","isInlineCssPlaceholder","hydratedInlineCss","querySelector","Asset","asset","tag","_createVNode","inlineCss","process","env","TSS_INLINE_CSS_ENABLED","_mergeProps"],"sources":["../../src/Asset.tsx"],"sourcesContent":["import * as Vue from 'vue'\nimport { isServer } from '@tanstack/router-core/isServer'\nimport { useRouter } from './useRouter'\nimport type { RouterManagedTag } from '@tanstack/router-core'\n\nconst INLINE_CSS_HYDRATION_ATTR = 'data-tsr-inline-css'\n\ninterface ScriptAttrs {\n [key: string]: string | boolean | undefined\n src?: string\n}\n\nconst Title = Vue.defineComponent({\n name: 'Title',\n props: {\n children: {\n type: String,\n default: '',\n },\n },\n setup(props) {\n const router = useRouter()\n\n if (!(isServer ?? router.isServer)) {\n Vue.onMounted(() => {\n if (props.children) {\n document.title = props.children\n }\n })\n\n Vue.watch(\n () => props.children,\n (newTitle) => {\n if (newTitle) {\n document.title = newTitle\n }\n },\n )\n }\n\n return () => Vue.h('title', {}, props.children)\n },\n})\n\nconst Script = Vue.defineComponent({\n name: 'Script',\n props: {\n attrs: {\n type: Object as Vue.PropType<ScriptAttrs>,\n default: () => ({}),\n },\n children: {\n type: String,\n default: undefined,\n },\n },\n setup(props) {\n const router = useRouter()\n const dataScript =\n typeof props.attrs?.type === 'string' &&\n props.attrs.type !== '' &&\n props.attrs.type !== 'text/javascript' &&\n props.attrs.type !== 'module'\n\n if (!(isServer ?? router.isServer)) {\n Vue.onMounted(() => {\n if (dataScript) return\n\n const attrs = props.attrs\n const children = props.children\n\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 } else 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 })\n }\n\n return () => {\n if (!(isServer ?? router.isServer)) {\n if (dataScript && typeof props.children === 'string') {\n return Vue.h('script', {\n ...props.attrs,\n 'data-allow-mismatch': true,\n innerHTML: props.children,\n })\n }\n\n const { src: _src, ...rest } = props.attrs || {}\n return Vue.h('script', {\n ...rest,\n 'data-allow-mismatch': true,\n innerHTML: '',\n })\n }\n\n if (props.attrs?.src && typeof props.attrs.src === 'string') {\n return Vue.h('script', props.attrs)\n }\n\n if (typeof props.children === 'string') {\n return Vue.h('script', {\n ...props.attrs,\n innerHTML: props.children,\n })\n }\n\n return null\n }\n },\n})\n\nconst InlineCssStyle = Vue.defineComponent({\n name: 'InlineCssStyle',\n props: {\n attrs: {\n type: Object as Vue.PropType<Record<string, any>>,\n default: () => ({}),\n },\n children: {\n type: String,\n default: undefined,\n },\n },\n setup(props) {\n const isInlineCssPlaceholder = props.children === undefined\n const hydratedInlineCss =\n isInlineCssPlaceholder && typeof document !== 'undefined'\n ? (document.querySelector<HTMLStyleElement>(\n `style[${INLINE_CSS_HYDRATION_ATTR}]`,\n )?.textContent ?? '')\n : undefined\n\n return () =>\n Vue.h('style', {\n ...props.attrs,\n [INLINE_CSS_HYDRATION_ATTR]: '',\n 'data-allow-mismatch': true,\n innerHTML: isInlineCssPlaceholder\n ? (hydratedInlineCss ?? '')\n : (props.children ?? ''),\n })\n },\n})\n\nexport function Asset(asset: RouterManagedTag): any {\n const { tag, attrs, children } = asset\n\n switch (tag) {\n case 'title':\n return Vue.h(Title, { children: children })\n case 'meta':\n return <meta {...attrs} />\n case 'link':\n return <link {...attrs} />\n case 'style':\n if (\n asset.inlineCss &&\n (process.env.TSS_INLINE_CSS_ENABLED === 'true' ||\n (process.env.TSS_INLINE_CSS_ENABLED === undefined && isServer))\n ) {\n return Vue.h(InlineCssStyle, { attrs, children })\n }\n\n return (\n <style\n {...attrs}\n data-allow-mismatch={asset.inlineCss || undefined}\n innerHTML={children}\n />\n )\n case 'script':\n return Vue.h(Script, { attrs, children: children })\n default:\n return null\n }\n}\n"],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { useRouter } from "./useRouter.js";
|
|
2
|
-
import { escapeHtml, getAssetCrossOrigin, resolveManifestAssetLink } from "@tanstack/router-core";
|
|
2
|
+
import { escapeHtml, getAssetCrossOrigin, isInlinableStylesheet, resolveManifestAssetLink } from "@tanstack/router-core";
|
|
3
3
|
import * as Vue from "vue";
|
|
4
4
|
import { useStore } from "@tanstack/vue-store";
|
|
5
5
|
//#region src/headContentUtils.tsx
|
|
@@ -67,13 +67,25 @@ var useTags = (assetCrossOrigin) => {
|
|
|
67
67
|
})));
|
|
68
68
|
const manifestAssets = Vue.computed(() => {
|
|
69
69
|
const manifest = router.ssr?.manifest;
|
|
70
|
-
return matches.value.map((match) => manifest?.routes[match.routeId]?.assets ?? []).filter(Boolean).flat(1).
|
|
71
|
-
tag
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
70
|
+
return matches.value.map((match) => manifest?.routes[match.routeId]?.assets ?? []).filter(Boolean).flat(1).flatMap((asset) => {
|
|
71
|
+
if (asset.tag === "link") {
|
|
72
|
+
if (isInlinableStylesheet(manifest, asset)) return [];
|
|
73
|
+
return [{
|
|
74
|
+
tag: "link",
|
|
75
|
+
attrs: {
|
|
76
|
+
...asset.attrs,
|
|
77
|
+
crossOrigin: getAssetCrossOrigin(assetCrossOrigin, "stylesheet") ?? asset.attrs?.crossOrigin
|
|
78
|
+
}
|
|
79
|
+
}];
|
|
75
80
|
}
|
|
76
|
-
|
|
81
|
+
if (asset.tag === "style") return [{
|
|
82
|
+
tag: "style",
|
|
83
|
+
attrs: asset.attrs,
|
|
84
|
+
children: asset.children,
|
|
85
|
+
...asset.inlineCss ? { inlineCss: true } : {}
|
|
86
|
+
}];
|
|
87
|
+
return [];
|
|
88
|
+
});
|
|
77
89
|
});
|
|
78
90
|
return () => uniqBy([
|
|
79
91
|
...manifestAssets.value,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"headContentUtils.js","names":["Vue","escapeHtml","getAssetCrossOrigin","resolveManifestAssetLink","useStore","useRouter","useTags","assetCrossOrigin","router","matches","stores","value","meta","computed","resultMeta","metaByAttribute","title","map","match","filter","Boolean","reverse","forEach","metas","m","tag","children","json","JSON","stringify","push","attrs","type","attribute","name","property","links","flat","link","preloadMeta","looseRoutesById","routeId","route","ssr","manifest","routes","id","preloads","preload","preloadLink","rel","href","crossOrigin","headScripts","script","manifestAssets","assets","asset","uniqBy","d","arr","fn","seen","Set","item","key","has","add"],"sources":["../../src/headContentUtils.tsx"],"sourcesContent":["import * as Vue from 'vue'\nimport {\n escapeHtml,\n getAssetCrossOrigin,\n resolveManifestAssetLink,\n} from '@tanstack/router-core'\nimport { useStore } from '@tanstack/vue-store'\nimport { useRouter } from './useRouter'\nimport type {\n AssetCrossOriginConfig,\n RouterManagedTag,\n} from '@tanstack/router-core'\n\nexport const useTags = (assetCrossOrigin?: AssetCrossOriginConfig) => {\n const router = useRouter()\n const matches = useStore(router.stores.matches, (value) => value)\n\n const meta = Vue.computed<Array<RouterManagedTag>>(() => {\n const resultMeta: Array<RouterManagedTag> = []\n const metaByAttribute: Record<string, true> = {}\n let title: RouterManagedTag | undefined\n ;[...matches.value.map((match) => match.meta!).filter(Boolean)]\n .reverse()\n .forEach((metas) => {\n ;[...metas].reverse().forEach((m) => {\n if (!m) return\n\n if (m.title) {\n if (!title) {\n title = {\n tag: 'title',\n children: m.title,\n }\n }\n } else if ('script:ld+json' in m) {\n // Handle JSON-LD structured data\n // Content is HTML-escaped to prevent XSS when injected via innerHTML\n try {\n const json = JSON.stringify(m['script:ld+json'])\n resultMeta.push({\n tag: 'script',\n attrs: {\n type: 'application/ld+json',\n },\n children: escapeHtml(json),\n })\n } catch {\n // Skip invalid JSON-LD objects\n }\n } else {\n const attribute = m.name ?? m.property\n if (attribute) {\n if (metaByAttribute[attribute]) {\n return\n } else {\n metaByAttribute[attribute] = true\n }\n }\n\n resultMeta.push({\n tag: 'meta',\n attrs: {\n ...m,\n },\n })\n }\n })\n })\n\n if (title) {\n resultMeta.push(title)\n }\n\n resultMeta.reverse()\n\n return resultMeta\n })\n\n const links = Vue.computed<Array<RouterManagedTag>>(\n () =>\n matches.value\n .map((match) => match.links!)\n .filter(Boolean)\n .flat(1)\n .map((link) => ({\n tag: 'link',\n attrs: {\n ...link,\n },\n })) as Array<RouterManagedTag>,\n )\n\n const preloadMeta = Vue.computed<Array<RouterManagedTag>>(() => {\n const preloadMeta: Array<RouterManagedTag> = []\n\n matches.value\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 const preloadLink = resolveManifestAssetLink(preload)\n preloadMeta.push({\n tag: 'link',\n attrs: {\n rel: 'modulepreload',\n href: preloadLink.href,\n crossOrigin:\n getAssetCrossOrigin(assetCrossOrigin, 'modulepreload') ??\n preloadLink.crossOrigin,\n },\n })\n }),\n )\n\n return preloadMeta\n })\n\n const headScripts = Vue.computed<Array<RouterManagedTag>>(() =>\n (\n matches.value\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 },\n children,\n })),\n )\n\n const manifestAssets = Vue.computed<Array<RouterManagedTag>>(() => {\n const manifest = router.ssr?.manifest\n\n const assets = matches.value\n .map((match) => manifest?.routes[match.routeId]?.assets ?? [])\n .filter(Boolean)\n .flat(1)\n .
|
|
1
|
+
{"version":3,"file":"headContentUtils.js","names":["Vue","escapeHtml","getAssetCrossOrigin","isInlinableStylesheet","resolveManifestAssetLink","useStore","useRouter","useTags","assetCrossOrigin","router","matches","stores","value","meta","computed","resultMeta","metaByAttribute","title","map","match","filter","Boolean","reverse","forEach","metas","m","tag","children","json","JSON","stringify","push","attrs","type","attribute","name","property","links","flat","link","preloadMeta","looseRoutesById","routeId","route","ssr","manifest","routes","id","preloads","preload","preloadLink","rel","href","crossOrigin","headScripts","script","manifestAssets","assets","flatMap","asset","inlineCss","uniqBy","d","arr","fn","seen","Set","item","key","has","add"],"sources":["../../src/headContentUtils.tsx"],"sourcesContent":["import * as Vue from 'vue'\nimport {\n escapeHtml,\n getAssetCrossOrigin,\n isInlinableStylesheet,\n resolveManifestAssetLink,\n} from '@tanstack/router-core'\nimport { useStore } from '@tanstack/vue-store'\nimport { useRouter } from './useRouter'\nimport type {\n AssetCrossOriginConfig,\n RouterManagedTag,\n} from '@tanstack/router-core'\n\nexport const useTags = (assetCrossOrigin?: AssetCrossOriginConfig) => {\n const router = useRouter()\n const matches = useStore(router.stores.matches, (value) => value)\n\n const meta = Vue.computed<Array<RouterManagedTag>>(() => {\n const resultMeta: Array<RouterManagedTag> = []\n const metaByAttribute: Record<string, true> = {}\n let title: RouterManagedTag | undefined\n ;[...matches.value.map((match) => match.meta!).filter(Boolean)]\n .reverse()\n .forEach((metas) => {\n ;[...metas].reverse().forEach((m) => {\n if (!m) return\n\n if (m.title) {\n if (!title) {\n title = {\n tag: 'title',\n children: m.title,\n }\n }\n } else if ('script:ld+json' in m) {\n // Handle JSON-LD structured data\n // Content is HTML-escaped to prevent XSS when injected via innerHTML\n try {\n const json = JSON.stringify(m['script:ld+json'])\n resultMeta.push({\n tag: 'script',\n attrs: {\n type: 'application/ld+json',\n },\n children: escapeHtml(json),\n })\n } catch {\n // Skip invalid JSON-LD objects\n }\n } else {\n const attribute = m.name ?? m.property\n if (attribute) {\n if (metaByAttribute[attribute]) {\n return\n } else {\n metaByAttribute[attribute] = true\n }\n }\n\n resultMeta.push({\n tag: 'meta',\n attrs: {\n ...m,\n },\n })\n }\n })\n })\n\n if (title) {\n resultMeta.push(title)\n }\n\n resultMeta.reverse()\n\n return resultMeta\n })\n\n const links = Vue.computed<Array<RouterManagedTag>>(\n () =>\n matches.value\n .map((match) => match.links!)\n .filter(Boolean)\n .flat(1)\n .map((link) => ({\n tag: 'link',\n attrs: {\n ...link,\n },\n })) as Array<RouterManagedTag>,\n )\n\n const preloadMeta = Vue.computed<Array<RouterManagedTag>>(() => {\n const preloadMeta: Array<RouterManagedTag> = []\n\n matches.value\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 const preloadLink = resolveManifestAssetLink(preload)\n preloadMeta.push({\n tag: 'link',\n attrs: {\n rel: 'modulepreload',\n href: preloadLink.href,\n crossOrigin:\n getAssetCrossOrigin(assetCrossOrigin, 'modulepreload') ??\n preloadLink.crossOrigin,\n },\n })\n }),\n )\n\n return preloadMeta\n })\n\n const headScripts = Vue.computed<Array<RouterManagedTag>>(() =>\n (\n matches.value\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 },\n children,\n })),\n )\n\n const manifestAssets = Vue.computed<Array<RouterManagedTag>>(() => {\n const manifest = router.ssr?.manifest\n\n const assets = matches.value\n .map((match) => manifest?.routes[match.routeId]?.assets ?? [])\n .filter(Boolean)\n .flat(1)\n .flatMap((asset): Array<RouterManagedTag> => {\n if (asset.tag === 'link') {\n if (isInlinableStylesheet(manifest, asset)) {\n return []\n }\n\n return [\n {\n tag: 'link',\n attrs: {\n ...asset.attrs,\n crossOrigin:\n getAssetCrossOrigin(assetCrossOrigin, 'stylesheet') ??\n asset.attrs?.crossOrigin,\n },\n },\n ]\n }\n\n if (asset.tag === 'style') {\n return [\n {\n tag: 'style',\n attrs: asset.attrs,\n children: asset.children,\n ...(asset.inlineCss ? { inlineCss: true as const } : {}),\n },\n ]\n }\n\n return []\n })\n\n return assets\n })\n\n return () =>\n uniqBy(\n [\n ...manifestAssets.value,\n ...meta.value,\n ...preloadMeta.value,\n ...links.value,\n ...headScripts.value,\n ] as Array<RouterManagedTag>,\n (d) => {\n return JSON.stringify(d)\n },\n )\n}\n\nexport function 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"],"mappings":"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"}
|
package/dist/source/Asset.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import type { RouterManagedTag } from '@tanstack/router-core';
|
|
2
|
-
export declare function Asset(
|
|
2
|
+
export declare function Asset(asset: RouterManagedTag): any;
|
package/dist/source/Asset.jsx
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as Vue from 'vue';
|
|
2
2
|
import { isServer } from '@tanstack/router-core/isServer';
|
|
3
3
|
import { useRouter } from './useRouter';
|
|
4
|
+
const INLINE_CSS_HYDRATION_ATTR = 'data-tsr-inline-css';
|
|
4
5
|
const Title = Vue.defineComponent({
|
|
5
6
|
name: 'Title',
|
|
6
7
|
props: {
|
|
@@ -129,7 +130,35 @@ const Script = Vue.defineComponent({
|
|
|
129
130
|
};
|
|
130
131
|
},
|
|
131
132
|
});
|
|
132
|
-
|
|
133
|
+
const InlineCssStyle = Vue.defineComponent({
|
|
134
|
+
name: 'InlineCssStyle',
|
|
135
|
+
props: {
|
|
136
|
+
attrs: {
|
|
137
|
+
type: Object,
|
|
138
|
+
default: () => ({}),
|
|
139
|
+
},
|
|
140
|
+
children: {
|
|
141
|
+
type: String,
|
|
142
|
+
default: undefined,
|
|
143
|
+
},
|
|
144
|
+
},
|
|
145
|
+
setup(props) {
|
|
146
|
+
const isInlineCssPlaceholder = props.children === undefined;
|
|
147
|
+
const hydratedInlineCss = isInlineCssPlaceholder && typeof document !== 'undefined'
|
|
148
|
+
? (document.querySelector(`style[${INLINE_CSS_HYDRATION_ATTR}]`)?.textContent ?? '')
|
|
149
|
+
: undefined;
|
|
150
|
+
return () => Vue.h('style', {
|
|
151
|
+
...props.attrs,
|
|
152
|
+
[INLINE_CSS_HYDRATION_ATTR]: '',
|
|
153
|
+
'data-allow-mismatch': true,
|
|
154
|
+
innerHTML: isInlineCssPlaceholder
|
|
155
|
+
? (hydratedInlineCss ?? '')
|
|
156
|
+
: (props.children ?? ''),
|
|
157
|
+
});
|
|
158
|
+
},
|
|
159
|
+
});
|
|
160
|
+
export function Asset(asset) {
|
|
161
|
+
const { tag, attrs, children } = asset;
|
|
133
162
|
switch (tag) {
|
|
134
163
|
case 'title':
|
|
135
164
|
return Vue.h(Title, { children: children });
|
|
@@ -138,7 +167,12 @@ export function Asset({ tag, attrs, children }) {
|
|
|
138
167
|
case 'link':
|
|
139
168
|
return <link {...attrs}/>;
|
|
140
169
|
case 'style':
|
|
141
|
-
|
|
170
|
+
if (asset.inlineCss &&
|
|
171
|
+
(process.env.TSS_INLINE_CSS_ENABLED === 'true' ||
|
|
172
|
+
(process.env.TSS_INLINE_CSS_ENABLED === undefined && isServer))) {
|
|
173
|
+
return Vue.h(InlineCssStyle, { attrs, children });
|
|
174
|
+
}
|
|
175
|
+
return (<style {...attrs} data-allow-mismatch={asset.inlineCss || undefined} innerHTML={children}/>);
|
|
142
176
|
case 'script':
|
|
143
177
|
return Vue.h(Script, { attrs, children: children });
|
|
144
178
|
default:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Asset.jsx","sourceRoot":"","sources":["../../src/Asset.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,KAAK,CAAA;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,gCAAgC,CAAA;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"Asset.jsx","sourceRoot":"","sources":["../../src/Asset.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as Vue from 'vue';
|
|
2
|
-
import { escapeHtml, getAssetCrossOrigin, resolveManifestAssetLink, } from '@tanstack/router-core';
|
|
2
|
+
import { escapeHtml, getAssetCrossOrigin, isInlinableStylesheet, resolveManifestAssetLink, } from '@tanstack/router-core';
|
|
3
3
|
import { useStore } from '@tanstack/vue-store';
|
|
4
4
|
import { useRouter } from './useRouter';
|
|
5
5
|
export const useTags = (assetCrossOrigin) => {
|
|
@@ -112,15 +112,34 @@ export const useTags = (assetCrossOrigin) => {
|
|
|
112
112
|
.map((match) => manifest?.routes[match.routeId]?.assets ?? [])
|
|
113
113
|
.filter(Boolean)
|
|
114
114
|
.flat(1)
|
|
115
|
-
.
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
115
|
+
.flatMap((asset) => {
|
|
116
|
+
if (asset.tag === 'link') {
|
|
117
|
+
if (isInlinableStylesheet(manifest, asset)) {
|
|
118
|
+
return [];
|
|
119
|
+
}
|
|
120
|
+
return [
|
|
121
|
+
{
|
|
122
|
+
tag: 'link',
|
|
123
|
+
attrs: {
|
|
124
|
+
...asset.attrs,
|
|
125
|
+
crossOrigin: getAssetCrossOrigin(assetCrossOrigin, 'stylesheet') ??
|
|
126
|
+
asset.attrs?.crossOrigin,
|
|
127
|
+
},
|
|
128
|
+
},
|
|
129
|
+
];
|
|
130
|
+
}
|
|
131
|
+
if (asset.tag === 'style') {
|
|
132
|
+
return [
|
|
133
|
+
{
|
|
134
|
+
tag: 'style',
|
|
135
|
+
attrs: asset.attrs,
|
|
136
|
+
children: asset.children,
|
|
137
|
+
...(asset.inlineCss ? { inlineCss: true } : {}),
|
|
138
|
+
},
|
|
139
|
+
];
|
|
140
|
+
}
|
|
141
|
+
return [];
|
|
142
|
+
});
|
|
124
143
|
return assets;
|
|
125
144
|
});
|
|
126
145
|
return () => uniqBy([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"headContentUtils.jsx","sourceRoot":"","sources":["../../src/headContentUtils.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"headContentUtils.jsx","sourceRoot":"","sources":["../../src/headContentUtils.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,KAAK,CAAA;AAC1B,OAAO,EACL,UAAU,EACV,mBAAmB,EACnB,qBAAqB,EACrB,wBAAwB,GACzB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAMvC,MAAM,CAAC,MAAM,OAAO,GAAG,CAAC,gBAAyC,EAAE,EAAE;IACnE,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,CAAA;IAEjE,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAA0B,GAAG,EAAE;QACtD,MAAM,UAAU,GAA4B,EAAE,CAAA;QAC9C,MAAM,eAAe,GAAyB,EAAE,CAAA;QAChD,IAAI,KAAmC,CACtC;QAAA,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;aAC5D,OAAO,EAAE;aACT,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;YACjB,CAAC;YAAA,CAAC,GAAG,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;gBAClC,IAAI,CAAC,CAAC;oBAAE,OAAM;gBAEd,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;oBACZ,IAAI,CAAC,KAAK,EAAE,CAAC;wBACX,KAAK,GAAG;4BACN,GAAG,EAAE,OAAO;4BACZ,QAAQ,EAAE,CAAC,CAAC,KAAK;yBAClB,CAAA;oBACH,CAAC;gBACH,CAAC;qBAAM,IAAI,gBAAgB,IAAI,CAAC,EAAE,CAAC;oBACjC,iCAAiC;oBACjC,qEAAqE;oBACrE,IAAI,CAAC;wBACH,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAA;wBAChD,UAAU,CAAC,IAAI,CAAC;4BACd,GAAG,EAAE,QAAQ;4BACb,KAAK,EAAE;gCACL,IAAI,EAAE,qBAAqB;6BAC5B;4BACD,QAAQ,EAAE,UAAU,CAAC,IAAI,CAAC;yBAC3B,CAAC,CAAA;oBACJ,CAAC;oBAAC,MAAM,CAAC;wBACP,+BAA+B;oBACjC,CAAC;gBACH,CAAC;qBAAM,CAAC;oBACN,MAAM,SAAS,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,QAAQ,CAAA;oBACtC,IAAI,SAAS,EAAE,CAAC;wBACd,IAAI,eAAe,CAAC,SAAS,CAAC,EAAE,CAAC;4BAC/B,OAAM;wBACR,CAAC;6BAAM,CAAC;4BACN,eAAe,CAAC,SAAS,CAAC,GAAG,IAAI,CAAA;wBACnC,CAAC;oBACH,CAAC;oBAED,UAAU,CAAC,IAAI,CAAC;wBACd,GAAG,EAAE,MAAM;wBACX,KAAK,EAAE;4BACL,GAAG,CAAC;yBACL;qBACF,CAAC,CAAA;gBACJ,CAAC;YACH,CAAC,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;QAEJ,IAAI,KAAK,EAAE,CAAC;YACV,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACxB,CAAC;QAED,UAAU,CAAC,OAAO,EAAE,CAAA;QAEpB,OAAO,UAAU,CAAA;IACnB,CAAC,CAAC,CAAA;IAEF,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,CACxB,GAAG,EAAE,CACH,OAAO,CAAC,KAAK;SACV,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,KAAM,CAAC;SAC5B,MAAM,CAAC,OAAO,CAAC;SACf,IAAI,CAAC,CAAC,CAAC;SACP,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACd,GAAG,EAAE,MAAM;QACX,KAAK,EAAE;YACL,GAAG,IAAI;SACR;KACF,CAAC,CAA4B,CACnC,CAAA;IAED,MAAM,WAAW,GAAG,GAAG,CAAC,QAAQ,CAA0B,GAAG,EAAE;QAC7D,MAAM,WAAW,GAA4B,EAAE,CAAA;QAE/C,OAAO,CAAC,KAAK;aACV,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,KAAK,CAAC,OAAO,CAAE,CAAC;aACtD,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CACjB,MAAM,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,QAAQ;YAC9C,EAAE,MAAM,CAAC,OAAO,CAAC;aAChB,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;YACnB,MAAM,WAAW,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAA;YACrD,WAAW,CAAC,IAAI,CAAC;gBACf,GAAG,EAAE,MAAM;gBACX,KAAK,EAAE;oBACL,GAAG,EAAE,eAAe;oBACpB,IAAI,EAAE,WAAW,CAAC,IAAI;oBACtB,WAAW,EACT,mBAAmB,CAAC,gBAAgB,EAAE,eAAe,CAAC;wBACtD,WAAW,CAAC,WAAW;iBAC1B;aACF,CAAC,CAAA;QACJ,CAAC,CAAC,CACL,CAAA;QAEH,OAAO,WAAW,CAAA;IACpB,CAAC,CAAC,CAAA;IAEF,MAAM,WAAW,GAAG,GAAG,CAAC,QAAQ,CAA0B,GAAG,EAAE,CAE3D,OAAO,CAAC,KAAK;SACV,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,WAAY,CAAC;SAClC,IAAI,CAAC,CAAC,CAAC;SACP,MAAM,CAAC,OAAO,CAClB,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,EAAE,GAAG,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;QAClC,GAAG,EAAE,QAAQ;QACb,KAAK,EAAE;YACL,GAAG,MAAM;SACV;QACD,QAAQ;KACT,CAAC,CAAC,CACJ,CAAA;IAED,MAAM,cAAc,GAAG,GAAG,CAAC,QAAQ,CAA0B,GAAG,EAAE;QAChE,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAA;QAErC,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK;aACzB,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,MAAM,IAAI,EAAE,CAAC;aAC7D,MAAM,CAAC,OAAO,CAAC;aACf,IAAI,CAAC,CAAC,CAAC;aACP,OAAO,CAAC,CAAC,KAAK,EAA2B,EAAE;YAC1C,IAAI,KAAK,CAAC,GAAG,KAAK,MAAM,EAAE,CAAC;gBACzB,IAAI,qBAAqB,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,CAAC;oBAC3C,OAAO,EAAE,CAAA;gBACX,CAAC;gBAED,OAAO;oBACL;wBACE,GAAG,EAAE,MAAM;wBACX,KAAK,EAAE;4BACL,GAAG,KAAK,CAAC,KAAK;4BACd,WAAW,EACT,mBAAmB,CAAC,gBAAgB,EAAE,YAAY,CAAC;gCACnD,KAAK,CAAC,KAAK,EAAE,WAAW;yBAC3B;qBACF;iBACF,CAAA;YACH,CAAC;YAED,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,EAAE,CAAC;gBAC1B,OAAO;oBACL;wBACE,GAAG,EAAE,OAAO;wBACZ,KAAK,EAAE,KAAK,CAAC,KAAK;wBAClB,QAAQ,EAAE,KAAK,CAAC,QAAQ;wBACxB,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,IAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;qBACzD;iBACF,CAAA;YACH,CAAC;YAED,OAAO,EAAE,CAAA;QACX,CAAC,CAAC,CAAA;QAEJ,OAAO,MAAM,CAAA;IACf,CAAC,CAAC,CAAA;IAEF,OAAO,GAAG,EAAE,CACV,MAAM,CACJ;QACE,GAAG,cAAc,CAAC,KAAK;QACvB,GAAG,IAAI,CAAC,KAAK;QACb,GAAG,WAAW,CAAC,KAAK;QACpB,GAAG,KAAK,CAAC,KAAK;QACd,GAAG,WAAW,CAAC,KAAK;KACM,EAC5B,CAAC,CAAC,EAAE,EAAE;QACJ,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAA;IAC1B,CAAC,CACF,CAAA;AACL,CAAC,CAAA;AAED,MAAM,UAAU,MAAM,CAAI,GAAa,EAAE,EAAuB;IAC9D,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAA;IAC9B,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QACzB,MAAM,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,CAAA;QACpB,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YAClB,OAAO,KAAK,CAAA;QACd,CAAC;QACD,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACb,OAAO,IAAI,CAAA;IACb,CAAC,CAAC,CAAA;AACJ,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tanstack/vue-router",
|
|
3
|
-
"version": "1.168.
|
|
3
|
+
"version": "1.168.20",
|
|
4
4
|
"description": "Modern and scalable routing for Vue applications",
|
|
5
5
|
"author": "Tanner Linsley",
|
|
6
6
|
"license": "MIT",
|
|
@@ -65,7 +65,7 @@
|
|
|
65
65
|
"isbot": "^5.1.22",
|
|
66
66
|
"jsesc": "^3.0.2",
|
|
67
67
|
"@tanstack/history": "1.161.6",
|
|
68
|
-
"@tanstack/router-core": "1.168.
|
|
68
|
+
"@tanstack/router-core": "1.168.16"
|
|
69
69
|
},
|
|
70
70
|
"devDependencies": {
|
|
71
71
|
"@tanstack/intent": "^0.0.14",
|
package/src/Asset.tsx
CHANGED
|
@@ -3,6 +3,8 @@ import { isServer } from '@tanstack/router-core/isServer'
|
|
|
3
3
|
import { useRouter } from './useRouter'
|
|
4
4
|
import type { RouterManagedTag } from '@tanstack/router-core'
|
|
5
5
|
|
|
6
|
+
const INLINE_CSS_HYDRATION_ATTR = 'data-tsr-inline-css'
|
|
7
|
+
|
|
6
8
|
interface ScriptAttrs {
|
|
7
9
|
[key: string]: string | boolean | undefined
|
|
8
10
|
src?: string
|
|
@@ -171,7 +173,42 @@ const Script = Vue.defineComponent({
|
|
|
171
173
|
},
|
|
172
174
|
})
|
|
173
175
|
|
|
174
|
-
|
|
176
|
+
const InlineCssStyle = Vue.defineComponent({
|
|
177
|
+
name: 'InlineCssStyle',
|
|
178
|
+
props: {
|
|
179
|
+
attrs: {
|
|
180
|
+
type: Object as Vue.PropType<Record<string, any>>,
|
|
181
|
+
default: () => ({}),
|
|
182
|
+
},
|
|
183
|
+
children: {
|
|
184
|
+
type: String,
|
|
185
|
+
default: undefined,
|
|
186
|
+
},
|
|
187
|
+
},
|
|
188
|
+
setup(props) {
|
|
189
|
+
const isInlineCssPlaceholder = props.children === undefined
|
|
190
|
+
const hydratedInlineCss =
|
|
191
|
+
isInlineCssPlaceholder && typeof document !== 'undefined'
|
|
192
|
+
? (document.querySelector<HTMLStyleElement>(
|
|
193
|
+
`style[${INLINE_CSS_HYDRATION_ATTR}]`,
|
|
194
|
+
)?.textContent ?? '')
|
|
195
|
+
: undefined
|
|
196
|
+
|
|
197
|
+
return () =>
|
|
198
|
+
Vue.h('style', {
|
|
199
|
+
...props.attrs,
|
|
200
|
+
[INLINE_CSS_HYDRATION_ATTR]: '',
|
|
201
|
+
'data-allow-mismatch': true,
|
|
202
|
+
innerHTML: isInlineCssPlaceholder
|
|
203
|
+
? (hydratedInlineCss ?? '')
|
|
204
|
+
: (props.children ?? ''),
|
|
205
|
+
})
|
|
206
|
+
},
|
|
207
|
+
})
|
|
208
|
+
|
|
209
|
+
export function Asset(asset: RouterManagedTag): any {
|
|
210
|
+
const { tag, attrs, children } = asset
|
|
211
|
+
|
|
175
212
|
switch (tag) {
|
|
176
213
|
case 'title':
|
|
177
214
|
return Vue.h(Title, { children: children })
|
|
@@ -180,7 +217,21 @@ export function Asset({ tag, attrs, children }: RouterManagedTag): any {
|
|
|
180
217
|
case 'link':
|
|
181
218
|
return <link {...attrs} />
|
|
182
219
|
case 'style':
|
|
183
|
-
|
|
220
|
+
if (
|
|
221
|
+
asset.inlineCss &&
|
|
222
|
+
(process.env.TSS_INLINE_CSS_ENABLED === 'true' ||
|
|
223
|
+
(process.env.TSS_INLINE_CSS_ENABLED === undefined && isServer))
|
|
224
|
+
) {
|
|
225
|
+
return Vue.h(InlineCssStyle, { attrs, children })
|
|
226
|
+
}
|
|
227
|
+
|
|
228
|
+
return (
|
|
229
|
+
<style
|
|
230
|
+
{...attrs}
|
|
231
|
+
data-allow-mismatch={asset.inlineCss || undefined}
|
|
232
|
+
innerHTML={children}
|
|
233
|
+
/>
|
|
234
|
+
)
|
|
184
235
|
case 'script':
|
|
185
236
|
return Vue.h(Script, { attrs, children: children })
|
|
186
237
|
default:
|
package/src/headContentUtils.tsx
CHANGED
|
@@ -2,6 +2,7 @@ import * as Vue from 'vue'
|
|
|
2
2
|
import {
|
|
3
3
|
escapeHtml,
|
|
4
4
|
getAssetCrossOrigin,
|
|
5
|
+
isInlinableStylesheet,
|
|
5
6
|
resolveManifestAssetLink,
|
|
6
7
|
} from '@tanstack/router-core'
|
|
7
8
|
import { useStore } from '@tanstack/vue-store'
|
|
@@ -138,19 +139,38 @@ export const useTags = (assetCrossOrigin?: AssetCrossOriginConfig) => {
|
|
|
138
139
|
.map((match) => manifest?.routes[match.routeId]?.assets ?? [])
|
|
139
140
|
.filter(Boolean)
|
|
140
141
|
.flat(1)
|
|
141
|
-
.
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
142
|
+
.flatMap((asset): Array<RouterManagedTag> => {
|
|
143
|
+
if (asset.tag === 'link') {
|
|
144
|
+
if (isInlinableStylesheet(manifest, asset)) {
|
|
145
|
+
return []
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
return [
|
|
149
|
+
{
|
|
150
|
+
tag: 'link',
|
|
151
|
+
attrs: {
|
|
152
|
+
...asset.attrs,
|
|
153
|
+
crossOrigin:
|
|
154
|
+
getAssetCrossOrigin(assetCrossOrigin, 'stylesheet') ??
|
|
155
|
+
asset.attrs?.crossOrigin,
|
|
156
|
+
},
|
|
151
157
|
},
|
|
152
|
-
|
|
153
|
-
|
|
158
|
+
]
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
if (asset.tag === 'style') {
|
|
162
|
+
return [
|
|
163
|
+
{
|
|
164
|
+
tag: 'style',
|
|
165
|
+
attrs: asset.attrs,
|
|
166
|
+
children: asset.children,
|
|
167
|
+
...(asset.inlineCss ? { inlineCss: true as const } : {}),
|
|
168
|
+
},
|
|
169
|
+
]
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
return []
|
|
173
|
+
})
|
|
154
174
|
|
|
155
175
|
return assets
|
|
156
176
|
})
|