-
Notifications
You must be signed in to change notification settings - Fork 1
/
gatsby-browser.js
42 lines (31 loc) · 1.12 KB
/
gatsby-browser.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
import { Provider } from "./src/services/provider"
import "./src/styles/libs/sanitize.scss"
import "./src/styles/global-styles.scss"
import "./src/styles/global-utilities.scss"
// ---------------------------------------- | Image Polyfill (IntersectionObserver)
export const onClientEntry = () => {
// IntersectionObserver polyfill for gatsby-background-image (Safari, IE)
if (!(`IntersectionObserver` in window)) {
import(`intersection-observer`)
console.log(`# IntersectionObserver is polyfilled!`)
}
}
// ---------------------------------------- | Scroll To Anchor
export const onRouteUpdate = ({ location }) => scrollToAnchor(location)
/**
* Smooth scroll to position of hash on page load.
*/
function scrollToAnchor(location, mainNavHeight = 0) {
if (location && location.hash) {
const item = document.querySelector(`${location.hash}`)
if (!item) return
const itemTop = item.offsetTop
window.scrollTo({
top: itemTop - mainNavHeight,
behavior: "smooth"
})
}
return true
}
// ---------------------------------------- | Global State Management
export const wrapRootElement = Provider