@tanstack/solid-router 1.167.1 → 1.167.3

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.
Files changed (200) hide show
  1. package/dist/cjs/Asset.cjs +84 -127
  2. package/dist/cjs/Asset.cjs.map +1 -1
  3. package/dist/cjs/CatchBoundary.cjs +50 -68
  4. package/dist/cjs/CatchBoundary.cjs.map +1 -1
  5. package/dist/cjs/ClientOnly.cjs +61 -39
  6. package/dist/cjs/ClientOnly.cjs.map +1 -1
  7. package/dist/cjs/HeadContent.cjs +25 -19
  8. package/dist/cjs/HeadContent.cjs.map +1 -1
  9. package/dist/cjs/HeadContent.dev.cjs +38 -33
  10. package/dist/cjs/HeadContent.dev.cjs.map +1 -1
  11. package/dist/cjs/Match.cjs +330 -398
  12. package/dist/cjs/Match.cjs.map +1 -1
  13. package/dist/cjs/Matches.cjs +109 -151
  14. package/dist/cjs/Matches.cjs.map +1 -1
  15. package/dist/cjs/RouterProvider.cjs +28 -40
  16. package/dist/cjs/RouterProvider.cjs.map +1 -1
  17. package/dist/cjs/SafeFragment.cjs +7 -5
  18. package/dist/cjs/SafeFragment.cjs.map +1 -1
  19. package/dist/cjs/ScriptOnce.cjs +18 -20
  20. package/dist/cjs/ScriptOnce.cjs.map +1 -1
  21. package/dist/cjs/Scripts.cjs +41 -54
  22. package/dist/cjs/Scripts.cjs.map +1 -1
  23. package/dist/cjs/ScrollRestoration.cjs +26 -28
  24. package/dist/cjs/ScrollRestoration.cjs.map +1 -1
  25. package/dist/cjs/Transitioner.cjs +94 -129
  26. package/dist/cjs/Transitioner.cjs.map +1 -1
  27. package/dist/cjs/_virtual/_rolldown/runtime.cjs +23 -0
  28. package/dist/cjs/awaited.cjs +24 -51
  29. package/dist/cjs/awaited.cjs.map +1 -1
  30. package/dist/cjs/fileRoute.cjs +96 -91
  31. package/dist/cjs/fileRoute.cjs.map +1 -1
  32. package/dist/cjs/headContentUtils.cjs +132 -170
  33. package/dist/cjs/headContentUtils.cjs.map +1 -1
  34. package/dist/cjs/index.cjs +245 -176
  35. package/dist/cjs/index.dev.cjs +245 -176
  36. package/dist/cjs/lazyRouteComponent.cjs +48 -54
  37. package/dist/cjs/lazyRouteComponent.cjs.map +1 -1
  38. package/dist/cjs/link.cjs +304 -331
  39. package/dist/cjs/link.cjs.map +1 -1
  40. package/dist/cjs/matchContext.cjs +9 -23
  41. package/dist/cjs/matchContext.cjs.map +1 -1
  42. package/dist/cjs/not-found.cjs +26 -34
  43. package/dist/cjs/not-found.cjs.map +1 -1
  44. package/dist/cjs/renderRouteNotFound.cjs +23 -16
  45. package/dist/cjs/renderRouteNotFound.cjs.map +1 -1
  46. package/dist/cjs/route.cjs +200 -215
  47. package/dist/cjs/route.cjs.map +1 -1
  48. package/dist/cjs/router.cjs +18 -16
  49. package/dist/cjs/router.cjs.map +1 -1
  50. package/dist/cjs/routerContext.cjs +8 -22
  51. package/dist/cjs/routerContext.cjs.map +1 -1
  52. package/dist/cjs/scroll-restoration.cjs +25 -35
  53. package/dist/cjs/scroll-restoration.cjs.map +1 -1
  54. package/dist/cjs/ssr/RouterClient.cjs +31 -42
  55. package/dist/cjs/ssr/RouterClient.cjs.map +1 -1
  56. package/dist/cjs/ssr/RouterServer.cjs +44 -51
  57. package/dist/cjs/ssr/RouterServer.cjs.map +1 -1
  58. package/dist/cjs/ssr/client.cjs +2 -4
  59. package/dist/cjs/ssr/defaultRenderHandler.cjs +12 -16
  60. package/dist/cjs/ssr/defaultRenderHandler.cjs.map +1 -1
  61. package/dist/cjs/ssr/defaultStreamHandler.cjs +13 -18
  62. package/dist/cjs/ssr/defaultStreamHandler.cjs.map +1 -1
  63. package/dist/cjs/ssr/renderRouterToStream.cjs +27 -55
  64. package/dist/cjs/ssr/renderRouterToStream.cjs.map +1 -1
  65. package/dist/cjs/ssr/renderRouterToString.cjs +33 -57
  66. package/dist/cjs/ssr/renderRouterToString.cjs.map +1 -1
  67. package/dist/cjs/ssr/server.cjs +18 -18
  68. package/dist/cjs/useBlocker.cjs +138 -173
  69. package/dist/cjs/useBlocker.cjs.map +1 -1
  70. package/dist/cjs/useBlocker.d.cts +8 -5
  71. package/dist/cjs/useCanGoBack.cjs +6 -5
  72. package/dist/cjs/useCanGoBack.cjs.map +1 -1
  73. package/dist/cjs/useLoaderData.cjs +12 -11
  74. package/dist/cjs/useLoaderData.cjs.map +1 -1
  75. package/dist/cjs/useLoaderDeps.cjs +12 -14
  76. package/dist/cjs/useLoaderDeps.cjs.map +1 -1
  77. package/dist/cjs/useLocation.cjs +6 -7
  78. package/dist/cjs/useLocation.cjs.map +1 -1
  79. package/dist/cjs/useMatch.cjs +27 -49
  80. package/dist/cjs/useMatch.cjs.map +1 -1
  81. package/dist/cjs/useNavigate.cjs +20 -38
  82. package/dist/cjs/useNavigate.cjs.map +1 -1
  83. package/dist/cjs/useParams.cjs +14 -13
  84. package/dist/cjs/useParams.cjs.map +1 -1
  85. package/dist/cjs/useRouteContext.cjs +9 -8
  86. package/dist/cjs/useRouteContext.cjs.map +1 -1
  87. package/dist/cjs/useRouter.cjs +13 -26
  88. package/dist/cjs/useRouter.cjs.map +1 -1
  89. package/dist/cjs/useRouterState.cjs +29 -37
  90. package/dist/cjs/useRouterState.cjs.map +1 -1
  91. package/dist/cjs/useSearch.cjs +13 -12
  92. package/dist/cjs/useSearch.cjs.map +1 -1
  93. package/dist/cjs/utils.cjs +58 -51
  94. package/dist/cjs/utils.cjs.map +1 -1
  95. package/dist/esm/Asset.js +82 -126
  96. package/dist/esm/Asset.js.map +1 -1
  97. package/dist/esm/CatchBoundary.js +46 -50
  98. package/dist/esm/CatchBoundary.js.map +1 -1
  99. package/dist/esm/ClientOnly.js +58 -22
  100. package/dist/esm/ClientOnly.js.map +1 -1
  101. package/dist/esm/HeadContent.dev.js +36 -32
  102. package/dist/esm/HeadContent.dev.js.map +1 -1
  103. package/dist/esm/HeadContent.js +23 -18
  104. package/dist/esm/HeadContent.js.map +1 -1
  105. package/dist/esm/Match.js +322 -378
  106. package/dist/esm/Match.js.map +1 -1
  107. package/dist/esm/Matches.js +102 -135
  108. package/dist/esm/Matches.js.map +1 -1
  109. package/dist/esm/RouterProvider.js +25 -39
  110. package/dist/esm/RouterProvider.js.map +1 -1
  111. package/dist/esm/SafeFragment.js +6 -5
  112. package/dist/esm/SafeFragment.js.map +1 -1
  113. package/dist/esm/ScriptOnce.js +16 -19
  114. package/dist/esm/ScriptOnce.js.map +1 -1
  115. package/dist/esm/Scripts.js +40 -54
  116. package/dist/esm/Scripts.js.map +1 -1
  117. package/dist/esm/ScrollRestoration.js +25 -29
  118. package/dist/esm/ScrollRestoration.js.map +1 -1
  119. package/dist/esm/Transitioner.js +90 -110
  120. package/dist/esm/Transitioner.js.map +1 -1
  121. package/dist/esm/awaited.js +21 -34
  122. package/dist/esm/awaited.js.map +1 -1
  123. package/dist/esm/fileRoute.js +90 -92
  124. package/dist/esm/fileRoute.js.map +1 -1
  125. package/dist/esm/headContentUtils.js +129 -152
  126. package/dist/esm/headContentUtils.js.map +1 -1
  127. package/dist/esm/index.dev.js +15 -115
  128. package/dist/esm/index.js +17 -116
  129. package/dist/esm/lazyRouteComponent.js +47 -54
  130. package/dist/esm/lazyRouteComponent.js.map +1 -1
  131. package/dist/esm/link.js +299 -314
  132. package/dist/esm/link.js.map +1 -1
  133. package/dist/esm/matchContext.js +7 -7
  134. package/dist/esm/matchContext.js.map +1 -1
  135. package/dist/esm/not-found.js +23 -33
  136. package/dist/esm/not-found.js.map +1 -1
  137. package/dist/esm/renderRouteNotFound.js +20 -15
  138. package/dist/esm/renderRouteNotFound.js.map +1 -1
  139. package/dist/esm/route.js +193 -218
  140. package/dist/esm/route.js.map +1 -1
  141. package/dist/esm/router.js +17 -17
  142. package/dist/esm/router.js.map +1 -1
  143. package/dist/esm/routerContext.js +6 -5
  144. package/dist/esm/routerContext.js.map +1 -1
  145. package/dist/esm/scroll-restoration.js +23 -34
  146. package/dist/esm/scroll-restoration.js.map +1 -1
  147. package/dist/esm/ssr/RouterClient.js +29 -41
  148. package/dist/esm/ssr/RouterClient.js.map +1 -1
  149. package/dist/esm/ssr/RouterServer.js +40 -48
  150. package/dist/esm/ssr/RouterServer.js.map +1 -1
  151. package/dist/esm/ssr/client.js +1 -4
  152. package/dist/esm/ssr/defaultRenderHandler.js +11 -15
  153. package/dist/esm/ssr/defaultRenderHandler.js.map +1 -1
  154. package/dist/esm/ssr/defaultStreamHandler.js +12 -17
  155. package/dist/esm/ssr/defaultStreamHandler.js.map +1 -1
  156. package/dist/esm/ssr/renderRouterToStream.js +24 -37
  157. package/dist/esm/ssr/renderRouterToStream.js.map +1 -1
  158. package/dist/esm/ssr/renderRouterToString.js +31 -40
  159. package/dist/esm/ssr/renderRouterToString.js.map +1 -1
  160. package/dist/esm/ssr/server.js +3 -10
  161. package/dist/esm/useBlocker.d.ts +8 -5
  162. package/dist/esm/useBlocker.js +134 -155
  163. package/dist/esm/useBlocker.js.map +1 -1
  164. package/dist/esm/useCanGoBack.js +6 -5
  165. package/dist/esm/useCanGoBack.js.map +1 -1
  166. package/dist/esm/useLoaderData.js +12 -11
  167. package/dist/esm/useLoaderData.js.map +1 -1
  168. package/dist/esm/useLoaderDeps.js +12 -14
  169. package/dist/esm/useLoaderDeps.js.map +1 -1
  170. package/dist/esm/useLocation.js +6 -7
  171. package/dist/esm/useLocation.js.map +1 -1
  172. package/dist/esm/useMatch.js +23 -31
  173. package/dist/esm/useMatch.js.map +1 -1
  174. package/dist/esm/useNavigate.js +18 -22
  175. package/dist/esm/useNavigate.js.map +1 -1
  176. package/dist/esm/useParams.js +14 -13
  177. package/dist/esm/useParams.js.map +1 -1
  178. package/dist/esm/useRouteContext.js +9 -8
  179. package/dist/esm/useRouteContext.js.map +1 -1
  180. package/dist/esm/useRouter.js +9 -8
  181. package/dist/esm/useRouter.js.map +1 -1
  182. package/dist/esm/useRouterState.js +28 -37
  183. package/dist/esm/useRouterState.js.map +1 -1
  184. package/dist/esm/useSearch.js +13 -12
  185. package/dist/esm/useSearch.js.map +1 -1
  186. package/dist/esm/utils.js +56 -35
  187. package/dist/esm/utils.js.map +1 -1
  188. package/dist/source/useBlocker.d.ts +8 -5
  189. package/dist/source/useBlocker.jsx +2 -2
  190. package/dist/source/useBlocker.jsx.map +1 -1
  191. package/package.json +3 -3
  192. package/src/useBlocker.tsx +15 -10
  193. package/dist/cjs/index.cjs.map +0 -1
  194. package/dist/cjs/index.dev.cjs.map +0 -1
  195. package/dist/cjs/ssr/client.cjs.map +0 -1
  196. package/dist/cjs/ssr/server.cjs.map +0 -1
  197. package/dist/esm/index.dev.js.map +0 -1
  198. package/dist/esm/index.js.map +0 -1
  199. package/dist/esm/ssr/client.js.map +0 -1
  200. package/dist/esm/ssr/server.js.map +0 -1
package/dist/esm/Asset.js CHANGED
@@ -1,130 +1,86 @@
1
- import { createComponent, mergeProps, template, spread } from "solid-js/web";
2
- import { Style, Link, Meta, Title } from "@solidjs/meta";
3
- import { onMount, onCleanup } from "solid-js";
4
- import { isServer } from "@tanstack/router-core/isServer";
5
1
  import { useRouter } from "./useRouter.js";
2
+ import { createComponent, mergeProps, spread, template } from "solid-js/web";
3
+ import { onCleanup, onMount } from "solid-js";
4
+ import { isServer } from "@tanstack/router-core/isServer";
5
+ import { Link, Meta, Style, Title } from "@solidjs/meta";
6
+ //#region src/Asset.tsx
6
7
  var _tmpl$ = /* @__PURE__ */ template(`<script>`);
7
- function Asset({
8
- tag,
9
- attrs,
10
- children
11
- }) {
12
- switch (tag) {
13
- case "title":
14
- return createComponent(Title, mergeProps(attrs, {
15
- children
16
- }));
17
- case "meta":
18
- return createComponent(Meta, attrs);
19
- case "link":
20
- return createComponent(Link, attrs);
21
- case "style":
22
- return createComponent(Style, mergeProps(attrs, {
23
- children
24
- }));
25
- case "script":
26
- return createComponent(Script, {
27
- attrs,
28
- children
29
- });
30
- default:
31
- return null;
32
- }
8
+ function Asset({ tag, attrs, children }) {
9
+ switch (tag) {
10
+ case "title": return createComponent(Title, mergeProps(attrs, { children }));
11
+ case "meta": return createComponent(Meta, attrs);
12
+ case "link": return createComponent(Link, attrs);
13
+ case "style": return createComponent(Style, mergeProps(attrs, { children }));
14
+ case "script": return createComponent(Script, {
15
+ attrs,
16
+ children
17
+ });
18
+ default: return null;
19
+ }
33
20
  }
34
- function Script({
35
- attrs,
36
- children
37
- }) {
38
- const router = useRouter();
39
- const dataScript = typeof attrs?.type === "string" && attrs.type !== "" && attrs.type !== "text/javascript" && attrs.type !== "module";
40
- onMount(() => {
41
- if (dataScript) return;
42
- if (attrs?.src) {
43
- const normSrc = (() => {
44
- try {
45
- const base = document.baseURI || window.location.href;
46
- return new URL(attrs.src, base).href;
47
- } catch {
48
- return attrs.src;
49
- }
50
- })();
51
- const existingScript = Array.from(document.querySelectorAll("script[src]")).find((el) => el.src === normSrc);
52
- if (existingScript) {
53
- return;
54
- }
55
- const script = document.createElement("script");
56
- for (const [key, value] of Object.entries(attrs)) {
57
- if (value !== void 0 && value !== false) {
58
- script.setAttribute(key, typeof value === "boolean" ? "" : String(value));
59
- }
60
- }
61
- document.head.appendChild(script);
62
- onCleanup(() => {
63
- if (script.parentNode) {
64
- script.parentNode.removeChild(script);
65
- }
66
- });
67
- }
68
- if (typeof children === "string") {
69
- const typeAttr = typeof attrs?.type === "string" ? attrs.type : "text/javascript";
70
- const nonceAttr = typeof attrs?.nonce === "string" ? attrs.nonce : void 0;
71
- const existingScript = Array.from(document.querySelectorAll("script:not([src])")).find((el) => {
72
- if (!(el instanceof HTMLScriptElement)) return false;
73
- const sType = el.getAttribute("type") ?? "text/javascript";
74
- const sNonce = el.getAttribute("nonce") ?? void 0;
75
- return el.textContent === children && sType === typeAttr && sNonce === nonceAttr;
76
- });
77
- if (existingScript) {
78
- return;
79
- }
80
- const script = document.createElement("script");
81
- script.textContent = children;
82
- if (attrs) {
83
- for (const [key, value] of Object.entries(attrs)) {
84
- if (value !== void 0 && value !== false) {
85
- script.setAttribute(key, typeof value === "boolean" ? "" : String(value));
86
- }
87
- }
88
- }
89
- document.head.appendChild(script);
90
- onCleanup(() => {
91
- if (script.parentNode) {
92
- script.parentNode.removeChild(script);
93
- }
94
- });
95
- }
96
- });
97
- if (!(isServer ?? router.isServer)) {
98
- if (dataScript && typeof children === "string") {
99
- return (() => {
100
- var _el$ = _tmpl$();
101
- spread(_el$, mergeProps(attrs, {
102
- "innerHTML": children
103
- }), false, false);
104
- return _el$;
105
- })();
106
- }
107
- return null;
108
- }
109
- if (attrs?.src && typeof attrs.src === "string") {
110
- return (() => {
111
- var _el$2 = _tmpl$();
112
- spread(_el$2, attrs, false, false);
113
- return _el$2;
114
- })();
115
- }
116
- if (typeof children === "string") {
117
- return (() => {
118
- var _el$3 = _tmpl$();
119
- spread(_el$3, mergeProps(attrs, {
120
- "innerHTML": children
121
- }), false, false);
122
- return _el$3;
123
- })();
124
- }
125
- return null;
21
+ function Script({ attrs, children }) {
22
+ const router = useRouter();
23
+ const dataScript = typeof attrs?.type === "string" && attrs.type !== "" && attrs.type !== "text/javascript" && attrs.type !== "module";
24
+ onMount(() => {
25
+ if (dataScript) return;
26
+ if (attrs?.src) {
27
+ const normSrc = (() => {
28
+ try {
29
+ const base = document.baseURI || window.location.href;
30
+ return new URL(attrs.src, base).href;
31
+ } catch {
32
+ return attrs.src;
33
+ }
34
+ })();
35
+ if (Array.from(document.querySelectorAll("script[src]")).find((el) => el.src === normSrc)) return;
36
+ const script = document.createElement("script");
37
+ for (const [key, value] of Object.entries(attrs)) if (value !== void 0 && value !== false) script.setAttribute(key, typeof value === "boolean" ? "" : String(value));
38
+ document.head.appendChild(script);
39
+ onCleanup(() => {
40
+ if (script.parentNode) script.parentNode.removeChild(script);
41
+ });
42
+ }
43
+ if (typeof children === "string") {
44
+ const typeAttr = typeof attrs?.type === "string" ? attrs.type : "text/javascript";
45
+ const nonceAttr = typeof attrs?.nonce === "string" ? attrs.nonce : void 0;
46
+ if (Array.from(document.querySelectorAll("script:not([src])")).find((el) => {
47
+ if (!(el instanceof HTMLScriptElement)) return false;
48
+ const sType = el.getAttribute("type") ?? "text/javascript";
49
+ const sNonce = el.getAttribute("nonce") ?? void 0;
50
+ return el.textContent === children && sType === typeAttr && sNonce === nonceAttr;
51
+ })) return;
52
+ const script = document.createElement("script");
53
+ script.textContent = children;
54
+ if (attrs) {
55
+ for (const [key, value] of Object.entries(attrs)) if (value !== void 0 && value !== false) script.setAttribute(key, typeof value === "boolean" ? "" : String(value));
56
+ }
57
+ document.head.appendChild(script);
58
+ onCleanup(() => {
59
+ if (script.parentNode) script.parentNode.removeChild(script);
60
+ });
61
+ }
62
+ });
63
+ if (!(isServer ?? router.isServer)) {
64
+ if (dataScript && typeof children === "string") return (() => {
65
+ var _el$ = _tmpl$();
66
+ spread(_el$, mergeProps(attrs, { "innerHTML": children }), false, false);
67
+ return _el$;
68
+ })();
69
+ return null;
70
+ }
71
+ if (attrs?.src && typeof attrs.src === "string") return (() => {
72
+ var _el$2 = _tmpl$();
73
+ spread(_el$2, attrs, false, false);
74
+ return _el$2;
75
+ })();
76
+ if (typeof children === "string") return (() => {
77
+ var _el$3 = _tmpl$();
78
+ spread(_el$3, mergeProps(attrs, { "innerHTML": children }), false, false);
79
+ return _el$3;
80
+ })();
81
+ return null;
126
82
  }
127
- export {
128
- Asset
129
- };
130
- //# sourceMappingURL=Asset.js.map
83
+ //#endregion
84
+ export { Asset };
85
+
86
+ //# sourceMappingURL=Asset.js.map
@@ -1 +1 @@
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 { isServer } from '@tanstack/router-core/isServer'\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}>{children}</Style>\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 const dataScript =\n typeof attrs?.type === 'string' &&\n attrs.type !== '' &&\n attrs.type !== 'text/javascript' &&\n attrs.type !== 'module'\n\n onMount(() => {\n if (dataScript) return\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\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 (!(isServer ?? router.isServer)) {\n if (dataScript && typeof children === 'string') {\n return <script {...attrs} innerHTML={children} />\n }\n\n // render an empty script on the client just to avoid hydration errors\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","Script","router","useRouter","dataScript","type","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","nonceAttr","nonce","HTMLScriptElement","sType","getAttribute","sNonce","textContent","isServer","_el$","_tmpl$","_$spread","_el$2","_el$3"],"mappings":"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"}
1
+ {"version":3,"file":"Asset.js","names":["Link","Meta","Style","Title","onCleanup","onMount","isServer","useRouter","RouterManagedTag","JSX","Asset","tag","attrs","children","Element","_$createComponent","_$mergeProps","Script","ScriptAttrs","key","src","router","dataScript","type","normSrc","base","document","baseURI","window","location","href","URL","existingScript","Array","from","querySelectorAll","find","el","HTMLScriptElement","script","createElement","value","Object","entries","undefined","setAttribute","String","head","appendChild","parentNode","removeChild","typeAttr","nonceAttr","nonce","sType","getAttribute","sNonce","textContent","_el$","_tmpl$","_$spread","_el$2","_el$3"],"sources":["../../src/Asset.tsx"],"sourcesContent":["import { Link, Meta, Style, Title } from '@solidjs/meta'\nimport { onCleanup, onMount } from 'solid-js'\nimport { isServer } from '@tanstack/router-core/isServer'\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}>{children}</Style>\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 const dataScript =\n typeof attrs?.type === 'string' &&\n attrs.type !== '' &&\n attrs.type !== 'text/javascript' &&\n attrs.type !== 'module'\n\n onMount(() => {\n if (dataScript) return\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\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 (!(isServer ?? router.isServer)) {\n if (dataScript && typeof children === 'string') {\n return <script {...attrs} innerHTML={children} />\n }\n\n // render an empty script on the client just to avoid hydration errors\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"],"mappings":"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"}
@@ -1,56 +1,52 @@
1
- import { createComponent, Dynamic, template, insert, memo, delegateEvents } from "solid-js/web";
1
+ import { Dynamic, createComponent, delegateEvents, insert, memo, template } from "solid-js/web";
2
2
  import * as Solid from "solid-js";
3
+ //#region src/CatchBoundary.tsx
3
4
  var _tmpl$ = /* @__PURE__ */ template(`<div style=padding:.5rem;max-width:100%><div style=display:flex;align-items:center;gap:.5rem><strong style=font-size:1rem>Something went wrong!</strong><button style="appearance:none;font-size:.6em;border:1px solid currentColor;padding:.1rem .2rem;font-weight:bold;border-radius:.25rem"></button></div><div style=height:.25rem>`), _tmpl$2 = /* @__PURE__ */ template(`<div><pre style="font-size:.7em;border:1px solid red;border-radius:.25rem;padding:.3rem;color:red;overflow:auto">`), _tmpl$3 = /* @__PURE__ */ template(`<code>`);
4
5
  function CatchBoundary(props) {
5
- return createComponent(Solid.ErrorBoundary, {
6
- fallback: (error, reset) => {
7
- props.onCatch?.(error);
8
- Solid.createEffect(Solid.on([props.getResetKey], () => reset(), {
9
- defer: true
10
- }));
11
- return createComponent(Dynamic, {
12
- get component() {
13
- return props.errorComponent ?? ErrorComponent;
14
- },
15
- error,
16
- reset
17
- });
18
- },
19
- get children() {
20
- return props.children;
21
- }
22
- });
6
+ return createComponent(Solid.ErrorBoundary, {
7
+ fallback: (error, reset) => {
8
+ props.onCatch?.(error);
9
+ Solid.createEffect(Solid.on([props.getResetKey], () => reset(), { defer: true }));
10
+ return createComponent(Dynamic, {
11
+ get component() {
12
+ return props.errorComponent ?? ErrorComponent;
13
+ },
14
+ error,
15
+ reset
16
+ });
17
+ },
18
+ get children() {
19
+ return props.children;
20
+ }
21
+ });
23
22
  }
24
- function ErrorComponent({
25
- error
26
- }) {
27
- const [show, setShow] = Solid.createSignal(process.env.NODE_ENV !== "production");
28
- return (() => {
29
- var _el$ = _tmpl$(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.nextSibling;
30
- _el$2.nextSibling;
31
- _el$4.$$click = () => setShow((d) => !d);
32
- insert(_el$4, () => show() ? "Hide Error" : "Show Error");
33
- insert(_el$, (() => {
34
- var _c$ = memo(() => !!show());
35
- return () => _c$() ? (() => {
36
- var _el$6 = _tmpl$2(), _el$7 = _el$6.firstChild;
37
- insert(_el$7, (() => {
38
- var _c$2 = memo(() => !!error.message);
39
- return () => _c$2() ? (() => {
40
- var _el$8 = _tmpl$3();
41
- insert(_el$8, () => error.message);
42
- return _el$8;
43
- })() : null;
44
- })());
45
- return _el$6;
46
- })() : null;
47
- })(), null);
48
- return _el$;
49
- })();
23
+ function ErrorComponent({ error }) {
24
+ const [show, setShow] = Solid.createSignal(process.env.NODE_ENV !== "production");
25
+ return (() => {
26
+ var _el$ = _tmpl$(), _el$2 = _el$.firstChild, _el$4 = _el$2.firstChild.nextSibling;
27
+ _el$2.nextSibling;
28
+ _el$4.$$click = () => setShow((d) => !d);
29
+ insert(_el$4, () => show() ? "Hide Error" : "Show Error");
30
+ insert(_el$, (() => {
31
+ var _c$ = memo(() => !!show());
32
+ return () => _c$() ? (() => {
33
+ var _el$6 = _tmpl$2(), _el$7 = _el$6.firstChild;
34
+ insert(_el$7, (() => {
35
+ var _c$2 = memo(() => !!error.message);
36
+ return () => _c$2() ? (() => {
37
+ var _el$8 = _tmpl$3();
38
+ insert(_el$8, () => error.message);
39
+ return _el$8;
40
+ })() : null;
41
+ })());
42
+ return _el$6;
43
+ })() : null;
44
+ })(), null);
45
+ return _el$;
46
+ })();
50
47
  }
51
48
  delegateEvents(["click"]);
52
- export {
53
- CatchBoundary,
54
- ErrorComponent
55
- };
56
- //# sourceMappingURL=CatchBoundary.js.map
49
+ //#endregion
50
+ export { CatchBoundary, ErrorComponent };
51
+
52
+ //# sourceMappingURL=CatchBoundary.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"CatchBoundary.js","sources":["../../src/CatchBoundary.tsx"],"sourcesContent":["import * as Solid from 'solid-js'\nimport { Dynamic } from 'solid-js/web'\nimport type { ErrorRouteComponent } from './route'\n\nexport function CatchBoundary(\n props: {\n getResetKey: () => number | string\n children: Solid.JSX.Element\n errorComponent?: ErrorRouteComponent\n onCatch?: (error: Error) => void\n } & Solid.ParentProps,\n) {\n return (\n <Solid.ErrorBoundary\n fallback={(error, reset) => {\n props.onCatch?.(error)\n\n Solid.createEffect(\n Solid.on([props.getResetKey], () => reset(), { defer: true }),\n )\n\n return (\n <Dynamic\n component={props.errorComponent ?? ErrorComponent}\n error={error}\n reset={reset}\n />\n )\n }}\n >\n {props.children}\n </Solid.ErrorBoundary>\n )\n}\n\nexport function ErrorComponent({ error }: { error: any }) {\n const [show, setShow] = Solid.createSignal(\n process.env.NODE_ENV !== 'production',\n )\n\n return (\n <div style={{ padding: '.5rem', 'max-width': '100%' }}>\n <div style={{ display: 'flex', 'align-items': 'center', gap: '.5rem' }}>\n <strong style={{ 'font-size': '1rem' }}>Something went wrong!</strong>\n <button\n style={{\n appearance: 'none',\n 'font-size': '.6em',\n border: '1px solid currentColor',\n padding: '.1rem .2rem',\n 'font-weight': 'bold',\n 'border-radius': '.25rem',\n }}\n onClick={() => setShow((d) => !d)}\n >\n {show() ? 'Hide Error' : 'Show Error'}\n </button>\n </div>\n <div style={{ height: '.25rem' }} />\n {show() ? (\n <div>\n <pre\n style={{\n 'font-size': '.7em',\n border: '1px solid red',\n 'border-radius': '.25rem',\n padding: '.3rem',\n color: 'red',\n overflow: 'auto',\n }}\n >\n {error.message ? <code>{error.message}</code> : null}\n </pre>\n </div>\n ) : null}\n </div>\n )\n}\n"],"names":["CatchBoundary","props","_$createComponent","Solid","ErrorBoundary","fallback","error","reset","onCatch","createEffect","on","getResetKey","defer","Dynamic","component","errorComponent","ErrorComponent","children","show","setShow","createSignal","process","env","NODE_ENV","_el$","_tmpl$","_el$2","firstChild","_el$3","_el$4","nextSibling","$$click","d","_$insert","_c$","_$memo","_el$6","_tmpl$2","_el$7","_c$2","message","_el$8","_tmpl$3","_$delegateEvents"],"mappings":";;;AAIO,SAASA,cACdC,OAMA;AACA,SAAAC,gBACGC,MAAMC,eAAa;AAAA,IAClBC,UAAUA,CAACC,OAAOC,UAAU;AAC1BN,YAAMO,UAAUF,KAAK;AAErBH,YAAMM,aACJN,MAAMO,GAAG,CAACT,MAAMU,WAAW,GAAG,MAAMJ,SAAS;AAAA,QAAEK,OAAO;AAAA,MAAA,CAAM,CAC9D;AAEA,aAAAV,gBACGW,SAAO;AAAA,QAAA,IACNC,YAAS;AAAA,iBAAEb,MAAMc,kBAAkBC;AAAAA,QAAc;AAAA,QACjDV;AAAAA,QACAC;AAAAA,MAAAA,CAAY;AAAA,IAGlB;AAAA,IAAC,IAAAU,WAAA;AAAA,aAEAhB,MAAMgB;AAAAA,IAAQ;AAAA,EAAA,CAAA;AAGrB;AAEO,SAASD,eAAe;AAAA,EAAEV;AAAsB,GAAG;AACxD,QAAM,CAACY,MAAMC,OAAO,IAAIhB,MAAMiB,aAC5BC,QAAQC,IAAIC,aAAa,YAC3B;AAEA,UAAA,MAAA;AAAA,QAAAC,OAAAC,OAAAA,GAAAC,QAAAF,KAAAG,YAAAC,QAAAF,MAAAC,YAAAE,QAAAD,MAAAE;AAAAJ,UAAAI;AAAAD,UAAAE,UAaiB,MAAMZ,QAASa,CAAAA,MAAM,CAACA,CAAC;AAACC,WAAAJ,OAAA,MAEhCX,KAAAA,IAAS,eAAe,YAAY;AAAAe,WAAAT,OAAA,MAAA;AAAA,UAAAU,MAAAC,KAAA,MAAA,CAAA,CAIxCjB,MAAM;AAAA,aAAA,MAANgB,IAAAA,KAAA,MAAA;AAAA,YAAAE,QAAAC,QAAAA,GAAAC,QAAAF,MAAAT;AAAAM,eAAAK,QAAA,MAAA;AAAA,cAAAC,OAAAJ,KAAA,MAAA,CAAA,CAYM7B,MAAMkC,OAAO;AAAA,iBAAA,MAAbD,KAAAA,KAAA,MAAA;AAAA,gBAAAE,QAAAC,QAAAA;AAAAT,mBAAAQ,OAAA,MAAuBnC,MAAMkC,OAAO;AAAA,mBAAAC;AAAAA,UAAA,OAAW;AAAA,QAAI,IAAA;AAAA,eAAAL;AAAAA,MAAA,OAGtD;AAAA,IAAI,GAAA,GAAA,IAAA;AAAA,WAAAZ;AAAAA,EAAA,GAAA;AAGd;AAACmB,eAAA,CAAA,OAAA,CAAA;"}
1
+ {"version":3,"file":"CatchBoundary.js","names":["Solid","Dynamic","ErrorRouteComponent","CatchBoundary","props","getResetKey","children","JSX","Element","errorComponent","onCatch","error","Error","ParentProps","_$createComponent","ErrorBoundary","fallback","reset","createEffect","on","defer","component","ErrorComponent","show","setShow","createSignal","process","env","NODE_ENV","_el$","_tmpl$","_el$2","firstChild","_el$3","_el$4","nextSibling","_el$5","$$click","d","_$insert","_c$","_$memo","_el$6","_tmpl$2","_el$7","_c$2","message","_el$8","_tmpl$3","_$delegateEvents"],"sources":["../../src/CatchBoundary.tsx"],"sourcesContent":["import * as Solid from 'solid-js'\nimport { Dynamic } from 'solid-js/web'\nimport type { ErrorRouteComponent } from './route'\n\nexport function CatchBoundary(\n props: {\n getResetKey: () => number | string\n children: Solid.JSX.Element\n errorComponent?: ErrorRouteComponent\n onCatch?: (error: Error) => void\n } & Solid.ParentProps,\n) {\n return (\n <Solid.ErrorBoundary\n fallback={(error, reset) => {\n props.onCatch?.(error)\n\n Solid.createEffect(\n Solid.on([props.getResetKey], () => reset(), { defer: true }),\n )\n\n return (\n <Dynamic\n component={props.errorComponent ?? ErrorComponent}\n error={error}\n reset={reset}\n />\n )\n }}\n >\n {props.children}\n </Solid.ErrorBoundary>\n )\n}\n\nexport function ErrorComponent({ error }: { error: any }) {\n const [show, setShow] = Solid.createSignal(\n process.env.NODE_ENV !== 'production',\n )\n\n return (\n <div style={{ padding: '.5rem', 'max-width': '100%' }}>\n <div style={{ display: 'flex', 'align-items': 'center', gap: '.5rem' }}>\n <strong style={{ 'font-size': '1rem' }}>Something went wrong!</strong>\n <button\n style={{\n appearance: 'none',\n 'font-size': '.6em',\n border: '1px solid currentColor',\n padding: '.1rem .2rem',\n 'font-weight': 'bold',\n 'border-radius': '.25rem',\n }}\n onClick={() => setShow((d) => !d)}\n >\n {show() ? 'Hide Error' : 'Show Error'}\n </button>\n </div>\n <div style={{ height: '.25rem' }} />\n {show() ? (\n <div>\n <pre\n style={{\n 'font-size': '.7em',\n border: '1px solid red',\n 'border-radius': '.25rem',\n padding: '.3rem',\n color: 'red',\n overflow: 'auto',\n }}\n >\n {error.message ? <code>{error.message}</code> : null}\n </pre>\n </div>\n ) : null}\n </div>\n )\n}\n"],"mappings":";;;;AAIA,SAAgBG,cACdC,OAMA;AACA,QAAAU,gBACGd,MAAMe,eAAa;EAClBC,WAAWL,OAAOM,UAAU;AAC1Bb,SAAMM,UAAUC,MAAM;AAEtBX,SAAMkB,aACJlB,MAAMmB,GAAG,CAACf,MAAMC,YAAY,QAAQY,OAAO,EAAE,EAAEG,OAAO,MAAM,CAC9D,CAAC;AAED,UAAAN,gBACGb,SAAO;IAAA,IACNoB,YAAS;AAAA,YAAEjB,MAAMK,kBAAkBa;;IAC5BX;IACAM;IAAK,CAAA;;EAGjB,IAAAX,WAAA;AAAA,UAEAF,MAAME;;EAAQ,CAAA;;AAKrB,SAAgBgB,eAAe,EAAEX,SAAyB;CACxD,MAAM,CAACY,MAAMC,WAAWxB,MAAMyB,aAAAA,QAAAA,IAAAA,aACH,aAC1B;AAED,eAAA;EAAA,IAAAI,OAAAC,QAAA,EAAAC,QAAAF,KAAAG,YAAAE,QAAAH,MAAAC,WAAAG;AAAAJ,QAAAI;AAAAD,QAAAG,gBAauBb,SAASc,MAAM,CAACA,EAAE;AAAAC,SAAAL,aAEhCX,MAAM,GAAG,eAAe,aAAY;AAAAgB,SAAAV,aAAA;GAAA,IAAAW,MAAAC,WAAA,CAAA,CAIxClB,MAAM,CAAA;AAAA,gBAANiB,KAAA,UAAA;IAAA,IAAAE,QAAAC,SAAA,EAAAC,QAAAF,MAAAV;AAAAO,WAAAK,cAAA;KAAA,IAAAC,OAAAJ,WAAA,CAAA,CAYM9B,MAAMmC,QAAO;AAAA,kBAAbD,MAAA,UAAA;MAAA,IAAAE,QAAAC,SAAA;AAAAT,aAAAQ,aAAuBpC,MAAMmC,QAAO;AAAA,aAAAC;SAAA,GAAW;QAAI,CAAA;AAAA,WAAAL;OAAA,GAGtD;MAAI,EAAA,KAAA;AAAA,SAAAb;KAAA;;AAGboB,eAAA,CAAA,QAAA,CAAA"}
@@ -1,28 +1,64 @@
1
1
  import { createComponent, memo } from "solid-js/web";
2
2
  import * as Solid from "solid-js";
3
+ //#region src/ClientOnly.tsx
4
+ /**
5
+ * Render the children only after the JS has loaded client-side. Use an optional
6
+ * fallback component if the JS is not yet loaded.
7
+ *
8
+ * @example
9
+ * Render a Chart component if JS loads, renders a simple FakeChart
10
+ * component server-side or if there is no JS. The FakeChart can have only the
11
+ * UI without the behavior or be a loading spinner or skeleton.
12
+ *
13
+ * ```tsx
14
+ * return (
15
+ * <ClientOnly fallback={<FakeChart />}>
16
+ * <Chart />
17
+ * </ClientOnly>
18
+ * )
19
+ * ```
20
+ */
3
21
  function ClientOnly(props) {
4
- const hydrated = useHydrated();
5
- return createComponent(Solid.Show, {
6
- get when() {
7
- return hydrated();
8
- },
9
- get fallback() {
10
- return props.fallback ?? null;
11
- },
12
- get children() {
13
- return memo(() => props.children);
14
- }
15
- });
22
+ const hydrated = useHydrated();
23
+ return createComponent(Solid.Show, {
24
+ get when() {
25
+ return hydrated();
26
+ },
27
+ get fallback() {
28
+ return props.fallback ?? null;
29
+ },
30
+ get children() {
31
+ return memo(() => props.children);
32
+ }
33
+ });
16
34
  }
35
+ /**
36
+ * Return a boolean indicating if the JS has been hydrated already.
37
+ * When doing Server-Side Rendering, the result will always be false.
38
+ * When doing Client-Side Rendering, the result will always be false on the
39
+ * first render and true from then on. Even if a new component renders it will
40
+ * always start with true.
41
+ *
42
+ * @example
43
+ * ```tsx
44
+ * // Disable a button that needs JS to work.
45
+ * const hydrated = useHydrated()
46
+ * return (
47
+ * <button type="button" disabled={!hydrated()} onClick={doSomethingCustom}>
48
+ * Click me
49
+ * </button>
50
+ * )
51
+ * ```
52
+ * @returns True if the JS has been hydrated already, false otherwise.
53
+ */
17
54
  function useHydrated() {
18
- const [hydrated, setHydrated] = Solid.createSignal(false);
19
- Solid.onMount(() => {
20
- setHydrated(true);
21
- });
22
- return hydrated;
55
+ const [hydrated, setHydrated] = Solid.createSignal(false);
56
+ Solid.onMount(() => {
57
+ setHydrated(true);
58
+ });
59
+ return hydrated;
23
60
  }
24
- export {
25
- ClientOnly,
26
- useHydrated
27
- };
28
- //# sourceMappingURL=ClientOnly.js.map
61
+ //#endregion
62
+ export { ClientOnly, useHydrated };
63
+
64
+ //# sourceMappingURL=ClientOnly.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ClientOnly.js","sources":["../../src/ClientOnly.tsx"],"sourcesContent":["import * as Solid from 'solid-js'\n\nexport interface ClientOnlyProps {\n /**\n * The children to render when the JS is loaded.\n */\n children: Solid.JSX.Element\n /**\n * The fallback component to render if the JS is not yet loaded.\n */\n fallback?: Solid.JSX.Element\n}\n\n/**\n * Render the children only after the JS has loaded client-side. Use an optional\n * fallback component if the JS is not yet loaded.\n *\n * @example\n * Render a Chart component if JS loads, renders a simple FakeChart\n * component server-side or if there is no JS. The FakeChart can have only the\n * UI without the behavior or be a loading spinner or skeleton.\n *\n * ```tsx\n * return (\n * <ClientOnly fallback={<FakeChart />}>\n * <Chart />\n * </ClientOnly>\n * )\n * ```\n */\nexport function ClientOnly(props: ClientOnlyProps) {\n const hydrated = useHydrated()\n return (\n <Solid.Show when={hydrated()} fallback={props.fallback ?? null}>\n <>{props.children}</>\n </Solid.Show>\n )\n}\n\n/**\n * Return a boolean indicating if the JS has been hydrated already.\n * When doing Server-Side Rendering, the result will always be false.\n * When doing Client-Side Rendering, the result will always be false on the\n * first render and true from then on. Even if a new component renders it will\n * always start with true.\n *\n * @example\n * ```tsx\n * // Disable a button that needs JS to work.\n * const hydrated = useHydrated()\n * return (\n * <button type=\"button\" disabled={!hydrated()} onClick={doSomethingCustom}>\n * Click me\n * </button>\n * )\n * ```\n * @returns True if the JS has been hydrated already, false otherwise.\n */\nexport function useHydrated(): Solid.Accessor<boolean> {\n const [hydrated, setHydrated] = Solid.createSignal(false)\n Solid.onMount(() => {\n setHydrated(true)\n })\n return hydrated\n}\n"],"names":["ClientOnly","props","hydrated","useHydrated","_$createComponent","Solid","Show","when","fallback","children","_$memo","setHydrated","createSignal","onMount"],"mappings":";;AA8BO,SAASA,WAAWC,OAAwB;AACjD,QAAMC,WAAWC,YAAAA;AACjB,SAAAC,gBACGC,MAAMC,MAAI;AAAA,IAAA,IAACC,OAAI;AAAA,aAAEL,SAAAA;AAAAA,IAAU;AAAA,IAAA,IAAEM,WAAQ;AAAA,aAAEP,MAAMO,YAAY;AAAA,IAAI;AAAA,IAAA,IAAAC,WAAA;AAAA,aAAAC,KAAA,MACzDT,MAAMQ,QAAQ;AAAA,IAAA;AAAA,EAAA,CAAA;AAGvB;AAqBO,SAASN,cAAuC;AACrD,QAAM,CAACD,UAAUS,WAAW,IAAIN,MAAMO,aAAa,KAAK;AACxDP,QAAMQ,QAAQ,MAAM;AAClBF,gBAAY,IAAI;AAAA,EAClB,CAAC;AACD,SAAOT;AACT;"}
1
+ {"version":3,"file":"ClientOnly.js","names":["Solid","ClientOnlyProps","children","JSX","Element","fallback","ClientOnly","props","hydrated","useHydrated","_$createComponent","Show","when","_$memo","Accessor","setHydrated","createSignal","onMount"],"sources":["../../src/ClientOnly.tsx"],"sourcesContent":["import * as Solid from 'solid-js'\n\nexport interface ClientOnlyProps {\n /**\n * The children to render when the JS is loaded.\n */\n children: Solid.JSX.Element\n /**\n * The fallback component to render if the JS is not yet loaded.\n */\n fallback?: Solid.JSX.Element\n}\n\n/**\n * Render the children only after the JS has loaded client-side. Use an optional\n * fallback component if the JS is not yet loaded.\n *\n * @example\n * Render a Chart component if JS loads, renders a simple FakeChart\n * component server-side or if there is no JS. The FakeChart can have only the\n * UI without the behavior or be a loading spinner or skeleton.\n *\n * ```tsx\n * return (\n * <ClientOnly fallback={<FakeChart />}>\n * <Chart />\n * </ClientOnly>\n * )\n * ```\n */\nexport function ClientOnly(props: ClientOnlyProps) {\n const hydrated = useHydrated()\n return (\n <Solid.Show when={hydrated()} fallback={props.fallback ?? null}>\n <>{props.children}</>\n </Solid.Show>\n )\n}\n\n/**\n * Return a boolean indicating if the JS has been hydrated already.\n * When doing Server-Side Rendering, the result will always be false.\n * When doing Client-Side Rendering, the result will always be false on the\n * first render and true from then on. Even if a new component renders it will\n * always start with true.\n *\n * @example\n * ```tsx\n * // Disable a button that needs JS to work.\n * const hydrated = useHydrated()\n * return (\n * <button type=\"button\" disabled={!hydrated()} onClick={doSomethingCustom}>\n * Click me\n * </button>\n * )\n * ```\n * @returns True if the JS has been hydrated already, false otherwise.\n */\nexport function useHydrated(): Solid.Accessor<boolean> {\n const [hydrated, setHydrated] = Solid.createSignal(false)\n Solid.onMount(() => {\n setHydrated(true)\n })\n return hydrated\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AA8BA,SAAgBM,WAAWC,OAAwB;CACjD,MAAMC,WAAWC,aAAa;AAC9B,QAAAC,gBACGV,MAAMW,MAAI;EAAA,IAACC,OAAI;AAAA,UAAEJ,UAAU;;EAAA,IAAEH,WAAQ;AAAA,UAAEE,MAAMF,YAAY;;EAAI,IAAAH,WAAA;AAAA,UAAAW,WACzDN,MAAML,SAAQ;;EAAA,CAAA;;;;;;;;;;;;;;;;;;;;;AAwBvB,SAAgBO,cAAuC;CACrD,MAAM,CAACD,UAAUO,eAAef,MAAMgB,aAAa,MAAM;AACzDhB,OAAMiB,cAAc;AAClBF,cAAY,KAAK;GACjB;AACF,QAAOP"}
@@ -1,36 +1,40 @@
1
- import { createComponent } from "solid-js/web";
2
- import { MetaProvider } from "@solidjs/meta";
3
- import { createEffect, createMemo, For } from "solid-js";
4
- import { Asset } from "./Asset.js";
5
1
  import { useHydrated } from "./ClientOnly.js";
2
+ import { Asset } from "./Asset.js";
6
3
  import { useTags } from "./headContentUtils.js";
7
- const DEV_STYLES_ATTR = "data-tanstack-router-dev-styles";
4
+ import { createComponent } from "solid-js/web";
5
+ import { For, createEffect, createMemo } from "solid-js";
6
+ import { MetaProvider } from "@solidjs/meta";
7
+ //#region src/HeadContent.dev.tsx
8
+ var DEV_STYLES_ATTR = "data-tanstack-router-dev-styles";
9
+ /**
10
+ * @description The `HeadContent` component is used to render meta tags, links, and scripts for the current route.
11
+ * When using full document hydration (hydrating from `<html>`), this component should be rendered in the `<body>`
12
+ * to ensure it's part of the reactive tree and updates correctly during client-side navigation.
13
+ * The component uses portals internally to render content into the `<head>` element.
14
+ *
15
+ * Development version: filters out dev styles link after hydration and
16
+ * includes a fallback cleanup effect for hydration mismatch cases.
17
+ */
8
18
  function HeadContent() {
9
- const tags = useTags();
10
- const hydrated = useHydrated();
11
- createEffect(() => {
12
- if (hydrated()) {
13
- document.querySelectorAll(`link[${DEV_STYLES_ATTR}]`).forEach((el) => el.remove());
14
- }
15
- });
16
- const filteredTags = createMemo(() => {
17
- if (hydrated()) {
18
- return tags().filter((tag) => !tag.attrs?.[DEV_STYLES_ATTR]);
19
- }
20
- return tags();
21
- });
22
- return createComponent(MetaProvider, {
23
- get children() {
24
- return createComponent(For, {
25
- get each() {
26
- return filteredTags();
27
- },
28
- children: (tag) => createComponent(Asset, tag)
29
- });
30
- }
31
- });
19
+ const tags = useTags();
20
+ const hydrated = useHydrated();
21
+ createEffect(() => {
22
+ if (hydrated()) document.querySelectorAll(`link[${DEV_STYLES_ATTR}]`).forEach((el) => el.remove());
23
+ });
24
+ const filteredTags = createMemo(() => {
25
+ if (hydrated()) return tags().filter((tag) => !tag.attrs?.[DEV_STYLES_ATTR]);
26
+ return tags();
27
+ });
28
+ return createComponent(MetaProvider, { get children() {
29
+ return createComponent(For, {
30
+ get each() {
31
+ return filteredTags();
32
+ },
33
+ children: (tag) => createComponent(Asset, tag)
34
+ });
35
+ } });
32
36
  }
33
- export {
34
- HeadContent
35
- };
36
- //# sourceMappingURL=HeadContent.dev.js.map
37
+ //#endregion
38
+ export { HeadContent };
39
+
40
+ //# sourceMappingURL=HeadContent.dev.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"HeadContent.dev.js","sources":["../../src/HeadContent.dev.tsx"],"sourcesContent":["import { MetaProvider } from '@solidjs/meta'\nimport { For, createEffect, createMemo } from 'solid-js'\nimport { Asset } from './Asset'\nimport { useHydrated } from './ClientOnly'\nimport { useTags } from './headContentUtils'\n\nconst DEV_STYLES_ATTR = 'data-tanstack-router-dev-styles'\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 *\n * Development version: filters out dev styles link after hydration and\n * includes a fallback cleanup effect for hydration mismatch cases.\n */\nexport function HeadContent() {\n const tags = useTags()\n const hydrated = useHydrated()\n\n // Fallback cleanup for hydration mismatch cases\n // Runs when hydration completes to remove any orphaned dev styles links from DOM\n createEffect(() => {\n if (hydrated()) {\n document\n .querySelectorAll(`link[${DEV_STYLES_ATTR}]`)\n .forEach((el) => el.remove())\n }\n })\n\n // Filter out dev styles after hydration\n const filteredTags = createMemo(() => {\n if (hydrated()) {\n return tags().filter((tag) => !tag.attrs?.[DEV_STYLES_ATTR])\n }\n return tags()\n })\n\n return (\n <MetaProvider>\n <For each={filteredTags()}>{(tag) => <Asset {...tag} />}</For>\n </MetaProvider>\n )\n}\n"],"names":["DEV_STYLES_ATTR","HeadContent","tags","useTags","hydrated","useHydrated","createEffect","document","querySelectorAll","forEach","el","remove","filteredTags","createMemo","filter","tag","attrs","_$createComponent","MetaProvider","children","For","each","Asset"],"mappings":";;;;;;AAMA,MAAMA,kBAAkB;AAWjB,SAASC,cAAc;AAC5B,QAAMC,OAAOC,QAAAA;AACb,QAAMC,WAAWC,YAAAA;AAIjBC,eAAa,MAAM;AACjB,QAAIF,YAAY;AACdG,eACGC,iBAAiB,QAAQR,eAAe,GAAG,EAC3CS,QAASC,CAAAA,OAAOA,GAAGC,OAAAA,CAAQ;AAAA,IAChC;AAAA,EACF,CAAC;AAGD,QAAMC,eAAeC,WAAW,MAAM;AACpC,QAAIT,YAAY;AACd,aAAOF,KAAAA,EAAOY,OAAQC,CAAAA,QAAQ,CAACA,IAAIC,QAAQhB,eAAe,CAAC;AAAA,IAC7D;AACA,WAAOE,KAAAA;AAAAA,EACT,CAAC;AAED,SAAAe,gBACGC,cAAY;AAAA,IAAA,IAAAC,WAAA;AAAA,aAAAF,gBACVG,KAAG;AAAA,QAAA,IAACC,OAAI;AAAA,iBAAET,aAAAA;AAAAA,QAAc;AAAA,QAAAO,UAAIJ,CAAAA,QAAGE,gBAAMK,OAAUP,GAAG;AAAA,MAAA,CAAI;AAAA,IAAA;AAAA,EAAA,CAAA;AAG7D;"}
1
+ {"version":3,"file":"HeadContent.dev.js","names":["MetaProvider","For","createEffect","createMemo","Asset","useHydrated","useTags","DEV_STYLES_ATTR","HeadContent","tags","hydrated","document","querySelectorAll","forEach","el","remove","filteredTags","filter","tag","attrs","_$createComponent","children","each"],"sources":["../../src/HeadContent.dev.tsx"],"sourcesContent":["import { MetaProvider } from '@solidjs/meta'\nimport { For, createEffect, createMemo } from 'solid-js'\nimport { Asset } from './Asset'\nimport { useHydrated } from './ClientOnly'\nimport { useTags } from './headContentUtils'\n\nconst DEV_STYLES_ATTR = 'data-tanstack-router-dev-styles'\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 *\n * Development version: filters out dev styles link after hydration and\n * includes a fallback cleanup effect for hydration mismatch cases.\n */\nexport function HeadContent() {\n const tags = useTags()\n const hydrated = useHydrated()\n\n // Fallback cleanup for hydration mismatch cases\n // Runs when hydration completes to remove any orphaned dev styles links from DOM\n createEffect(() => {\n if (hydrated()) {\n document\n .querySelectorAll(`link[${DEV_STYLES_ATTR}]`)\n .forEach((el) => el.remove())\n }\n })\n\n // Filter out dev styles after hydration\n const filteredTags = createMemo(() => {\n if (hydrated()) {\n return tags().filter((tag) => !tag.attrs?.[DEV_STYLES_ATTR])\n }\n return tags()\n })\n\n return (\n <MetaProvider>\n <For each={filteredTags()}>{(tag) => <Asset {...tag} />}</For>\n </MetaProvider>\n )\n}\n"],"mappings":";;;;;;;AAMA,IAAMO,kBAAkB;;;;;;;;;;AAWxB,SAAgBC,cAAc;CAC5B,MAAMC,OAAOH,SAAS;CACtB,MAAMI,WAAWL,aAAa;AAI9BH,oBAAmB;AACjB,MAAIQ,UAAU,CACZC,UACGC,iBAAiB,QAAQL,gBAAe,GAAI,CAC5CM,SAASC,OAAOA,GAAGC,QAAQ,CAAC;GAEjC;CAGF,MAAMC,eAAeb,iBAAiB;AACpC,MAAIO,UAAU,CACZ,QAAOD,MAAM,CAACQ,QAAQC,QAAQ,CAACA,IAAIC,QAAQZ,iBAAiB;AAE9D,SAAOE,MAAM;GACb;AAEF,QAAAW,gBACGpB,cAAY,EAAA,IAAAqB,WAAA;AAAA,SAAAD,gBACVnB,KAAG;GAAA,IAACqB,OAAI;AAAA,WAAEN,cAAc;;GAAAK,WAAIH,QAAGE,gBAAMhB,OAAUc,IAAG;GAAI,CAAA;IAAA,CAAA"}