@tanstack/vue-router 1.140.1 → 1.141.0

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 (150) hide show
  1. package/dist/esm/Asset.js +122 -8
  2. package/dist/esm/Asset.js.map +1 -1
  3. package/dist/esm/Body.d.ts +4 -0
  4. package/dist/esm/Body.js +26 -0
  5. package/dist/esm/Body.js.map +1 -0
  6. package/dist/esm/CatchBoundary.d.ts +1 -1
  7. package/dist/esm/CatchBoundary.js +8 -8
  8. package/dist/esm/CatchBoundary.js.map +1 -1
  9. package/dist/esm/Html.d.ts +4 -0
  10. package/dist/esm/Html.js +63 -0
  11. package/dist/esm/Html.js.map +1 -0
  12. package/dist/esm/Match.js +87 -49
  13. package/dist/esm/Match.js.map +1 -1
  14. package/dist/esm/Matches.js +3 -2
  15. package/dist/esm/Matches.js.map +1 -1
  16. package/dist/esm/RouterProvider.js +3 -0
  17. package/dist/esm/RouterProvider.js.map +1 -1
  18. package/dist/esm/ScriptOnce.d.ts +12 -5
  19. package/dist/esm/ScriptOnce.js +35 -15
  20. package/dist/esm/ScriptOnce.js.map +1 -1
  21. package/dist/esm/Scripts.d.ts +2 -1
  22. package/dist/esm/Scripts.js +101 -35
  23. package/dist/esm/Scripts.js.map +1 -1
  24. package/dist/esm/Transitioner.d.ts +16 -0
  25. package/dist/esm/Transitioner.js +136 -133
  26. package/dist/esm/Transitioner.js.map +1 -1
  27. package/dist/esm/awaited.d.ts +20 -5
  28. package/dist/esm/awaited.js +17 -20
  29. package/dist/esm/awaited.js.map +1 -1
  30. package/dist/esm/index.d.ts +2 -0
  31. package/dist/esm/index.js +4 -0
  32. package/dist/esm/index.js.map +1 -1
  33. package/dist/esm/lazyRouteComponent.js +2 -2
  34. package/dist/esm/lazyRouteComponent.js.map +1 -1
  35. package/dist/esm/link.js +27 -35
  36. package/dist/esm/link.js.map +1 -1
  37. package/dist/esm/scroll-restoration.d.ts +8 -1
  38. package/dist/esm/scroll-restoration.js +44 -12
  39. package/dist/esm/scroll-restoration.js.map +1 -1
  40. package/dist/esm/ssr/RouterClient.d.ts +15 -0
  41. package/dist/esm/ssr/RouterClient.js +46 -0
  42. package/dist/esm/ssr/RouterClient.js.map +1 -0
  43. package/dist/esm/ssr/RouterServer.d.ts +15 -0
  44. package/dist/esm/ssr/RouterServer.js +37 -0
  45. package/dist/esm/ssr/RouterServer.js.map +1 -0
  46. package/dist/esm/ssr/client.d.ts +1 -0
  47. package/dist/esm/ssr/client.js +5 -0
  48. package/dist/esm/ssr/client.js.map +1 -0
  49. package/dist/esm/ssr/defaultRenderHandler.d.ts +1 -0
  50. package/dist/esm/ssr/defaultRenderHandler.js +15 -0
  51. package/dist/esm/ssr/defaultRenderHandler.js.map +1 -0
  52. package/dist/esm/ssr/defaultStreamHandler.d.ts +1 -0
  53. package/dist/esm/ssr/defaultStreamHandler.js +17 -0
  54. package/dist/esm/ssr/defaultStreamHandler.js.map +1 -0
  55. package/dist/esm/ssr/renderRouterToStream.d.ts +8 -0
  56. package/dist/esm/ssr/renderRouterToStream.js +70 -0
  57. package/dist/esm/ssr/renderRouterToStream.js.map +1 -0
  58. package/dist/esm/ssr/renderRouterToString.d.ts +7 -0
  59. package/dist/esm/ssr/renderRouterToString.js +33 -0
  60. package/dist/esm/ssr/renderRouterToString.js.map +1 -0
  61. package/dist/esm/ssr/server.d.ts +6 -0
  62. package/dist/esm/ssr/server.js +14 -0
  63. package/dist/esm/ssr/server.js.map +1 -0
  64. package/dist/source/Asset.jsx +119 -7
  65. package/dist/source/Asset.jsx.map +1 -1
  66. package/dist/source/Body.d.ts +4 -0
  67. package/dist/source/Body.jsx +15 -0
  68. package/dist/source/Body.jsx.map +1 -0
  69. package/dist/source/CatchBoundary.d.ts +1 -1
  70. package/dist/source/CatchBoundary.jsx +10 -23
  71. package/dist/source/CatchBoundary.jsx.map +1 -1
  72. package/dist/source/Html.d.ts +4 -0
  73. package/dist/source/Html.jsx +56 -0
  74. package/dist/source/Html.jsx.map +1 -0
  75. package/dist/source/Match.jsx +119 -54
  76. package/dist/source/Match.jsx.map +1 -1
  77. package/dist/source/Matches.jsx +15 -3
  78. package/dist/source/Matches.jsx.map +1 -1
  79. package/dist/source/RouterProvider.jsx +5 -0
  80. package/dist/source/RouterProvider.jsx.map +1 -1
  81. package/dist/source/ScriptOnce.d.ts +12 -5
  82. package/dist/source/ScriptOnce.jsx +27 -16
  83. package/dist/source/ScriptOnce.jsx.map +1 -1
  84. package/dist/source/Scripts.d.ts +2 -1
  85. package/dist/source/Scripts.jsx +100 -42
  86. package/dist/source/Scripts.jsx.map +1 -1
  87. package/dist/source/Transitioner.d.ts +16 -0
  88. package/dist/source/Transitioner.jsx +180 -160
  89. package/dist/source/Transitioner.jsx.map +1 -1
  90. package/dist/source/awaited.d.ts +20 -5
  91. package/dist/source/awaited.jsx +18 -25
  92. package/dist/source/awaited.jsx.map +1 -1
  93. package/dist/source/index.d.ts +2 -0
  94. package/dist/source/index.jsx +2 -0
  95. package/dist/source/index.jsx.map +1 -1
  96. package/dist/source/lazyRouteComponent.jsx +4 -2
  97. package/dist/source/lazyRouteComponent.jsx.map +1 -1
  98. package/dist/source/link.jsx +37 -51
  99. package/dist/source/link.jsx.map +1 -1
  100. package/dist/source/scroll-restoration.d.ts +8 -1
  101. package/dist/source/scroll-restoration.jsx +55 -12
  102. package/dist/source/scroll-restoration.jsx.map +1 -1
  103. package/dist/source/ssr/RouterClient.d.ts +15 -0
  104. package/dist/source/ssr/RouterClient.jsx +48 -0
  105. package/dist/source/ssr/RouterClient.jsx.map +1 -0
  106. package/dist/source/ssr/RouterServer.d.ts +15 -0
  107. package/dist/source/ssr/RouterServer.jsx +40 -0
  108. package/dist/source/ssr/RouterServer.jsx.map +1 -0
  109. package/dist/source/ssr/client.d.ts +1 -0
  110. package/dist/source/ssr/client.js +2 -0
  111. package/dist/source/ssr/client.js.map +1 -0
  112. package/dist/source/ssr/defaultRenderHandler.d.ts +1 -0
  113. package/dist/source/ssr/defaultRenderHandler.jsx +9 -0
  114. package/dist/source/ssr/defaultRenderHandler.jsx.map +1 -0
  115. package/dist/source/ssr/defaultStreamHandler.d.ts +1 -0
  116. package/dist/source/ssr/defaultStreamHandler.jsx +10 -0
  117. package/dist/source/ssr/defaultStreamHandler.jsx.map +1 -0
  118. package/dist/source/ssr/renderRouterToStream.d.ts +8 -0
  119. package/dist/source/ssr/renderRouterToStream.jsx +55 -0
  120. package/dist/source/ssr/renderRouterToStream.jsx.map +1 -0
  121. package/dist/source/ssr/renderRouterToString.d.ts +7 -0
  122. package/dist/source/ssr/renderRouterToString.jsx +26 -0
  123. package/dist/source/ssr/renderRouterToString.jsx.map +1 -0
  124. package/dist/source/ssr/server.d.ts +6 -0
  125. package/dist/source/ssr/server.js +7 -0
  126. package/dist/source/ssr/server.js.map +1 -0
  127. package/package.json +16 -3
  128. package/src/Asset.tsx +157 -7
  129. package/src/Body.tsx +26 -0
  130. package/src/CatchBoundary.tsx +11 -25
  131. package/src/Html.tsx +65 -0
  132. package/src/Match.tsx +135 -58
  133. package/src/Matches.tsx +16 -4
  134. package/src/RouterProvider.tsx +6 -0
  135. package/src/ScriptOnce.tsx +43 -28
  136. package/src/Scripts.tsx +121 -56
  137. package/src/Transitioner.tsx +197 -176
  138. package/src/awaited.tsx +17 -28
  139. package/src/index.tsx +2 -0
  140. package/src/lazyRouteComponent.tsx +4 -2
  141. package/src/link.tsx +42 -47
  142. package/src/scroll-restoration.tsx +69 -21
  143. package/src/ssr/RouterClient.tsx +58 -0
  144. package/src/ssr/RouterServer.tsx +51 -0
  145. package/src/ssr/client.ts +1 -0
  146. package/src/ssr/defaultRenderHandler.tsx +12 -0
  147. package/src/ssr/defaultStreamHandler.tsx +13 -0
  148. package/src/ssr/renderRouterToStream.tsx +85 -0
  149. package/src/ssr/renderRouterToString.tsx +37 -0
  150. package/src/ssr/server.ts +6 -0
@@ -0,0 +1,14 @@
1
+ import { RouterServer } from "./RouterServer.js";
2
+ import { defaultRenderHandler } from "./defaultRenderHandler.js";
3
+ import { defaultStreamHandler } from "./defaultStreamHandler.js";
4
+ import { renderRouterToStream } from "./renderRouterToStream.js";
5
+ import { renderRouterToString } from "./renderRouterToString.js";
6
+ export * from "@tanstack/router-core/ssr/server";
7
+ export {
8
+ RouterServer,
9
+ defaultRenderHandler,
10
+ defaultStreamHandler,
11
+ renderRouterToStream,
12
+ renderRouterToString
13
+ };
14
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;"}
@@ -1,7 +1,124 @@
1
+ import * as Vue from 'vue';
2
+ import { useRouter } from './useRouter';
3
+ const Title = Vue.defineComponent({
4
+ name: 'Title',
5
+ props: {
6
+ children: {
7
+ type: String,
8
+ default: '',
9
+ },
10
+ },
11
+ setup(props) {
12
+ const router = useRouter();
13
+ if (!router.isServer) {
14
+ Vue.onMounted(() => {
15
+ if (props.children) {
16
+ document.title = props.children;
17
+ }
18
+ });
19
+ Vue.watch(() => props.children, (newTitle) => {
20
+ if (newTitle) {
21
+ document.title = newTitle;
22
+ }
23
+ });
24
+ }
25
+ return () => Vue.h('title', {}, props.children);
26
+ },
27
+ });
28
+ const Script = Vue.defineComponent({
29
+ name: 'Script',
30
+ props: {
31
+ attrs: {
32
+ type: Object,
33
+ default: () => ({}),
34
+ },
35
+ children: {
36
+ type: String,
37
+ default: undefined,
38
+ },
39
+ },
40
+ setup(props) {
41
+ const router = useRouter();
42
+ if (!router.isServer) {
43
+ Vue.onMounted(() => {
44
+ const attrs = props.attrs;
45
+ const children = props.children;
46
+ if (attrs?.src) {
47
+ const normSrc = (() => {
48
+ try {
49
+ const base = document.baseURI || window.location.href;
50
+ return new URL(attrs.src, base).href;
51
+ }
52
+ catch {
53
+ return attrs.src;
54
+ }
55
+ })();
56
+ const existingScript = Array.from(document.querySelectorAll('script[src]')).find((el) => el.src === normSrc);
57
+ if (existingScript) {
58
+ return;
59
+ }
60
+ const script = document.createElement('script');
61
+ for (const [key, value] of Object.entries(attrs)) {
62
+ if (value !== undefined && value !== false) {
63
+ script.setAttribute(key, typeof value === 'boolean' ? '' : String(value));
64
+ }
65
+ }
66
+ document.head.appendChild(script);
67
+ }
68
+ else if (typeof children === 'string') {
69
+ const typeAttr = typeof attrs?.type === 'string' ? attrs.type : 'text/javascript';
70
+ const nonceAttr = typeof attrs?.nonce === 'string' ? attrs.nonce : undefined;
71
+ const existingScript = Array.from(document.querySelectorAll('script:not([src])')).find((el) => {
72
+ if (!(el instanceof HTMLScriptElement))
73
+ return false;
74
+ const sType = el.getAttribute('type') ?? 'text/javascript';
75
+ const sNonce = el.getAttribute('nonce') ?? undefined;
76
+ return (el.textContent === children &&
77
+ sType === typeAttr &&
78
+ sNonce === nonceAttr);
79
+ });
80
+ if (existingScript) {
81
+ return;
82
+ }
83
+ const script = document.createElement('script');
84
+ script.textContent = children;
85
+ if (attrs) {
86
+ for (const [key, value] of Object.entries(attrs)) {
87
+ if (value !== undefined && value !== false) {
88
+ script.setAttribute(key, typeof value === 'boolean' ? '' : String(value));
89
+ }
90
+ }
91
+ }
92
+ document.head.appendChild(script);
93
+ }
94
+ });
95
+ }
96
+ return () => {
97
+ if (!router.isServer) {
98
+ const { src: _src, ...rest } = props.attrs || {};
99
+ return Vue.h('script', {
100
+ ...rest,
101
+ 'data-allow-mismatch': true,
102
+ innerHTML: '',
103
+ });
104
+ }
105
+ if (props.attrs?.src && typeof props.attrs.src === 'string') {
106
+ return Vue.h('script', props.attrs);
107
+ }
108
+ if (typeof props.children === 'string') {
109
+ return Vue.h('script', {
110
+ ...props.attrs,
111
+ innerHTML: props.children,
112
+ });
113
+ }
114
+ return null;
115
+ };
116
+ },
117
+ });
1
118
  export function Asset({ tag, attrs, children }) {
2
119
  switch (tag) {
3
120
  case 'title':
4
- return <title {...attrs}>{children}</title>;
121
+ return Vue.h(Title, { children: children });
5
122
  case 'meta':
6
123
  return <meta {...attrs}/>;
7
124
  case 'link':
@@ -9,12 +126,7 @@ export function Asset({ tag, attrs, children }) {
9
126
  case 'style':
10
127
  return <style {...attrs} innerHTML={children}/>;
11
128
  case 'script':
12
- if (attrs && attrs.src) {
13
- return <script {...attrs}/>;
14
- }
15
- if (typeof children === 'string')
16
- return <script {...attrs} innerHTML={children}/>;
17
- return null;
129
+ return Vue.h(Script, { attrs, children: children });
18
130
  default:
19
131
  return null;
20
132
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Asset.jsx","sourceRoot":"","sources":["../../src/Asset.tsx"],"names":[],"mappings":"AAEA,MAAM,UAAU,KAAK,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAoB;IAC9D,QAAQ,GAAG,EAAE,CAAC;QACZ,KAAK,OAAO;YACV,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,KAAK,CAAC,CAAA;QAC7C,KAAK,MAAM;YACT,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,EAAG,CAAA;QAC5B,KAAK,MAAM;YACT,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,EAAG,CAAA;QAC5B,KAAK,OAAO;YACV,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,EAAG,CAAA;QAClD,KAAK,QAAQ;YACX,IAAK,KAAa,IAAK,KAAa,CAAC,GAAG,EAAE,CAAC;gBACzC,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,EAAG,CAAA;YAC9B,CAAC;YACD,IAAI,OAAO,QAAQ,KAAK,QAAQ;gBAC9B,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,EAAG,CAAA;YACnD,OAAO,IAAI,CAAA;QACb;YACE,OAAO,IAAI,CAAA;IACf,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"Asset.jsx","sourceRoot":"","sources":["../../src/Asset.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import * as Vue from 'vue';
2
+ export declare const Body: Vue.DefineComponent<{}, () => Vue.VNode<Vue.RendererNode, Vue.RendererElement, {
3
+ [key: string]: any;
4
+ }>, {}, {}, {}, Vue.ComponentOptionsMixin, Vue.ComponentOptionsMixin, {}, string, Vue.PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, Vue.ComponentProvideOptions, true, {}, any>;
@@ -0,0 +1,15 @@
1
+ import * as Vue from 'vue';
2
+ export const Body = Vue.defineComponent({
3
+ name: 'Body',
4
+ setup(_, { slots }) {
5
+ const isServer = typeof window === 'undefined';
6
+ return () => {
7
+ const children = slots.default?.();
8
+ if (isServer) {
9
+ return Vue.h('body', {}, Vue.h('div', { id: '__app' }, Vue.h('div', { 'data-allow-mismatch': '' }, children)));
10
+ }
11
+ return Vue.h('div', { 'data-allow-mismatch': '' }, children);
12
+ };
13
+ },
14
+ });
15
+ //# sourceMappingURL=Body.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Body.jsx","sourceRoot":"","sources":["../../src/Body.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,KAAK,CAAA;AAE1B,MAAM,CAAC,MAAM,IAAI,GAAG,GAAG,CAAC,eAAe,CAAC;IACtC,IAAI,EAAE,MAAM;IACZ,KAAK,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE;QAChB,MAAM,QAAQ,GAAG,OAAO,MAAM,KAAK,WAAW,CAAA;QAE9C,OAAO,GAAG,EAAE;YACV,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,EAAE,EAAE,CAAA;YAElC,IAAI,QAAQ,EAAE,CAAC;gBACb,OAAO,GAAG,CAAC,CAAC,CACV,MAAM,EACN,EAAE,EACF,GAAG,CAAC,CAAC,CACH,KAAK,EACL,EAAE,EAAE,EAAE,OAAO,EAAE,EACf,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,qBAAqB,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,CACtD,CACF,CAAA;YACH,CAAC;YAED,OAAO,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,qBAAqB,EAAE,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAA;QAC9D,CAAC,CAAA;IACH,CAAC;CACF,CAAC,CAAA"}
@@ -3,7 +3,7 @@ import type { ErrorRouteComponent } from './route';
3
3
  export declare function CatchBoundary(props: {
4
4
  getResetKey: () => number | string;
5
5
  children: Vue.VNode;
6
- errorComponent?: ErrorRouteComponent;
6
+ errorComponent?: ErrorRouteComponent | Vue.Component;
7
7
  onCatch?: (error: Error) => void;
8
8
  }): Vue.VNode<Vue.RendererNode, Vue.RendererElement, {
9
9
  [key: string]: any;
@@ -1,5 +1,4 @@
1
1
  import * as Vue from 'vue';
2
- // Create a Vue error boundary component
3
2
  const VueErrorBoundary = Vue.defineComponent({
4
3
  name: 'VueErrorBoundary',
5
4
  props: {
@@ -13,68 +12,57 @@ const VueErrorBoundary = Vue.defineComponent({
13
12
  const reset = () => {
14
13
  error.value = null;
15
14
  };
16
- // Watch for changes in the reset key
17
15
  Vue.watch(() => props.resetKey, (newKey, oldKey) => {
18
16
  if (newKey !== oldKey && error.value) {
19
17
  reset();
20
18
  }
21
19
  });
22
- // Capture errors from child components
23
20
  Vue.onErrorCaptured((err) => {
24
- // If the error is a Promise (thrown for Suspense), don't treat it as an error
25
- // Just ignore it - Suspense will handle it
26
21
  if (err instanceof Promise ||
27
22
  (err && typeof err.then === 'function')) {
28
- return false; // Prevent from propagating as an error, but don't set error state
23
+ return false;
29
24
  }
30
25
  error.value = err;
31
26
  resetFn.value = reset;
32
- // Call the onError callback if provided
33
27
  if (props.onError) {
34
28
  props.onError(err);
35
29
  }
36
- // Prevent the error from propagating further
37
30
  return false;
38
31
  });
39
32
  return () => {
40
- // If there's an error, render the fallback
41
33
  if (error.value && slots.fallback) {
42
- return slots.fallback({
34
+ const fallbackContent = slots.fallback({
43
35
  error: error.value,
44
36
  reset,
45
37
  });
38
+ return Array.isArray(fallbackContent) && fallbackContent.length === 1
39
+ ? fallbackContent[0]
40
+ : fallbackContent;
46
41
  }
47
- // Otherwise render the default slot
48
- return slots.default && slots.default();
42
+ const defaultContent = slots.default && slots.default();
43
+ return Array.isArray(defaultContent) && defaultContent.length === 1
44
+ ? defaultContent[0]
45
+ : defaultContent;
49
46
  };
50
47
  },
51
48
  });
52
- // Main CatchBoundary component
53
49
  export function CatchBoundary(props) {
54
- // Create a component to use in the template
55
50
  const CatchBoundaryWrapper = Vue.defineComponent({
56
51
  name: 'CatchBoundaryWrapper',
57
52
  inheritAttrs: false,
58
53
  setup() {
59
54
  const resetKey = Vue.computed(() => props.getResetKey());
60
55
  return () => {
61
- // Always use our default component as a safe fallback
62
- const defaultErrorComponent = ErrorComponent;
63
56
  return Vue.h(VueErrorBoundary, {
64
57
  resetKey: resetKey.value,
65
58
  onError: props.onCatch,
66
59
  }, {
67
60
  default: () => props.children,
68
61
  fallback: ({ error, reset }) => {
69
- // Safely render the error component - either the provided one or the default
70
62
  if (props.errorComponent) {
71
- // Use the provided error component
72
63
  return Vue.h(props.errorComponent, { error, reset });
73
64
  }
74
- else {
75
- // Use the default error component
76
- return Vue.h(defaultErrorComponent, { error, reset });
77
- }
65
+ return Vue.h(ErrorComponent, { error, reset });
78
66
  },
79
67
  });
80
68
  };
@@ -82,7 +70,6 @@ export function CatchBoundary(props) {
82
70
  });
83
71
  return Vue.h(CatchBoundaryWrapper);
84
72
  }
85
- // Error component
86
73
  export const ErrorComponent = Vue.defineComponent({
87
74
  name: 'ErrorComponent',
88
75
  props: {
@@ -1 +1 @@
1
- {"version":3,"file":"CatchBoundary.jsx","sourceRoot":"","sources":["../../src/CatchBoundary.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CatchBoundary.jsx","sourceRoot":"","sources":["../../src/CatchBoundary.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import * as Vue from 'vue';
2
+ export declare const Html: Vue.DefineComponent<{}, () => Vue.VNode<Vue.RendererNode, Vue.RendererElement, {
3
+ [key: string]: any;
4
+ }> | undefined, {}, {}, {}, Vue.ComponentOptionsMixin, Vue.ComponentOptionsMixin, {}, string, Vue.PublicProps, Readonly<{}> & Readonly<{}>, {}, {}, {}, {}, string, Vue.ComponentProvideOptions, true, {}, any>;
@@ -0,0 +1,56 @@
1
+ import * as Vue from 'vue';
2
+ import { Body } from './Body';
3
+ export const Html = Vue.defineComponent({
4
+ name: 'Html',
5
+ setup(_, { slots }) {
6
+ const isServer = typeof window === 'undefined';
7
+ const hydrated = Vue.ref(false);
8
+ if (!isServer) {
9
+ Vue.onMounted(() => {
10
+ hydrated.value = true;
11
+ });
12
+ }
13
+ return () => {
14
+ if (isServer) {
15
+ return Vue.h('html', {}, slots.default?.());
16
+ }
17
+ const children = slots.default?.() || [];
18
+ const flatChildren = Array.isArray(children) ? children : [children];
19
+ let bodyVnode = null;
20
+ const headChildren = [];
21
+ for (const child of flatChildren) {
22
+ if (typeof child === 'object' && child !== null) {
23
+ const vnode = child;
24
+ if (vnode.type === 'head') {
25
+ if (vnode.children) {
26
+ if (Array.isArray(vnode.children)) {
27
+ for (const c of vnode.children) {
28
+ if (typeof c === 'object' && c !== null && 'type' in c) {
29
+ headChildren.push(c);
30
+ }
31
+ }
32
+ }
33
+ }
34
+ continue;
35
+ }
36
+ if (vnode.type === Body) {
37
+ bodyVnode = vnode;
38
+ continue;
39
+ }
40
+ if (!bodyVnode) {
41
+ bodyVnode = vnode;
42
+ }
43
+ }
44
+ }
45
+ const result = [];
46
+ if (bodyVnode) {
47
+ result.push(bodyVnode);
48
+ }
49
+ if (hydrated.value && headChildren.length > 0) {
50
+ result.push(Vue.h(Vue.Teleport, { to: 'head' }, headChildren));
51
+ }
52
+ return result.length === 1 ? result[0] : Vue.h(Vue.Fragment, result);
53
+ };
54
+ },
55
+ });
56
+ //# sourceMappingURL=Html.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Html.jsx","sourceRoot":"","sources":["../../src/Html.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,GAAG,MAAM,KAAK,CAAA;AAC1B,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAA;AAE7B,MAAM,CAAC,MAAM,IAAI,GAAG,GAAG,CAAC,eAAe,CAAC;IACtC,IAAI,EAAE,MAAM;IACZ,KAAK,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE;QAChB,MAAM,QAAQ,GAAG,OAAO,MAAM,KAAK,WAAW,CAAA;QAE9C,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAE/B,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE;gBACjB,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAA;YACvB,CAAC,CAAC,CAAA;QACJ,CAAC;QAED,OAAO,GAAG,EAAE;YACV,IAAI,QAAQ,EAAE,CAAC;gBACb,OAAO,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,EAAE,KAAK,CAAC,OAAO,EAAE,EAAE,CAAC,CAAA;YAC7C,CAAC;YAED,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,CAAA;YACxC,MAAM,YAAY,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAA;YACpE,IAAI,SAAS,GAAqB,IAAI,CAAA;YACtC,MAAM,YAAY,GAAqB,EAAE,CAAA;YAEzC,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;gBACjC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;oBAChD,MAAM,KAAK,GAAG,KAAK,CAAA;oBACnB,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;wBAC1B,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;4BACnB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;gCAClC,KAAK,MAAM,CAAC,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;oCAC/B,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,IAAI,MAAM,IAAI,CAAC,EAAE,CAAC;wCACvD,YAAY,CAAC,IAAI,CAAC,CAAc,CAAC,CAAA;oCACnC,CAAC;gCACH,CAAC;4BACH,CAAC;wBACH,CAAC;wBACD,SAAQ;oBACV,CAAC;oBACD,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,EAAE,CAAC;wBACxB,SAAS,GAAG,KAAK,CAAA;wBACjB,SAAQ;oBACV,CAAC;oBACD,IAAI,CAAC,SAAS,EAAE,CAAC;wBACf,SAAS,GAAG,KAAK,CAAA;oBACnB,CAAC;gBACH,CAAC;YACH,CAAC;YAED,MAAM,MAAM,GAAqB,EAAE,CAAA;YAEnC,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YACxB,CAAC;YAED,IAAI,QAAQ,CAAC,KAAK,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC9C,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,YAAY,CAAC,CAAC,CAAA;YAChE,CAAC;YAED,OAAO,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;QACtE,CAAC,CAAA;IACH,CAAC;CACF,CAAC,CAAA"}