@alignable/bifrost 0.1.2 → 1.0.1

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 (118) hide show
  1. package/dist/chunk-4W4KH2A5.js +50 -0
  2. package/dist/chunk-4W4KH2A5.js.map +1 -0
  3. package/dist/{chunk-X3MUHPJ3.js → chunk-NS2C4D24.js} +59 -177
  4. package/dist/chunk-NS2C4D24.js.map +1 -0
  5. package/dist/controller-af32e731.d.ts +9 -0
  6. package/dist/index.d.ts +1 -15
  7. package/dist/index.js +1 -13
  8. package/dist/index.js.map +1 -1
  9. package/dist/renderer/+config.js +2 -46
  10. package/dist/renderer/Head.d.ts +5 -0
  11. package/dist/renderer/Head.js +25 -0
  12. package/dist/renderer/Head.js.map +1 -0
  13. package/dist/renderer/bifrost/onAfterRenderClient.d.ts +5 -0
  14. package/dist/renderer/bifrost/onAfterRenderClient.js +14 -0
  15. package/dist/renderer/bifrost/onAfterRenderClient.js.map +1 -0
  16. package/dist/renderer/bifrost/onBeforeRenderClient.d.ts +5 -0
  17. package/dist/renderer/bifrost/onBeforeRenderClient.js +15 -0
  18. package/dist/renderer/bifrost/onBeforeRenderClient.js.map +1 -0
  19. package/dist/renderer/config.d.ts +51 -70
  20. package/dist/renderer/config.js.map +1 -1
  21. package/dist/renderer/headHtmlEnd.d.ts +7 -0
  22. package/dist/renderer/headHtmlEnd.js +8 -0
  23. package/dist/renderer/headHtmlEnd.js.map +1 -0
  24. package/dist/renderer/onBeforeRoute.d.ts +3 -6
  25. package/dist/renderer/onBeforeRoute.js +9 -3
  26. package/dist/renderer/onBeforeRoute.js.map +1 -1
  27. package/dist/renderer/wrapped/Page.d.ts +9 -0
  28. package/dist/renderer/wrapped/Page.js +25 -0
  29. package/dist/renderer/wrapped/Page.js.map +1 -0
  30. package/dist/renderer/wrapped/onAfterRenderClient.d.ts +7 -0
  31. package/dist/renderer/wrapped/onAfterRenderClient.js +30 -0
  32. package/dist/renderer/wrapped/onAfterRenderClient.js.map +1 -0
  33. package/dist/renderer/wrapped/onBeforeRender.client.d.ts +7 -0
  34. package/dist/renderer/wrapped/onBeforeRender.client.js +40 -0
  35. package/dist/renderer/wrapped/onBeforeRender.client.js.map +1 -0
  36. package/dist/renderer/wrapped/onBeforeRenderClient.d.ts +7 -0
  37. package/dist/renderer/wrapped/onBeforeRenderClient.js +172 -0
  38. package/dist/renderer/wrapped/onBeforeRenderClient.js.map +1 -0
  39. package/dist/renderer/wrapped/onBeforeRenderHtml.d.ts +5 -0
  40. package/dist/renderer/wrapped/onBeforeRenderHtml.js +14 -0
  41. package/dist/renderer/wrapped/onBeforeRenderHtml.js.map +1 -0
  42. package/dist/type-82702ff4.d.ts +27 -0
  43. package/package.json +14 -24
  44. package/dist/chunk-2DSY3VFP.js +0 -118
  45. package/dist/chunk-2DSY3VFP.js.map +0 -1
  46. package/dist/chunk-5SP2QGEH.js +0 -76
  47. package/dist/chunk-5SP2QGEH.js.map +0 -1
  48. package/dist/chunk-ABLEI4J7.js +0 -30
  49. package/dist/chunk-ABLEI4J7.js.map +0 -1
  50. package/dist/chunk-EYYCKU6F.js +0 -11
  51. package/dist/chunk-EYYCKU6F.js.map +0 -1
  52. package/dist/chunk-IYGONC4I.js +0 -31
  53. package/dist/chunk-IYGONC4I.js.map +0 -1
  54. package/dist/chunk-JHLK62FM.js +0 -20
  55. package/dist/chunk-JHLK62FM.js.map +0 -1
  56. package/dist/chunk-K4H777XA.js +0 -9
  57. package/dist/chunk-K4H777XA.js.map +0 -1
  58. package/dist/chunk-OXCN6F2S.js +0 -10
  59. package/dist/chunk-OXCN6F2S.js.map +0 -1
  60. package/dist/chunk-PESUYCE4.js +0 -33
  61. package/dist/chunk-PESUYCE4.js.map +0 -1
  62. package/dist/chunk-RQ34EW7E.js +0 -13
  63. package/dist/chunk-RQ34EW7E.js.map +0 -1
  64. package/dist/chunk-RSVASTEA.js +0 -63
  65. package/dist/chunk-RSVASTEA.js.map +0 -1
  66. package/dist/chunk-VYXAWOXV.js +0 -22
  67. package/dist/chunk-VYXAWOXV.js.map +0 -1
  68. package/dist/chunk-X2R7ODLQ.js +0 -14
  69. package/dist/chunk-X2R7ODLQ.js.map +0 -1
  70. package/dist/chunk-X3MUHPJ3.js.map +0 -1
  71. package/dist/chunk-XMNZZA6S.js +0 -75
  72. package/dist/chunk-XMNZZA6S.js.map +0 -1
  73. package/dist/internal-837e7a40.d.ts +0 -128
  74. package/dist/renderer/_error/Page.d.ts +0 -8
  75. package/dist/renderer/_error/Page.js +0 -14
  76. package/dist/renderer/_error/Page.js.map +0 -1
  77. package/dist/renderer/bifrost/onRenderClient.d.ts +0 -9
  78. package/dist/renderer/bifrost/onRenderClient.js +0 -15
  79. package/dist/renderer/bifrost/onRenderClient.js.map +0 -1
  80. package/dist/renderer/bifrost/onRenderHtml.d.ts +0 -20
  81. package/dist/renderer/bifrost/onRenderHtml.js +0 -13
  82. package/dist/renderer/bifrost/onRenderHtml.js.map +0 -1
  83. package/dist/renderer/configs/bifrost.d.ts +0 -50
  84. package/dist/renderer/configs/bifrost.js +0 -7
  85. package/dist/renderer/configs/bifrost.js.map +0 -1
  86. package/dist/renderer/configs/wrapped.d.ts +0 -25
  87. package/dist/renderer/configs/wrapped.js +0 -7
  88. package/dist/renderer/configs/wrapped.js.map +0 -1
  89. package/dist/renderer/onRenderClient.d.ts +0 -9
  90. package/dist/renderer/onRenderClient.js +0 -35
  91. package/dist/renderer/onRenderClient.js.map +0 -1
  92. package/dist/renderer/onRenderHtml.d.ts +0 -37
  93. package/dist/renderer/onRenderHtml.js +0 -32
  94. package/dist/renderer/onRenderHtml.js.map +0 -1
  95. package/dist/renderer/useNavigation.d.ts +0 -13
  96. package/dist/renderer/useNavigation.js +0 -12
  97. package/dist/renderer/useNavigation.js.map +0 -1
  98. package/dist/renderer/usePageContext.d.ts +0 -14
  99. package/dist/renderer/usePageContext.js +0 -10
  100. package/dist/renderer/usePageContext.js.map +0 -1
  101. package/dist/renderer/utils/PassthruLayout.d.ts +0 -5
  102. package/dist/renderer/utils/PassthruLayout.js +0 -7
  103. package/dist/renderer/utils/PassthruLayout.js.map +0 -1
  104. package/dist/renderer/utils/buildHead.d.ts +0 -9
  105. package/dist/renderer/utils/buildHead.js +0 -7
  106. package/dist/renderer/utils/buildHead.js.map +0 -1
  107. package/dist/renderer/utils/getConfigOrPageContext.d.ts +0 -13
  108. package/dist/renderer/utils/getConfigOrPageContext.js +0 -7
  109. package/dist/renderer/utils/getConfigOrPageContext.js.map +0 -1
  110. package/dist/renderer/utils/getGlobalObject.d.ts +0 -6
  111. package/dist/renderer/utils/getGlobalObject.js +0 -7
  112. package/dist/renderer/utils/getGlobalObject.js.map +0 -1
  113. package/dist/renderer/wrapped/onRenderClient.d.ts +0 -9
  114. package/dist/renderer/wrapped/onRenderClient.js +0 -13
  115. package/dist/renderer/wrapped/onRenderClient.js.map +0 -1
  116. package/dist/renderer/wrapped/onRenderHtml.d.ts +0 -27
  117. package/dist/renderer/wrapped/onRenderHtml.js +0 -12
  118. package/dist/renderer/wrapped/onRenderHtml.js.map +0 -1
@@ -0,0 +1,5 @@
1
+ import { PageContextClient } from 'vike/types';
2
+
3
+ declare function bifrostOnAfterRenderClient(pageContext: PageContextClient): Promise<void>;
4
+
5
+ export { bifrostOnAfterRenderClient as default };
@@ -0,0 +1,14 @@
1
+ import {
2
+ Turbolinks
3
+ } from "../../chunk-NS2C4D24.js";
4
+
5
+ // renderer/bifrost/onAfterRenderClient.ts
6
+ async function bifrostOnAfterRenderClient(pageContext) {
7
+ if (!pageContext.isHydration) {
8
+ await Turbolinks._vikeAfterRender(false);
9
+ }
10
+ }
11
+ export {
12
+ bifrostOnAfterRenderClient as default
13
+ };
14
+ //# sourceMappingURL=onAfterRenderClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../renderer/bifrost/onAfterRenderClient.ts"],"sourcesContent":["import { PageContextClient } from \"vike/types\";\nimport { Turbolinks } from \"../../lib/turbolinks\";\n\nexport default async function bifrostOnAfterRenderClient(\n pageContext: PageContextClient\n) {\n if (!pageContext.isHydration) {\n await Turbolinks._vikeAfterRender(false);\n }\n}\n"],"mappings":";;;;;AAGA,eAAO,2BACL,aACA;AACA,MAAI,CAAC,YAAY,aAAa;AAC5B,UAAM,WAAW,iBAAiB,KAAK;AAAA,EACzC;AACF;","names":[]}
@@ -0,0 +1,5 @@
1
+ import { PageContextClient } from 'vike/types';
2
+
3
+ declare function bifrostOnBeforeRenderClient(pageContext: PageContextClient): Promise<void>;
4
+
5
+ export { bifrostOnBeforeRenderClient as default };
@@ -0,0 +1,15 @@
1
+ import {
2
+ Turbolinks
3
+ } from "../../chunk-NS2C4D24.js";
4
+
5
+ // renderer/bifrost/onBeforeRenderClient.ts
6
+ Turbolinks.start();
7
+ async function bifrostOnBeforeRenderClient(pageContext) {
8
+ if (!pageContext.isHydration) {
9
+ await Turbolinks._vikeBeforeRender();
10
+ }
11
+ }
12
+ export {
13
+ bifrostOnBeforeRenderClient as default
14
+ };
15
+ //# sourceMappingURL=onBeforeRenderClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../renderer/bifrost/onBeforeRenderClient.ts"],"sourcesContent":["import { PageContextClient } from \"vike/types\";\nimport { Turbolinks } from \"../../lib/turbolinks\";\n\nTurbolinks.start();\n\nexport default async function bifrostOnBeforeRenderClient(\n pageContext: PageContextClient\n) {\n if (!pageContext.isHydration) {\n await Turbolinks._vikeBeforeRender();\n }\n}\n"],"mappings":";;;;;AAGA,WAAW,MAAM;AAEjB,eAAO,4BACL,aACA;AACA,MAAI,CAAC,YAAY,aAAa;AAC5B,UAAM,WAAW,kBAAkB;AAAA,EACrC;AACF;","names":[]}
@@ -1,21 +1,29 @@
1
+ export { W as WrappedServerOnly } from '../type-82702ff4.js';
2
+ import '../controller-af32e731.js';
3
+ import 'vike/types';
4
+
1
5
  declare const _default: {
2
6
  name: string;
3
7
  require: {
4
8
  vike: string;
9
+ "vike-react": string;
5
10
  };
6
- clientHooks: true;
7
- onBeforeRoute: "import:@alignable/bifrost/renderer/onBeforeRoute:default";
8
- onRenderClient: "import:@alignable/bifrost/renderer/onRenderClient:default";
9
- onRenderHtml: "import:@alignable/bifrost/renderer/onRenderHtml:default";
11
+ Head: string;
12
+ headHtmlEnd: string;
13
+ onBeforeRoute: "import:@alignable/bifrost/__internal/renderer/onBeforeRoute:default";
10
14
  passToClient: string[];
11
- clientRouting: true;
12
- hydrationCanBeAborted: true;
13
15
  meta: {
14
- onClientInit: {
16
+ getLayout: {
15
17
  env: {
18
+ server: true;
19
+ client: true;
20
+ };
21
+ };
22
+ proxyHeaders: {
23
+ env: {
24
+ server: true;
16
25
  client: true;
17
26
  };
18
- global: true;
19
27
  };
20
28
  proxyMode: {
21
29
  env: {
@@ -27,9 +35,19 @@ declare const _default: {
27
35
  configValue: unknown;
28
36
  configDefinedAt: `Config ${string} defined at ${string}`;
29
37
  }): {
38
+ onBeforeRenderClient: "import:@alignable/bifrost/__internal/renderer/bifrost/onBeforeRenderClient:default";
39
+ onAfterRenderClient: "import:@alignable/bifrost/__internal/renderer/bifrost/onAfterRenderClient:default";
40
+ Page?: undefined;
41
+ onBeforeRenderHtml?: undefined;
42
+ onBeforeRender?: undefined;
30
43
  meta?: undefined;
31
44
  clientRouting?: undefined;
32
45
  } | {
46
+ Page: any;
47
+ onBeforeRenderHtml: "import:@alignable/bifrost/__internal/renderer/wrapped/onBeforeRenderHtml:default";
48
+ onBeforeRender: "import:@alignable/bifrost/__internal/renderer/wrapped/onBeforeRender.client:default";
49
+ onBeforeRenderClient: "import:@alignable/bifrost/__internal/renderer/wrapped/onBeforeRenderClient:default";
50
+ onAfterRenderClient: "import:@alignable/bifrost/__internal/renderer/wrapped/onAfterRenderClient:default";
33
51
  meta: {
34
52
  onBeforeRender: {
35
53
  env: {
@@ -41,71 +59,34 @@ declare const _default: {
41
59
  clientRouting?: undefined;
42
60
  } | {
43
61
  clientRouting: false;
62
+ onBeforeRenderClient?: undefined;
63
+ onAfterRenderClient?: undefined;
64
+ Page?: undefined;
65
+ onBeforeRenderHtml?: undefined;
66
+ onBeforeRender?: undefined;
44
67
  meta?: undefined;
45
68
  };
46
69
  };
47
- layoutMap: {
48
- env: {
49
- server: true;
50
- client: true;
51
- };
52
- };
53
- getLayout: {
54
- env: {
55
- server: true;
56
- client: true;
57
- };
58
- };
59
- proxyHeaders: {
60
- env: {
61
- server: true;
62
- client: true;
63
- };
64
- };
65
- Layout: {
66
- env: {
67
- server: true;
68
- client: true;
69
- };
70
- };
71
- layoutProps: {
72
- env: {
73
- server: true;
74
- client: true;
75
- };
76
- };
77
- documentProps: {
78
- env: {
79
- server: true;
80
- client: true;
81
- };
82
- };
83
- bodyAttrs: {
84
- env: {
85
- server: true;
86
- client: true;
87
- };
88
- };
89
- scripts: {
90
- env: {
91
- server: true;
92
- client: true;
93
- };
94
- cumulative: true;
95
- };
96
- dynamicScripts: {
97
- env: {
98
- server: true;
99
- client: false;
100
- };
101
- global: true;
102
- };
103
- favicon: {
104
- env: {
105
- server: true;
106
- };
107
- };
108
70
  };
109
71
  };
110
72
 
111
- export { _default as default };
73
+ /**
74
+ * Returning null tells Bifrost to run passthru proxy
75
+ */
76
+ type GetLayout = (headers: Record<string, number | string | string[] | undefined>) => Vike.ProxyLayoutInfo | null;
77
+ declare global {
78
+ namespace Vike {
79
+ interface Config {
80
+ proxyMode?: false | "wrapped" | "passthru";
81
+ proxyHeaders?: Record<string, string>;
82
+ getLayout?: GetLayout;
83
+ }
84
+ interface PageContext {
85
+ proxyLayoutInfo?: ProxyLayoutInfo;
86
+ }
87
+ interface ProxyLayoutInfo {
88
+ }
89
+ }
90
+ }
91
+
92
+ export { GetLayout, _default as default };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../renderer/config.ts"],"sourcesContent":["import { type Config } from \"vike/types\";\nimport { bifrostConfig } from \"./configs/bifrost\";\nimport { wrappedConfig } from \"./configs/wrapped\";\n\nexport default {\n name: \"@alignable/bifrost\",\n require: {\n vike: \">=0.4.244\",\n },\n clientHooks: true,\n\n onBeforeRoute: \"import:@alignable/bifrost/renderer/onBeforeRoute:default\",\n onRenderClient: \"import:@alignable/bifrost/renderer/onRenderClient:default\",\n onRenderHtml: \"import:@alignable/bifrost/renderer/onRenderHtml:default\",\n passToClient: [...bifrostConfig.passToClient, ...wrappedConfig.passToClient],\n clientRouting: true,\n hydrationCanBeAborted: true,\n\n meta: {\n ...bifrostConfig.meta,\n ...wrappedConfig.meta,\n onClientInit: { env: { client: true }, global: true },\n\n proxyMode: {\n env: { server: true, client: true, config: true },\n effect({ configDefinedAt, configValue }) {\n switch (configValue) {\n case false:\n return {};\n case \"wrapped\":\n return {\n meta: {\n onBeforeRender: { env: { client: true, server: false } },\n },\n };\n case \"passthru\":\n // tell Vike to hit the server for all passthru pages (which will get load balanced to legacy backend)\n return { clientRouting: false };\n default:\n throw new Error(\n `${configDefinedAt} should be one of: false, \"wrapped\", \"passthru\"`\n );\n }\n },\n },\n },\n} satisfies Config;\n"],"mappings":";;;;;;;;AAIA,IAAO,iBAAQ;AAAA,EACb,MAAM;AAAA,EACN,SAAS;AAAA,IACP,MAAM;AAAA,EACR;AAAA,EACA,aAAa;AAAA,EAEb,eAAe;AAAA,EACf,gBAAgB;AAAA,EAChB,cAAc;AAAA,EACd,cAAc,CAAC,GAAG,cAAc,cAAc,GAAG,cAAc,YAAY;AAAA,EAC3E,eAAe;AAAA,EACf,uBAAuB;AAAA,EAEvB,MAAM;AAAA,IACJ,GAAG,cAAc;AAAA,IACjB,GAAG,cAAc;AAAA,IACjB,cAAc,EAAE,KAAK,EAAE,QAAQ,KAAK,GAAG,QAAQ,KAAK;AAAA,IAEpD,WAAW;AAAA,MACT,KAAK,EAAE,QAAQ,MAAM,QAAQ,MAAM,QAAQ,KAAK;AAAA,MAChD,OAAO,EAAE,iBAAiB,YAAY,GAAG;AACvC,gBAAQ,aAAa;AAAA,UACnB,KAAK;AACH,mBAAO,CAAC;AAAA,UACV,KAAK;AACH,mBAAO;AAAA,cACL,MAAM;AAAA,gBACJ,gBAAgB,EAAE,KAAK,EAAE,QAAQ,MAAM,QAAQ,MAAM,EAAE;AAAA,cACzD;AAAA,YACF;AAAA,UACF,KAAK;AAEH,mBAAO,EAAE,eAAe,MAAM;AAAA,UAChC;AACE,kBAAM,IAAI;AAAA,cACR,GAAG,eAAe;AAAA,YACpB;AAAA,QACJ;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,7 @@
1
+ import { PageContextServer } from 'vike/types';
2
+ import '../type-82702ff4.js';
3
+ import '../controller-af32e731.js';
4
+
5
+ declare function headHtmlEnd(pageContext: PageContextServer): string;
6
+
7
+ export { headHtmlEnd as default };
@@ -0,0 +1,8 @@
1
+ // renderer/headHtmlEnd.ts
2
+ function headHtmlEnd(pageContext) {
3
+ return pageContext._wrappedServerOnly?.headInnerHtml || "";
4
+ }
5
+ export {
6
+ headHtmlEnd as default
7
+ };
8
+ //# sourceMappingURL=headHtmlEnd.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../renderer/headHtmlEnd.ts"],"sourcesContent":["import { PageContextServer } from \"vike/types\";\nimport \"../lib/type\";\n\nexport default function headHtmlEnd(pageContext: PageContextServer) {\n return pageContext._wrappedServerOnly?.headInnerHtml || \"\";\n}\n"],"mappings":";AAGe,SAAR,YAA6B,aAAgC;AAClE,SAAO,YAAY,oBAAoB,iBAAiB;AAC1D;","names":[]}
@@ -1,16 +1,13 @@
1
- import { e as Snapshot } from '../internal-837e7a40.js';
1
+ import { S as Snapshot } from '../controller-af32e731.js';
2
2
  import { PageContext } from 'vike/types';
3
- import 'react';
4
- import './configs/bifrost.js';
5
- import './configs/wrapped.js';
6
3
 
7
4
  declare const onBeforeRoute: (pageContext: PageContext) => {
8
5
  pageContext: {
9
- snapshot: Snapshot;
6
+ _snapshot: Snapshot;
10
7
  };
11
8
  } | {
12
9
  pageContext: {
13
- snapshot?: undefined;
10
+ _snapshot?: undefined;
14
11
  };
15
12
  };
16
13
 
@@ -1,9 +1,9 @@
1
1
  // renderer/onBeforeRoute.ts
2
2
  var onBeforeRoute = (pageContext) => {
3
- if (typeof window !== "undefined") {
3
+ if (typeof window !== "undefined" && pageContext.isClientSide) {
4
4
  const Turbolinks = window.Turbolinks;
5
5
  const currentVisit = Turbolinks.controller.currentVisit;
6
- if (pageContext.isBackwardNavigation) {
6
+ if (pageContext.isHistoryNavigation) {
7
7
  const snapshot = Turbolinks.controller.getCachedSnapshotForLocation(
8
8
  window.location.href
9
9
  );
@@ -14,12 +14,18 @@ var onBeforeRoute = (pageContext) => {
14
14
  if (!!snapshot) {
15
15
  return {
16
16
  pageContext: {
17
- snapshot
17
+ _snapshot: snapshot
18
18
  }
19
19
  };
20
20
  } else {
21
21
  return { pageContext: {} };
22
22
  }
23
+ } else if (Turbolinks.controller.started && (!currentVisit || currentVisit.state === "completed")) {
24
+ throw new Error(
25
+ `Bifrost does not support calling navigate() directly. Use navigate from "@alignable/bifrost" or Turbolinks.visit() instead.`
26
+ );
27
+ } else if (currentVisit?.state === "started") {
28
+ currentVisit.updateIfRedirect(pageContext.urlOriginal);
23
29
  }
24
30
  }
25
31
  return { pageContext: {} };
@@ -1 +1 @@
1
- {"version":3,"sources":["../../renderer/onBeforeRoute.ts"],"sourcesContent":["// do NOT import turbolinks in this file. It is used on server side.\n\nimport { PageContext } from \"vike/types\";\n\nconst onBeforeRoute = (pageContext: PageContext) => {\n if (typeof window !== \"undefined\") {\n const Turbolinks = window.Turbolinks;\n\n const currentVisit = Turbolinks.controller.currentVisit;\n if (pageContext.isBackwardNavigation) {\n const snapshot = Turbolinks.controller.getCachedSnapshotForLocation(\n window.location.href\n );\n Turbolinks.controller.historyPoppedToLocationWithRestorationIdentifier(\n window.location.href,\n \"\"\n );\n\n if (!!snapshot) {\n return {\n pageContext: {\n snapshot,\n },\n };\n } else {\n return { pageContext: {} };\n }\n }\n }\n return { pageContext: {} };\n};\n\nexport default onBeforeRoute;\n"],"mappings":";AAIA,IAAM,gBAAgB,CAAC,gBAA6B;AAClD,MAAI,OAAO,WAAW,aAAa;AACjC,UAAM,aAAa,OAAO;AAE1B,UAAM,eAAe,WAAW,WAAW;AAC3C,QAAI,YAAY,sBAAsB;AACpC,YAAM,WAAW,WAAW,WAAW;AAAA,QACrC,OAAO,SAAS;AAAA,MAClB;AACA,iBAAW,WAAW;AAAA,QACpB,OAAO,SAAS;AAAA,QAChB;AAAA,MACF;AAEA,UAAI,CAAC,CAAC,UAAU;AACd,eAAO;AAAA,UACL,aAAa;AAAA,YACX;AAAA,UACF;AAAA,QACF;AAAA,MACF,OAAO;AACL,eAAO,EAAE,aAAa,CAAC,EAAE;AAAA,MAC3B;AAAA,IACF;AAAA,EACF;AACA,SAAO,EAAE,aAAa,CAAC,EAAE;AAC3B;AAEA,IAAO,wBAAQ;","names":[]}
1
+ {"version":3,"sources":["../../renderer/onBeforeRoute.ts"],"sourcesContent":["// do NOT import turbolinks in this file. It is used on server side.\n\nimport type { PageContext } from \"vike/types\";\n\nconst onBeforeRoute = (pageContext: PageContext) => {\n if (typeof window !== \"undefined\" && pageContext.isClientSide) {\n const Turbolinks = window.Turbolinks;\n\n const currentVisit = Turbolinks.controller.currentVisit;\n\n if (pageContext.isHistoryNavigation) {\n // See Head.tsx\n const snapshot = Turbolinks.controller.getCachedSnapshotForLocation(\n window.location.href\n );\n Turbolinks.controller.historyPoppedToLocationWithRestorationIdentifier(\n window.location.href,\n \"\"\n );\n\n if (!!snapshot) {\n return {\n pageContext: {\n _snapshot: snapshot,\n },\n };\n } else {\n return { pageContext: {} };\n }\n } else if (\n Turbolinks.controller.started &&\n (!currentVisit || currentVisit.state === \"completed\")\n ) {\n throw new Error(\n `Bifrost does not support calling navigate() directly. Use navigate from \"@alignable/bifrost\" or Turbolinks.visit() instead.`\n );\n } else if (currentVisit?.state === \"started\") {\n // It would be great if Vike exposed some isRedirecting flag, but we can infer it\n currentVisit.updateIfRedirect(pageContext.urlOriginal);\n }\n }\n return { pageContext: {} };\n};\n\nexport default onBeforeRoute;\n"],"mappings":";AAIA,IAAM,gBAAgB,CAAC,gBAA6B;AAClD,MAAI,OAAO,WAAW,eAAe,YAAY,cAAc;AAC7D,UAAM,aAAa,OAAO;AAE1B,UAAM,eAAe,WAAW,WAAW;AAE3C,QAAI,YAAY,qBAAqB;AAEnC,YAAM,WAAW,WAAW,WAAW;AAAA,QACrC,OAAO,SAAS;AAAA,MAClB;AACA,iBAAW,WAAW;AAAA,QACpB,OAAO,SAAS;AAAA,QAChB;AAAA,MACF;AAEA,UAAI,CAAC,CAAC,UAAU;AACd,eAAO;AAAA,UACL,aAAa;AAAA,YACX,WAAW;AAAA,UACb;AAAA,QACF;AAAA,MACF,OAAO;AACL,eAAO,EAAE,aAAa,CAAC,EAAE;AAAA,MAC3B;AAAA,IACF,WACE,WAAW,WAAW,YACrB,CAAC,gBAAgB,aAAa,UAAU,cACzC;AACA,YAAM,IAAI;AAAA,QACR;AAAA,MACF;AAAA,IACF,WAAW,cAAc,UAAU,WAAW;AAE5C,mBAAa,iBAAiB,YAAY,WAAW;AAAA,IACvD;AAAA,EACF;AACA,SAAO,EAAE,aAAa,CAAC,EAAE;AAC3B;AAEA,IAAO,wBAAQ;","names":[]}
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ import '../config.js';
3
+ import '../../type-82702ff4.js';
4
+ import '../../controller-af32e731.js';
5
+ import 'vike/types';
6
+
7
+ declare function Page(): React.JSX.Element;
8
+
9
+ export { Page as default };
@@ -0,0 +1,25 @@
1
+ import "../../chunk-4W4KH2A5.js";
2
+
3
+ // renderer/wrapped/Page.tsx
4
+ import React from "react";
5
+ import { usePageContext } from "vike-react/usePageContext";
6
+ function Page() {
7
+ const pageContext = usePageContext();
8
+ const bodyHtml = pageContext.isClientSide ? pageContext._turbolinksProxy?.body?.innerHTML : pageContext._wrappedServerOnly?.bodyInnerHtml;
9
+ if (bodyHtml) {
10
+ return /* @__PURE__ */ React.createElement(
11
+ "div",
12
+ {
13
+ id: "proxied-body",
14
+ dangerouslySetInnerHTML: {
15
+ __html: bodyHtml
16
+ }
17
+ }
18
+ );
19
+ }
20
+ return /* @__PURE__ */ React.createElement(React.Fragment, null);
21
+ }
22
+ export {
23
+ Page as default
24
+ };
25
+ //# sourceMappingURL=Page.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../renderer/wrapped/Page.tsx"],"sourcesContent":["import React from \"react\";\nimport { usePageContext } from \"vike-react/usePageContext\";\nimport { type PageContext } from \"vike/types\";\nimport \"../config\";\nimport \"../../lib/type\";\n\nexport default function Page() {\n const pageContext = usePageContext();\n\n const bodyHtml = pageContext.isClientSide\n ? pageContext._turbolinksProxy?.body?.innerHTML\n : pageContext._wrappedServerOnly?.bodyInnerHtml;\n\n if (bodyHtml) {\n return (\n <div\n id=\"proxied-body\"\n dangerouslySetInnerHTML={{\n __html: bodyHtml,\n }}\n />\n );\n }\n return <></>;\n}\n"],"mappings":";;;AAAA,OAAO,WAAW;AAClB,SAAS,sBAAsB;AAKhB,SAAR,OAAwB;AAC7B,QAAM,cAAc,eAAe;AAEnC,QAAM,WAAW,YAAY,eACzB,YAAY,kBAAkB,MAAM,YACpC,YAAY,oBAAoB;AAEpC,MAAI,UAAU;AACZ,WACE;AAAA,MAAC;AAAA;AAAA,QACC,IAAG;AAAA,QACH,yBAAyB;AAAA,UACvB,QAAQ;AAAA,QACV;AAAA;AAAA,IACF;AAAA,EAEJ;AACA,SAAO,wDAAE;AACX;","names":[]}
@@ -0,0 +1,7 @@
1
+ import '../../type-82702ff4.js';
2
+ import { PageContextClient } from 'vike/types';
3
+ import '../../controller-af32e731.js';
4
+
5
+ declare function wrappedOnAfterRenderClient(pageContext: PageContextClient): Promise<void>;
6
+
7
+ export { wrappedOnAfterRenderClient as default };
@@ -0,0 +1,30 @@
1
+ import {
2
+ Turbolinks
3
+ } from "../../chunk-NS2C4D24.js";
4
+
5
+ // lib/getElementAttributes.ts
6
+ function getElementAttributes(element) {
7
+ const bodyAttrs = {};
8
+ element.getAttributeNames().forEach((name) => {
9
+ bodyAttrs[name] = element.getAttribute(name);
10
+ });
11
+ return bodyAttrs;
12
+ }
13
+
14
+ // renderer/wrapped/onAfterRenderClient.ts
15
+ async function wrappedOnAfterRenderClient(pageContext) {
16
+ const { proxyLayoutInfo } = pageContext;
17
+ const bodyEl = document.getElementById("proxied-body");
18
+ Turbolinks._vpsCachePageContext({
19
+ proxyLayoutInfo,
20
+ bodyAttrs: getElementAttributes(bodyEl)
21
+ });
22
+ if (!pageContext.isHydration) {
23
+ await pageContext._waitForHeadScripts?.();
24
+ await Turbolinks._vikeAfterRender(true);
25
+ }
26
+ }
27
+ export {
28
+ wrappedOnAfterRenderClient as default
29
+ };
30
+ //# sourceMappingURL=onAfterRenderClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../lib/getElementAttributes.ts","../../../renderer/wrapped/onAfterRenderClient.ts"],"sourcesContent":["export function getElementAttributes(element: Element) {\n const bodyAttrs: Record<string, string> = {};\n element.getAttributeNames().forEach((name) => {\n bodyAttrs[name] = element.getAttribute(name)!;\n });\n return bodyAttrs;\n}\n","import \"../../lib/type\";\nimport type { PageContextClient } from \"vike/types\";\nimport { Turbolinks } from \"../../lib/turbolinks\";\nimport { getElementAttributes } from \"../../lib/getElementAttributes\";\n\nexport default async function wrappedOnAfterRenderClient(\n pageContext: PageContextClient\n) {\n const { proxyLayoutInfo } = pageContext;\n const bodyEl = document.getElementById(\"proxied-body\")!;\n Turbolinks._vpsCachePageContext({\n proxyLayoutInfo,\n bodyAttrs: getElementAttributes(bodyEl),\n });\n if (!pageContext.isHydration) {\n // On client navigation, tell turbolinks to run scripts and fire events\n await pageContext._waitForHeadScripts?.();\n await Turbolinks._vikeAfterRender(true);\n }\n}\n"],"mappings":";;;;;AAAO,SAAS,qBAAqB,SAAkB;AACrD,QAAM,YAAoC,CAAC;AAC3C,UAAQ,kBAAkB,EAAE,QAAQ,CAAC,SAAS;AAC5C,cAAU,IAAI,IAAI,QAAQ,aAAa,IAAI;AAAA,EAC7C,CAAC;AACD,SAAO;AACT;;;ACDA,eAAO,2BACL,aACA;AACA,QAAM,EAAE,gBAAgB,IAAI;AAC5B,QAAM,SAAS,SAAS,eAAe,cAAc;AACrD,aAAW,qBAAqB;AAAA,IAC9B;AAAA,IACA,WAAW,qBAAqB,MAAM;AAAA,EACxC,CAAC;AACD,MAAI,CAAC,YAAY,aAAa;AAE5B,UAAM,YAAY,sBAAsB;AACxC,UAAM,WAAW,iBAAiB,IAAI;AAAA,EACxC;AACF;","names":[]}
@@ -0,0 +1,7 @@
1
+ import '../../type-82702ff4.js';
2
+ import { PageContextClient } from 'vike/types';
3
+ import '../../controller-af32e731.js';
4
+
5
+ declare function wrappedOnBeforeRender(pageContext: PageContextClient): Promise<void>;
6
+
7
+ export { wrappedOnBeforeRender as default };
@@ -0,0 +1,40 @@
1
+ // renderer/wrapped/onBeforeRender.client.ts
2
+ import { redirect } from "vike/abort";
3
+ async function wrappedOnBeforeRender(pageContext) {
4
+ if (pageContext.isClientSide && !pageContext?._snapshot && !pageContext.isHydration) {
5
+ const resp = await fetch(pageContext.urlOriginal, {
6
+ headers: { ...pageContext.config.proxyHeaders, accept: "text/html" }
7
+ });
8
+ if (resp.redirected) {
9
+ const parsedUrl = new URL(resp.url);
10
+ if (window.location.origin === parsedUrl.origin) {
11
+ throw redirect(parsedUrl.pathname + parsedUrl.search + parsedUrl.hash);
12
+ } else {
13
+ throw redirect(resp.url);
14
+ }
15
+ }
16
+ if (!resp.ok) {
17
+ throw redirect(resp.url);
18
+ }
19
+ const html = await resp.text();
20
+ const layoutInfo = pageContext.config.getLayout(
21
+ Object.fromEntries(resp.headers.entries())
22
+ );
23
+ if (!layoutInfo) {
24
+ throw redirect(resp.url);
25
+ }
26
+ const parsed = document.createElement("html");
27
+ parsed.innerHTML = html;
28
+ const bodyEl = parsed.querySelector("body");
29
+ const headEl = parsed.querySelector("head");
30
+ pageContext.proxyLayoutInfo = layoutInfo;
31
+ pageContext._turbolinksProxy = {
32
+ body: bodyEl,
33
+ head: headEl
34
+ };
35
+ }
36
+ }
37
+ export {
38
+ wrappedOnBeforeRender as default
39
+ };
40
+ //# sourceMappingURL=onBeforeRender.client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../renderer/wrapped/onBeforeRender.client.ts"],"sourcesContent":["import \"../../lib/type\";\nimport type { PageContextClient } from \"vike/types\";\nimport { redirect } from \"vike/abort\";\n\n// onBeforeRender runs before changing the browser location, so `throw redirect` works\n// we wait for onBeforeRenderClient to call mergeHead, which runs after browser location change\n// Possibly could move this back into onBeforeRenderClient: https://github.com/vikejs/vike/pull/2820\nexport default async function wrappedOnBeforeRender(\n pageContext: PageContextClient\n) {\n if (\n pageContext.isClientSide &&\n !pageContext?._snapshot &&\n !pageContext.isHydration\n ) {\n /*\n Mermaid diagram of client side navigation logic:\n\n Vike Router --> Proxy Mode\n Proxy Mode -->|wrapped| Request Legacy Backend\n Request Legacy Backend -->|redirect| Vike Router\n Request Legacy Backend -->|html| Render Wrapped Page\n Proxy Mode -->|false| Render Vike Page\n Proxy Mode -->|passthru| Browser Navigation\n\n ┌─────────────┐ ┌────────────┐ ┌────────────────────────┐ ┌─────────────────────┐\n │ │ │ │ │ │ │ │\n │ Vike Router ├────►│ Proxy Mode ├─wrapped►│ Request Legacy Backend ├html─►│ Render Wrapped Page │\n │ │ │ │ │ │ │ │\n └─────────────┘ └──────┬─────┘ └────────────┬───────────┘ └─────────────────────┘\n ▲ │ redirect \n └───────────────────┼────────────────────────────┘ \n false \n │ ┌────────────────────────┐ \n │ │ │ \n ├──────────────►│ Render Vike Page │ \n passthru │ │ \n │ └────────────────────────┘ \n │ \n │ ┌────────────────────────┐ \n │ │ │ \n └──────────────►│ Browser Navigation │ \n │ │ \n └────────────────────────┘ \n\n The Vike router must run on every redirect, because the legacy backend could redirect to a Vike page.\n The browser follows redirects automatically, which hits the vike server, which will passthru if needed\n It would be more performant to run the Vike router on the client, but the browser does not expose redirect info.\n Optimization: use serviceworker to intercept redirects.\n */\n const resp = await fetch(pageContext.urlOriginal, {\n headers: { ...pageContext.config.proxyHeaders, accept: \"text/html\" },\n });\n\n if (resp.redirected) {\n const parsedUrl = new URL(resp.url);\n // Need to redirect to run vike router (in case redirect is not wrapped page)\n // Downside is we will make another network request\n // TODO: Can we prevent the double request? Move to server side and throw redirect on 3xx?\n if (window.location.origin === parsedUrl.origin) {\n // redirect needs to start with \"/\" or vike will do hard reload\n throw redirect(parsedUrl.pathname + parsedUrl.search + parsedUrl.hash);\n } else {\n // external redirect\n throw redirect(resp.url);\n }\n }\n if (!resp.ok) {\n throw redirect(resp.url);\n }\n const html = await resp.text();\n const layoutInfo = pageContext.config.getLayout!(\n Object.fromEntries(resp.headers.entries())\n );\n if (!layoutInfo) {\n // Fallback to full reload if layout not found\n // window.location.href = resp.url;\n throw redirect(resp.url);\n }\n\n const parsed = document.createElement(\"html\");\n parsed.innerHTML = html;\n const bodyEl = parsed.querySelector(\"body\")!;\n const headEl = parsed.querySelector(\"head\")!;\n pageContext.proxyLayoutInfo = layoutInfo;\n pageContext._turbolinksProxy = {\n body: bodyEl,\n head: headEl,\n };\n }\n}\n"],"mappings":";AAEA,SAAS,gBAAgB;AAKzB,eAAO,sBACL,aACA;AACA,MACE,YAAY,gBACZ,CAAC,aAAa,aACd,CAAC,YAAY,aACb;AAoCA,UAAM,OAAO,MAAM,MAAM,YAAY,aAAa;AAAA,MAChD,SAAS,EAAE,GAAG,YAAY,OAAO,cAAc,QAAQ,YAAY;AAAA,IACrE,CAAC;AAED,QAAI,KAAK,YAAY;AACnB,YAAM,YAAY,IAAI,IAAI,KAAK,GAAG;AAIlC,UAAI,OAAO,SAAS,WAAW,UAAU,QAAQ;AAE/C,cAAM,SAAS,UAAU,WAAW,UAAU,SAAS,UAAU,IAAI;AAAA,MACvE,OAAO;AAEL,cAAM,SAAS,KAAK,GAAG;AAAA,MACzB;AAAA,IACF;AACA,QAAI,CAAC,KAAK,IAAI;AACZ,YAAM,SAAS,KAAK,GAAG;AAAA,IACzB;AACA,UAAM,OAAO,MAAM,KAAK,KAAK;AAC7B,UAAM,aAAa,YAAY,OAAO;AAAA,MACpC,OAAO,YAAY,KAAK,QAAQ,QAAQ,CAAC;AAAA,IAC3C;AACA,QAAI,CAAC,YAAY;AAGf,YAAM,SAAS,KAAK,GAAG;AAAA,IACzB;AAEA,UAAM,SAAS,SAAS,cAAc,MAAM;AAC5C,WAAO,YAAY;AACnB,UAAM,SAAS,OAAO,cAAc,MAAM;AAC1C,UAAM,SAAS,OAAO,cAAc,MAAM;AAC1C,gBAAY,kBAAkB;AAC9B,gBAAY,mBAAmB;AAAA,MAC7B,MAAM;AAAA,MACN,MAAM;AAAA,IACR;AAAA,EACF;AACF;","names":[]}
@@ -0,0 +1,7 @@
1
+ import '../../type-82702ff4.js';
2
+ import { PageContextClient } from 'vike/types';
3
+ import '../../controller-af32e731.js';
4
+
5
+ declare function wrappedOnBeforeRenderClient(pageContext: PageContextClient): Promise<void>;
6
+
7
+ export { wrappedOnBeforeRenderClient as default };
@@ -0,0 +1,172 @@
1
+ import {
2
+ Turbolinks,
3
+ copyElementAttributes,
4
+ createScriptElement
5
+ } from "../../chunk-NS2C4D24.js";
6
+
7
+ // lib/turbolinks/mergeHead.ts
8
+ var allHeadScriptsEverRun = {};
9
+ var firstLoad = true;
10
+ var lastTrackedScriptSignature;
11
+ function mergeHead(head) {
12
+ const newHead = categorizeHead(head);
13
+ const oldHead = categorizeHead(document.head);
14
+ const reload = () => window.Turbolinks.controller.viewInvalidated();
15
+ if (head.querySelector('meta[name="turbolinks-visit-control"]')?.getAttribute("content") === "reload") {
16
+ reload();
17
+ }
18
+ lastTrackedScriptSignature = lastTrackedScriptSignature || trackedElementSignature([...oldHead.scripts, ...oldHead.stylesheets]);
19
+ if (lastTrackedScriptSignature !== trackedElementSignature([...newHead.scripts, ...newHead.stylesheets])) {
20
+ reload();
21
+ }
22
+ if (firstLoad) {
23
+ for (const element of oldHead.scripts) {
24
+ allHeadScriptsEverRun[element.outerHTML] = {
25
+ tracked: elementIsTracked(element)
26
+ };
27
+ }
28
+ firstLoad = false;
29
+ }
30
+ copyNewHeadStylesheetElements(newHead.stylesheets, oldHead.stylesheets);
31
+ removeCurrentHeadProvisionalElements(oldHead.provisional);
32
+ copyNewHeadProvisionalElements(newHead.provisional);
33
+ return copyNewHeadScriptElements(newHead.scripts);
34
+ }
35
+ function trackedElementSignature(scripts) {
36
+ return scripts.filter(elementIsTracked).map((s) => s.outerHTML).join();
37
+ }
38
+ function copyNewHeadStylesheetElements(next, prev) {
39
+ const existing = prev.map((s) => s.outerHTML);
40
+ for (const element of next) {
41
+ if (!existing.includes(element.outerHTML)) {
42
+ document.head.appendChild(element);
43
+ }
44
+ }
45
+ }
46
+ function copyNewHeadScriptElements(next) {
47
+ const deferredScripts = [];
48
+ let blockingLoaded = [];
49
+ const scriptsLoadedPromise = new Promise((onScriptsLoaded) => {
50
+ for (const element of next) {
51
+ const runBefore = element.outerHTML in allHeadScriptsEverRun;
52
+ if (!runBefore) {
53
+ let cb;
54
+ if (!element.defer && element.src) {
55
+ const idx = blockingLoaded.length;
56
+ cb = () => {
57
+ blockingLoaded[idx] = true;
58
+ if (blockingLoaded.every((v) => v)) {
59
+ onScriptsLoaded();
60
+ }
61
+ };
62
+ blockingLoaded.push(false);
63
+ }
64
+ const newElement = createScriptElement(element, cb);
65
+ if (element.defer) {
66
+ deferredScripts.push(newElement);
67
+ } else {
68
+ document.head.appendChild(newElement);
69
+ }
70
+ allHeadScriptsEverRun[element.outerHTML] = {
71
+ tracked: elementIsTracked(element)
72
+ };
73
+ }
74
+ }
75
+ if (blockingLoaded.length === 0) {
76
+ onScriptsLoaded();
77
+ }
78
+ });
79
+ return () => {
80
+ deferredScripts.forEach((s) => document.head.appendChild(s));
81
+ return scriptsLoadedPromise;
82
+ };
83
+ }
84
+ function removeCurrentHeadProvisionalElements(prev) {
85
+ for (const element of prev) {
86
+ document.head.removeChild(element);
87
+ }
88
+ }
89
+ function copyNewHeadProvisionalElements(next) {
90
+ for (const element of next) {
91
+ document.head.appendChild(element);
92
+ }
93
+ }
94
+ function elementIsTracked(element) {
95
+ return element.getAttribute("data-turbolinks-track") == "reload";
96
+ }
97
+ function elementIsScript(element) {
98
+ const tagName = element.tagName.toLowerCase();
99
+ return tagName == "script";
100
+ }
101
+ function elementIsStylesheet(element) {
102
+ const tagName = element.tagName.toLowerCase();
103
+ return tagName == "style" || tagName == "link" && element.getAttribute("rel") == "stylesheet";
104
+ }
105
+ function elementIsFavicon(element) {
106
+ const tagName = element.tagName.toLowerCase();
107
+ return tagName == "link" && element.getAttribute("rel") == "icon";
108
+ }
109
+ function categorizeHead(head) {
110
+ const scripts = [];
111
+ const stylesheets = [];
112
+ const provisional = [];
113
+ for (const element of head.children) {
114
+ if (elementIsFavicon(element)) {
115
+ continue;
116
+ }
117
+ if (elementIsScript(element)) {
118
+ scripts.push(element);
119
+ } else if (elementIsStylesheet(element)) {
120
+ stylesheets.push(element);
121
+ } else {
122
+ provisional.push(element);
123
+ }
124
+ }
125
+ return { scripts, stylesheets, provisional };
126
+ }
127
+
128
+ // renderer/wrapped/onBeforeRenderClient.ts
129
+ Turbolinks.start();
130
+ async function wrappedOnBeforeRenderClient(pageContext) {
131
+ if (pageContext.isHydration) {
132
+ pageContext._turbolinksProxy = {
133
+ body: document.getElementById("proxied-body")
134
+ };
135
+ return;
136
+ }
137
+ if (pageContext?._snapshot) {
138
+ if (pageContext.isHydration) {
139
+ throw new Error(
140
+ "restoration visit should never happen on initial render"
141
+ );
142
+ }
143
+ const { proxyLayoutInfo } = pageContext._snapshot.pageContext;
144
+ const { bodyEl, headEl } = pageContext._snapshot;
145
+ const proxyBodyEl = bodyEl.querySelector("#proxied-body");
146
+ if (!proxyBodyEl || !(proxyBodyEl instanceof HTMLElement)) {
147
+ throw new Error("proxied body not found in cached snapshot");
148
+ }
149
+ pageContext.proxyLayoutInfo = proxyLayoutInfo;
150
+ pageContext._turbolinksProxy = {
151
+ body: proxyBodyEl
152
+ };
153
+ await Turbolinks._vikeBeforeRender(() => {
154
+ pageContext._waitForHeadScripts = mergeHead(headEl);
155
+ });
156
+ copyBody(bodyEl);
157
+ } else {
158
+ const { head, body } = pageContext._turbolinksProxy;
159
+ await Turbolinks._vikeBeforeRender(() => {
160
+ pageContext._waitForHeadScripts = mergeHead(head);
161
+ });
162
+ copyBody(body);
163
+ }
164
+ }
165
+ function copyBody(bodyEl) {
166
+ document.body.getAttributeNames().forEach((n) => document.body.removeAttribute(n));
167
+ copyElementAttributes(document.body, bodyEl);
168
+ }
169
+ export {
170
+ wrappedOnBeforeRenderClient as default
171
+ };
172
+ //# sourceMappingURL=onBeforeRenderClient.js.map