@@ -11,6 +11,11 @@ import { ThemeSwitch } from './components/theme-switch'
11
11
12
12
import { getPageData } from './modules/sanity/utils'
13
13
14
+ const FERN_CONTENT_WRAPPER_ID = 'fern-header-content-wrapper'
15
+ const DEVREV_CONTENT_WRAPPER_ID = 'devrev-header-content-wrapper'
16
+
17
+ const FERN_HEADER_CONTAINER_ID = 'fern-header'
18
+
14
19
const render = async ( ) => {
15
20
/*
16
21
* This is a where we try to make async data call.
@@ -29,18 +34,55 @@ const render = async () => {
29
34
ReactDOM . render ( React . createElement ( ThemeSwitch ) , wrapper )
30
35
}
31
36
32
- ReactDOM . render (
33
- React . createElement ( Header , {
34
- ...data . header ,
35
- version : theme == 'dark' ? 'light' : 'dark' ,
36
- } ) ,
37
- document . getElementById ( 'fern-header' ) ,
38
- ( ) => {
39
- // Once the header component is loaded, make it visible
40
- const header = document . getElementById ( 'fern-header' )
41
- if ( header && window . innerWidth > 1024 ) header . style . display = 'block'
42
- } ,
43
- )
37
+ const fernHeaderId = document . getElementById ( FERN_CONTENT_WRAPPER_ID )
38
+ const devrevHeaderId = document . getElementById ( DEVREV_CONTENT_WRAPPER_ID )
39
+
40
+ if ( ! fernHeaderId && ! devrevHeaderId ) {
41
+ // Main Container
42
+ const fernHeaderContainer = document . createElement ( 'div' )
43
+ fernHeaderContainer . setAttribute ( 'id' , FERN_HEADER_CONTAINER_ID )
44
+
45
+ // Fern Header
46
+ const fernContentWrapper = document . createElement ( 'div' )
47
+ fernContentWrapper . setAttribute ( 'id' , FERN_CONTENT_WRAPPER_ID )
48
+
49
+ const devrevContentWrapper = document . createElement ( 'div' )
50
+ devrevContentWrapper . setAttribute ( 'id' , DEVREV_CONTENT_WRAPPER_ID )
51
+
52
+ // Get existing fern-header element and its children
53
+ const mainHeaderWrapper = document . getElementById ( FERN_HEADER_CONTAINER_ID )
54
+
55
+ if ( mainHeaderWrapper ) {
56
+ // Move all children to the wrapper
57
+ while ( mainHeaderWrapper . firstChild ) {
58
+ fernContentWrapper . appendChild ( mainHeaderWrapper . firstChild )
59
+ }
60
+ }
61
+
62
+ fernHeaderContainer . appendChild ( fernContentWrapper )
63
+ fernHeaderContainer . appendChild ( devrevContentWrapper )
64
+
65
+ // Insert the new container where the original fern-header was
66
+ if ( mainHeaderWrapper ) {
67
+ mainHeaderWrapper . replaceWith ( fernHeaderContainer )
68
+ } else {
69
+ document . body . appendChild ( fernHeaderContainer )
70
+ }
71
+
72
+ ReactDOM . render (
73
+ React . createElement ( Header , {
74
+ ...data . header ,
75
+ version : theme == 'dark' ? 'light' : 'dark' ,
76
+ } ) ,
77
+ devrevContentWrapper ,
78
+ ( ) => {
79
+ // Once the header component is loaded, make it visible
80
+ const header = document . getElementById ( FERN_HEADER_CONTAINER_ID )
81
+ if ( header ) header . style . display = 'block'
82
+ }
83
+ )
84
+ }
85
+
44
86
ReactDOM . render (
45
87
React . createElement ( Footer , { ...data . footer } ) ,
46
88
document . getElementById ( 'fern-footer' ) ,
0 commit comments