@@ -17,13 +17,22 @@ const nav = document.querySelector('nav')
1717const navContainer = document . getElementById ( 'nav-container' )
1818const navButton = document . getElementById ( 'nav-button' )
1919const navCloseButton = document . getElementById ( 'nav-close-button' )
20+ const navOverlay = document . getElementById ( 'nav-overlay' )
21+
22+ const changelogRoot = document . getElementById ( 'changelog' )
23+ const changelogContainer = document . getElementById ( 'changelog-container' )
2024
2125const responsiveEvent = window . matchMedia ( "only screen and (max-width: 768px)" )
2226
2327let navHidden = responsiveEvent . matches
28+ nav . classList . toggle ( 'hidden' , navHidden )
29+
30+ const recalcResponsiveSize = ( ) => {
31+ const sideWidth = `calc(${ main . getBoundingClientRect ( ) . x } px - 32px)`
2432
25- const recalcNavSize = ( ) =>
26- nav . style . width = `calc(${ main . getBoundingClientRect ( ) . x } px - 32px)`
33+ nav . style . width = sideWidth
34+ changelogRoot . style . width = sideWidth
35+ }
2736
2837const recalcNavRight = ( immediate = false ) => {
2938 const outside = responsiveEvent . matches
@@ -52,12 +61,12 @@ const toggleNav = (force = undefined) => {
5261 recalcNavRight ( )
5362}
5463
55- const recalcNav = ( immediate = false ) => {
56- recalcNavSize ( )
64+ const recalcResponsive = ( immediate = false ) => {
65+ recalcResponsiveSize ( )
5766 recalcNavRight ( immediate )
5867}
5968
60- recalcNav ( true )
69+ recalcResponsive ( true )
6170
6271navContainer . replaceChildren (
6372 ...Object
@@ -76,7 +85,8 @@ navContainer.replaceChildren(
7685
7786navButton . addEventListener ( 'click' , toggleNav )
7887navCloseButton . addEventListener ( 'click' , ( ) => toggleNav ( false ) )
79- responsiveEvent . addEventListener ( 'change' , recalcNav )
88+ responsiveEvent . addEventListener ( 'change' , recalcResponsive )
89+ navOverlay . addEventListener ( 'click' , ( ) => toggleNav ( false ) )
8090
8191if ( content )
8292 fetch ( content )
@@ -94,6 +104,28 @@ const changelog = await fetch('/content/changelog.json')
94104 . then ( ( r ) => r . json ( ) )
95105 . catch ( console . error )
96106
97- if ( changelog ) {
98-
99- }
107+ if ( changelog )
108+ changelogContainer . replaceChildren (
109+ ...changelog . map ( ( [ hash , title ] ) => {
110+ const line = document . createElement ( 'div' )
111+ line . className = 'line'
112+
113+ const hashLabel = document . createElement ( 'code' )
114+ hashLabel . className = 'hash'
115+ hashLabel . classList . toggle ( 'latest' , title . includes ( 'origin/HEAD' ) )
116+ hashLabel . classList . toggle ( 'local-latest' , title . includes ( 'HEAD ->' ) )
117+ hashLabel . textContent = hash . substring ( 0 , 7 )
118+ hashLabel . title = hash
119+
120+ const titleLabel = document . createElement ( 'div' )
121+ titleLabel . className = 'changelog-title'
122+ titleLabel . textContent = title . includes ( 'origin/HEAD' ) || title . includes ( 'HEAD ->' )
123+ ? title . replace ( / ^ \( .+ \) / , '' )
124+ : title
125+ titleLabel . title = title
126+
127+ line . append ( hashLabel , titleLabel )
128+
129+ return line
130+ } )
131+ )
0 commit comments