Add smooth scroll globally

This commit is contained in:
2022-07-27 15:56:14 +02:00
parent 378c707d57
commit 0dba9b78c3
5 changed files with 156 additions and 64 deletions

View File

@@ -16,6 +16,7 @@
"lint": "eslint --ignore-path .gitignore ." "lint": "eslint --ignore-path .gitignore ."
}, },
"dependencies": { "dependencies": {
"@studio-freight/lenis": "^0.1.12",
"animejs": "^3.2.1", "animejs": "^3.2.1",
"dayjs": "^1.11.4", "dayjs": "^1.11.4",
"embla-carousel": "^6.2.0", "embla-carousel": "^6.2.0",
@@ -25,14 +26,14 @@
"tweakpane": "^3.1.0" "tweakpane": "^3.1.0"
}, },
"devDependencies": { "devDependencies": {
"@sveltejs/adapter-auto": "^1.0.0-next.63", "@sveltejs/adapter-auto": "^1.0.0-next.64",
"@sveltejs/adapter-node": "^1.0.0-next.84", "@sveltejs/adapter-node": "^1.0.0-next.85",
"@sveltejs/adapter-vercel": "^1.0.0-next.65", "@sveltejs/adapter-vercel": "^1.0.0-next.66",
"@sveltejs/kit": "^1.0.0-next.394", "@sveltejs/kit": "^1.0.0-next.396",
"@types/animejs": "^3.1.5", "@types/animejs": "^3.1.5",
"@typescript-eslint/eslint-plugin": "^5.31.0", "@typescript-eslint/eslint-plugin": "^5.31.0",
"@typescript-eslint/parser": "^5.31.0", "@typescript-eslint/parser": "^5.31.0",
"browserslist": "^4.21.2", "browserslist": "^4.21.3",
"cssnano": "^5.1.12", "cssnano": "^5.1.12",
"eslint": "^8.20.0", "eslint": "^8.20.0",
"eslint-plugin-svelte3": "^4.0.0", "eslint-plugin-svelte3": "^4.0.0",

168
pnpm-lock.yaml generated
View File

@@ -1,15 +1,16 @@
lockfileVersion: 5.4 lockfileVersion: 5.4
specifiers: specifiers:
'@sveltejs/adapter-auto': ^1.0.0-next.63 '@studio-freight/lenis': ^0.1.12
'@sveltejs/adapter-node': ^1.0.0-next.84 '@sveltejs/adapter-auto': ^1.0.0-next.64
'@sveltejs/adapter-vercel': ^1.0.0-next.65 '@sveltejs/adapter-node': ^1.0.0-next.85
'@sveltejs/kit': ^1.0.0-next.394 '@sveltejs/adapter-vercel': ^1.0.0-next.66
'@sveltejs/kit': ^1.0.0-next.396
'@types/animejs': ^3.1.5 '@types/animejs': ^3.1.5
'@typescript-eslint/eslint-plugin': ^5.31.0 '@typescript-eslint/eslint-plugin': ^5.31.0
'@typescript-eslint/parser': ^5.31.0 '@typescript-eslint/parser': ^5.31.0
animejs: ^3.2.1 animejs: ^3.2.1
browserslist: ^4.21.2 browserslist: ^4.21.3
cssnano: ^5.1.12 cssnano: ^5.1.12
dayjs: ^1.11.4 dayjs: ^1.11.4
embla-carousel: ^6.2.0 embla-carousel: ^6.2.0
@@ -34,6 +35,7 @@ specifiers:
vite: ^3.0.3 vite: ^3.0.3
dependencies: dependencies:
'@studio-freight/lenis': 0.1.12
animejs: 3.2.1 animejs: 3.2.1
dayjs: 1.11.4 dayjs: 1.11.4
embla-carousel: 6.2.0 embla-carousel: 6.2.0
@@ -43,20 +45,20 @@ dependencies:
tweakpane: 3.1.0 tweakpane: 3.1.0
devDependencies: devDependencies:
'@sveltejs/adapter-auto': 1.0.0-next.63 '@sveltejs/adapter-auto': 1.0.0-next.64
'@sveltejs/adapter-node': 1.0.0-next.84 '@sveltejs/adapter-node': 1.0.0-next.85
'@sveltejs/adapter-vercel': 1.0.0-next.65 '@sveltejs/adapter-vercel': 1.0.0-next.66
'@sveltejs/kit': 1.0.0-next.394_svelte@3.49.0+vite@3.0.3 '@sveltejs/kit': 1.0.0-next.396_svelte@3.49.0+vite@3.0.3
'@types/animejs': 3.1.5 '@types/animejs': 3.1.5
'@typescript-eslint/eslint-plugin': 5.31.0_d5zwcxr4bwkhmuo464cb3a2puu '@typescript-eslint/eslint-plugin': 5.31.0_d5zwcxr4bwkhmuo464cb3a2puu
'@typescript-eslint/parser': 5.31.0_he2ccbldppg44uulnyq4rwocfa '@typescript-eslint/parser': 5.31.0_he2ccbldppg44uulnyq4rwocfa
browserslist: 4.21.2 browserslist: 4.21.3
cssnano: 5.1.12_postcss@8.4.14 cssnano: 5.1.12_postcss@8.4.14
eslint: 8.20.0 eslint: 8.20.0
eslint-plugin-svelte3: 4.0.0_piwa6j2njmnknm35bh3wz5v52y eslint-plugin-svelte3: 4.0.0_piwa6j2njmnknm35bh3wz5v52y
postcss: 8.4.14 postcss: 8.4.14
postcss-focus-visible: 7.0.0_postcss@8.4.14 postcss-focus-visible: 7.0.0_postcss@8.4.14
postcss-normalize: 10.0.1_ueju2bwfzqc5aneogkggyoaage postcss-normalize: 10.0.1_bujjonwylnebbx3cl7qckr3eti
postcss-preset-env: 7.7.2_postcss@8.4.14 postcss-preset-env: 7.7.2_postcss@8.4.14
postcss-sort-media-queries: 4.2.1_postcss@8.4.14 postcss-sort-media-queries: 4.2.1_postcss@8.4.14
sass: 1.54.0 sass: 1.54.0
@@ -312,52 +314,61 @@ packages:
picomatch: 2.3.1 picomatch: 2.3.1
dev: true dev: true
/@sveltejs/adapter-auto/1.0.0-next.63: /@studio-freight/lenis/0.1.12:
resolution: {integrity: sha512-9KguXwROEJMyyoKrsizAilVSmtfWxEDn2Hbxk44SP8Kj5cgN7tFCxzbL2kmmqyV1CO1tOh5iNC2oWbyTfikXmw==} resolution: {integrity: sha512-hTXSFEgfCmjjzA2ogk3l07MYJ1SXYCdvQw+w8YQOiGmOmD4gAC3e8PRU9wZFUqMzbRle1to1s+ZNWAc8WdNeDw==}
dependencies: dependencies:
'@sveltejs/adapter-cloudflare': 1.0.0-next.30 path: 0.12.7
'@sveltejs/adapter-netlify': 1.0.0-next.70 stats.js: 0.17.0
'@sveltejs/adapter-vercel': 1.0.0-next.65 tiny-emitter: 2.1.0
virtual-scroll: 2.2.1
dev: false
/@sveltejs/adapter-auto/1.0.0-next.64:
resolution: {integrity: sha512-Q8DwcS6wl1GovzS9JJzaD/WL/Lfk1ur4nAF1HtmsUvZDpsPBVDqnK2AhYU4G3oFNiuHstrjAogMy5th8ptSFGw==}
dependencies:
'@sveltejs/adapter-cloudflare': 1.0.0-next.31
'@sveltejs/adapter-netlify': 1.0.0-next.71
'@sveltejs/adapter-vercel': 1.0.0-next.66
transitivePeerDependencies: transitivePeerDependencies:
- encoding - encoding
- supports-color - supports-color
dev: true dev: true
/@sveltejs/adapter-cloudflare/1.0.0-next.30: /@sveltejs/adapter-cloudflare/1.0.0-next.31:
resolution: {integrity: sha512-jIclgb58n3Uoo8TTudXSa7wmLP7Rn/ESLQS+zOUe0xsti5DG/eDhELTnSvkoSa2lJY21ym5rej/GSERRyeuBVw==} resolution: {integrity: sha512-HhEFZP72GJ8AZGgFECKIiayDcLaAWi65pI0AnBfiNhCifYSlH/mPNWNVD4AWRDnXnH6XU+FLwhGDnIDwytTyYg==}
dependencies: dependencies:
'@cloudflare/workers-types': 3.14.1 '@cloudflare/workers-types': 3.14.1
esbuild: 0.14.50 esbuild: 0.14.50
worktop: 0.8.0-next.14 worktop: 0.8.0-next.14
dev: true dev: true
/@sveltejs/adapter-netlify/1.0.0-next.70: /@sveltejs/adapter-netlify/1.0.0-next.71:
resolution: {integrity: sha512-lIXY6KIgIFBz4+mdvilx9Ny8oFV7T2iVTKLirJayoI/SqPWGAcxklvWvjGfS4QT8rS9pWKDaKRUQM4M/gl8LlA==} resolution: {integrity: sha512-la1CGtWO1xul1L3zEoFAoc4EX2uxZjrZcOMS3tkKB8drxhbQsNbnTE6fmSSMFiZXhxaikczrBgQwqIaDkLTmZg==}
dependencies: dependencies:
'@iarna/toml': 2.2.5 '@iarna/toml': 2.2.5
esbuild: 0.14.50 esbuild: 0.14.50
set-cookie-parser: 2.5.0 set-cookie-parser: 2.5.1
tiny-glob: 0.2.9 tiny-glob: 0.2.9
dev: true dev: true
/@sveltejs/adapter-node/1.0.0-next.84: /@sveltejs/adapter-node/1.0.0-next.85:
resolution: {integrity: sha512-MEt1Ej2yfmKJhyW1rfBeQbmCzeFvMSqUnH78pyHDvmaOH7/jfjBTu9UpBlkfObRMclo9ZW6P+1tiHE6gwXkesQ==} resolution: {integrity: sha512-rSiUAbFZbxP0QdcBmtIudR1F1jHUfjUNk7cguUfOnJ9HyuKmXxFctY6lz68pO1bX2kTHf9ixu9DKC7VfDmt2mg==}
dependencies: dependencies:
tiny-glob: 0.2.9 tiny-glob: 0.2.9
dev: true dev: true
/@sveltejs/adapter-vercel/1.0.0-next.65: /@sveltejs/adapter-vercel/1.0.0-next.66:
resolution: {integrity: sha512-RV3HL7Ic7pGgIoBSHPwN1pBX96Km1X683oHImPHAKX9h/WOvJZ3bY5+IWNRcR8tx9rPB5gfMRg+msvPSBr3RVw==} resolution: {integrity: sha512-s3Hcxu9nCG/rR3C3cFbdQGjTa5W4K2kRcc6S5Xefx7itbrw+4v3KpO8ZPB6qM55XDwVxuG7260NMHVI6MUGmSA==}
dependencies: dependencies:
'@vercel/nft': 0.20.1 '@vercel/nft': 0.21.0
esbuild: 0.14.50 esbuild: 0.14.50
transitivePeerDependencies: transitivePeerDependencies:
- encoding - encoding
- supports-color - supports-color
dev: true dev: true
/@sveltejs/kit/1.0.0-next.394_svelte@3.49.0+vite@3.0.3: /@sveltejs/kit/1.0.0-next.396_svelte@3.49.0+vite@3.0.3:
resolution: {integrity: sha512-YfRNSKdbvihHFvmQodaMlChcyf9dfU36FwK8WYQF5jqEmiRajLBb/ooU6RqPA0Z6j5okJHDSYBwxW8TP+nc+gg==} resolution: {integrity: sha512-bKFpuzp9QxPkOIOEIeNeedvxEMORNqBPxUmoJXDP/Se7MrSfcxYiamjBcKrG+bgGNWmV39nD3EvUox+CXno/Ig==}
engines: {node: '>=16.9'} engines: {node: '>=16.9'}
hasBin: true hasBin: true
peerDependencies: peerDependencies:
@@ -550,12 +561,13 @@ packages:
eslint-visitor-keys: 3.3.0 eslint-visitor-keys: 3.3.0
dev: true dev: true
/@vercel/nft/0.20.1: /@vercel/nft/0.21.0:
resolution: {integrity: sha512-hSLcr64KHOkcNiTAlv154K4p4faEFBwYIi2eIgu1QCDhB1qyQYvFuEhtw3eaapNjA4/7x/2jcclfCAjILua/ag==} resolution: {integrity: sha512-hFCAETfI5cG8l5iAiLhMC2bReC5K7SIybzrxGorv+eGspIbIFsVw7Vg85GovXm/LxA08pIDrAlrhR6GN36XB/Q==}
hasBin: true hasBin: true
dependencies: dependencies:
'@mapbox/node-pre-gyp': 1.0.9 '@mapbox/node-pre-gyp': 1.0.9
acorn: 8.8.0 acorn: 8.8.0
async-sema: 3.1.1
bindings: 1.5.0 bindings: 1.5.0
estree-walker: 2.0.2 estree-walker: 2.0.2
glob: 7.2.3 glob: 7.2.3
@@ -650,6 +662,10 @@ packages:
engines: {node: '>=8'} engines: {node: '>=8'}
dev: true dev: true
/async-sema/3.1.1:
resolution: {integrity: sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==}
dev: true
/autoprefixer/10.4.7_postcss@8.4.14: /autoprefixer/10.4.7_postcss@8.4.14:
resolution: {integrity: sha512-ypHju4Y2Oav95SipEcCcI5J7CGPuvz8oat7sUtYj3ClK44bldfvtvcxK6IEK++7rqB7YchDGzweZIBG+SD0ZAA==} resolution: {integrity: sha512-ypHju4Y2Oav95SipEcCcI5J7CGPuvz8oat7sUtYj3ClK44bldfvtvcxK6IEK++7rqB7YchDGzweZIBG+SD0ZAA==}
engines: {node: ^10 || ^12 || >=14} engines: {node: ^10 || ^12 || >=14}
@@ -657,7 +673,7 @@ packages:
peerDependencies: peerDependencies:
postcss: ^8.1.0 postcss: ^8.1.0
dependencies: dependencies:
browserslist: 4.21.2 browserslist: 4.21.3
caniuse-lite: 1.0.30001370 caniuse-lite: 1.0.30001370
fraction.js: 4.2.0 fraction.js: 4.2.0
normalize-range: 0.1.2 normalize-range: 0.1.2
@@ -699,15 +715,15 @@ packages:
fill-range: 7.0.1 fill-range: 7.0.1
dev: true dev: true
/browserslist/4.21.2: /browserslist/4.21.3:
resolution: {integrity: sha512-MonuOgAtUB46uP5CezYbRaYKBNt2LxP0yX+Pmj4LkcDFGkn9Cbpi83d9sCjwQDErXsIJSzY5oKGDbgOlF/LPAA==} resolution: {integrity: sha512-898rgRXLAyRkM1GryrrBHGkqA5hlpkV5MhtZwg9QXeiyLUYs2k00Un05aX5l2/yJIOObYKOpS2JNo8nJDE7fWQ==}
engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7}
hasBin: true hasBin: true
dependencies: dependencies:
caniuse-lite: 1.0.30001370 caniuse-lite: 1.0.30001370
electron-to-chromium: 1.4.199 electron-to-chromium: 1.4.202
node-releases: 2.0.6 node-releases: 2.0.6
update-browserslist-db: 1.0.5_browserslist@4.21.2 update-browserslist-db: 1.0.5_browserslist@4.21.3
dev: true dev: true
/buffer-crc32/0.2.13: /buffer-crc32/0.2.13:
@@ -722,7 +738,7 @@ packages:
/caniuse-api/3.0.0: /caniuse-api/3.0.0:
resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==} resolution: {integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==}
dependencies: dependencies:
browserslist: 4.21.2 browserslist: 4.21.3
caniuse-lite: 1.0.30001370 caniuse-lite: 1.0.30001370
lodash.memoize: 4.1.2 lodash.memoize: 4.1.2
lodash.uniq: 4.5.0 lodash.uniq: 4.5.0
@@ -1022,8 +1038,8 @@ packages:
domhandler: 4.3.1 domhandler: 4.3.1
dev: true dev: true
/electron-to-chromium/1.4.199: /electron-to-chromium/1.4.202:
resolution: {integrity: sha512-WIGME0Cs7oob3mxsJwHbeWkH0tYkIE/sjkJ8ML2BYmuRcjhRl/q5kVDXG7W9LOOKwzPU5M0LBlXRq9rlSgnNlg==} resolution: {integrity: sha512-JYsK2ex9lmQD27kj19fhXYxzFJ/phLAkLKHv49A5UY6kMRV2xED3qMMLg/voW/+0AR6wMiI+VxlmK9NDtdxlPA==}
dev: true dev: true
/embla-carousel/6.2.0: /embla-carousel/6.2.0:
@@ -1616,6 +1632,10 @@ packages:
wrappy: 1.0.2 wrappy: 1.0.2
dev: true dev: true
/inherits/2.0.3:
resolution: {integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==}
dev: false
/inherits/2.0.4: /inherits/2.0.4:
resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
dev: true dev: true
@@ -1927,6 +1947,13 @@ packages:
engines: {node: '>=8'} engines: {node: '>=8'}
dev: true dev: true
/path/0.12.7:
resolution: {integrity: sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==}
dependencies:
process: 0.11.10
util: 0.10.4
dev: false
/picocolors/1.0.0: /picocolors/1.0.0:
resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==}
dev: true dev: true
@@ -1946,14 +1973,14 @@ packages:
postcss-selector-parser: 6.0.10 postcss-selector-parser: 6.0.10
dev: true dev: true
/postcss-browser-comments/4.0.0_ueju2bwfzqc5aneogkggyoaage: /postcss-browser-comments/4.0.0_bujjonwylnebbx3cl7qckr3eti:
resolution: {integrity: sha512-X9X9/WN3KIvY9+hNERUqX9gncsgBA25XaeR+jshHz2j8+sYyHktHw1JdKuMjeLpGktXidqDhA7b/qm1mrBDmgg==} resolution: {integrity: sha512-X9X9/WN3KIvY9+hNERUqX9gncsgBA25XaeR+jshHz2j8+sYyHktHw1JdKuMjeLpGktXidqDhA7b/qm1mrBDmgg==}
engines: {node: '>=8'} engines: {node: '>=8'}
peerDependencies: peerDependencies:
browserslist: '>=4' browserslist: '>=4'
postcss: '>=8' postcss: '>=8'
dependencies: dependencies:
browserslist: 4.21.2 browserslist: 4.21.3
postcss: 8.4.14 postcss: 8.4.14
dev: true dev: true
@@ -2013,7 +2040,7 @@ packages:
peerDependencies: peerDependencies:
postcss: ^8.2.15 postcss: ^8.2.15
dependencies: dependencies:
browserslist: 4.21.2 browserslist: 4.21.3
caniuse-api: 3.0.0 caniuse-api: 3.0.0
colord: 2.9.2 colord: 2.9.2
postcss: 8.4.14 postcss: 8.4.14
@@ -2026,7 +2053,7 @@ packages:
peerDependencies: peerDependencies:
postcss: ^8.2.15 postcss: ^8.2.15
dependencies: dependencies:
browserslist: 4.21.2 browserslist: 4.21.3
postcss: 8.4.14 postcss: 8.4.14
postcss-value-parser: 4.2.0 postcss-value-parser: 4.2.0
dev: true dev: true
@@ -2239,7 +2266,7 @@ packages:
peerDependencies: peerDependencies:
postcss: ^8.2.15 postcss: ^8.2.15
dependencies: dependencies:
browserslist: 4.21.2 browserslist: 4.21.3
caniuse-api: 3.0.0 caniuse-api: 3.0.0
cssnano-utils: 3.1.0_postcss@8.4.14 cssnano-utils: 3.1.0_postcss@8.4.14
postcss: 8.4.14 postcss: 8.4.14
@@ -2274,7 +2301,7 @@ packages:
peerDependencies: peerDependencies:
postcss: ^8.2.15 postcss: ^8.2.15
dependencies: dependencies:
browserslist: 4.21.2 browserslist: 4.21.3
cssnano-utils: 3.1.0_postcss@8.4.14 cssnano-utils: 3.1.0_postcss@8.4.14
postcss: 8.4.14 postcss: 8.4.14
postcss-value-parser: 4.2.0 postcss-value-parser: 4.2.0
@@ -2366,7 +2393,7 @@ packages:
peerDependencies: peerDependencies:
postcss: ^8.2.15 postcss: ^8.2.15
dependencies: dependencies:
browserslist: 4.21.2 browserslist: 4.21.3
postcss: 8.4.14 postcss: 8.4.14
postcss-value-parser: 4.2.0 postcss-value-parser: 4.2.0
dev: true dev: true
@@ -2392,7 +2419,7 @@ packages:
postcss-value-parser: 4.2.0 postcss-value-parser: 4.2.0
dev: true dev: true
/postcss-normalize/10.0.1_ueju2bwfzqc5aneogkggyoaage: /postcss-normalize/10.0.1_bujjonwylnebbx3cl7qckr3eti:
resolution: {integrity: sha512-+5w18/rDev5mqERcG3W5GZNMJa1eoYYNGo8gB7tEwaos0ajk3ZXAI4mHGcNT47NE+ZnZD1pEpUOFLvltIwmeJA==} resolution: {integrity: sha512-+5w18/rDev5mqERcG3W5GZNMJa1eoYYNGo8gB7tEwaos0ajk3ZXAI4mHGcNT47NE+ZnZD1pEpUOFLvltIwmeJA==}
engines: {node: '>= 12'} engines: {node: '>= 12'}
peerDependencies: peerDependencies:
@@ -2400,9 +2427,9 @@ packages:
postcss: '>= 8' postcss: '>= 8'
dependencies: dependencies:
'@csstools/normalize.css': 12.0.0 '@csstools/normalize.css': 12.0.0
browserslist: 4.21.2 browserslist: 4.21.3
postcss: 8.4.14 postcss: 8.4.14
postcss-browser-comments: 4.0.0_ueju2bwfzqc5aneogkggyoaage postcss-browser-comments: 4.0.0_bujjonwylnebbx3cl7qckr3eti
sanitize.css: 13.0.0 sanitize.css: 13.0.0
dev: true dev: true
@@ -2469,7 +2496,7 @@ packages:
'@csstools/postcss-trigonometric-functions': 1.0.2_postcss@8.4.14 '@csstools/postcss-trigonometric-functions': 1.0.2_postcss@8.4.14
'@csstools/postcss-unset-value': 1.0.2_postcss@8.4.14 '@csstools/postcss-unset-value': 1.0.2_postcss@8.4.14
autoprefixer: 10.4.7_postcss@8.4.14 autoprefixer: 10.4.7_postcss@8.4.14
browserslist: 4.21.2 browserslist: 4.21.3
css-blank-pseudo: 3.0.3_postcss@8.4.14 css-blank-pseudo: 3.0.3_postcss@8.4.14
css-has-pseudo: 3.0.4_postcss@8.4.14 css-has-pseudo: 3.0.4_postcss@8.4.14
css-prefers-color-scheme: 6.0.3_postcss@8.4.14 css-prefers-color-scheme: 6.0.3_postcss@8.4.14
@@ -2522,7 +2549,7 @@ packages:
peerDependencies: peerDependencies:
postcss: ^8.2.15 postcss: ^8.2.15
dependencies: dependencies:
browserslist: 4.21.2 browserslist: 4.21.3
caniuse-api: 3.0.0 caniuse-api: 3.0.0
postcss: 8.4.14 postcss: 8.4.14
dev: true dev: true
@@ -2612,6 +2639,11 @@ packages:
engines: {node: '>= 0.8.0'} engines: {node: '>= 0.8.0'}
dev: true dev: true
/process/0.11.10:
resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==}
engines: {node: '>= 0.6.0'}
dev: false
/punycode/2.1.1: /punycode/2.1.1:
resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==}
engines: {node: '>=6'} engines: {node: '>=6'}
@@ -2691,8 +2723,8 @@ packages:
estree-walker: 0.6.1 estree-walker: 0.6.1
dev: true dev: true
/rollup/2.77.0: /rollup/2.77.2:
resolution: {integrity: sha512-vL8xjY4yOQEw79DvyXLijhnhh+R/O9zpF/LEgkCebZFtb6ELeN9H3/2T0r8+mp+fFTBHZ5qGpOpW2ela2zRt3g==} resolution: {integrity: sha512-m/4YzYgLcpMQbxX3NmAqDvwLATZzxt8bIegO78FZLl+lAgKJBd1DRAOeEiZcKOIOPjxE6ewHWHNgGEalFXuz1g==}
engines: {node: '>=10.0.0'} engines: {node: '>=10.0.0'}
hasBin: true hasBin: true
optionalDependencies: optionalDependencies:
@@ -2755,8 +2787,8 @@ packages:
resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==}
dev: true dev: true
/set-cookie-parser/2.5.0: /set-cookie-parser/2.5.1:
resolution: {integrity: sha512-cHMAtSXilfyBePduZEBVPTCftTQWz6ehWJD5YNUg4mqvRosrrjKbo4WS8JkB0/RxonMoohHm7cOGH60mDkRQ9w==} resolution: {integrity: sha512-1jeBGaKNGdEq4FgIrORu/N570dwoPYio8lSoYLWmX7sQ//0JY08Xh9o5pBcgmHQ/MbsYp/aZnOe1s1lIsbLprQ==}
dev: true dev: true
/shebang-command/2.0.0: /shebang-command/2.0.0:
@@ -2814,6 +2846,10 @@ packages:
deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility' deprecated: 'Modern JS already guarantees Array#sort() is a stable sort, so this library is deprecated. See the compatibility table on MDN: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort#browser_compatibility'
dev: true dev: true
/stats.js/0.17.0:
resolution: {integrity: sha512-hNKz8phvYLPEcRkeG1rsGmV5ChMjKDAWU7/OJJdDErPBNChQXxCo3WZurGpnWc6gZhAzEPFad1aVgyOANH1sMw==}
dev: false
/string-width/4.2.3: /string-width/4.2.3:
resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
engines: {node: '>=8'} engines: {node: '>=8'}
@@ -2854,7 +2890,7 @@ packages:
peerDependencies: peerDependencies:
postcss: ^8.2.15 postcss: ^8.2.15
dependencies: dependencies:
browserslist: 4.21.2 browserslist: 4.21.3
postcss: 8.4.14 postcss: 8.4.14
postcss-selector-parser: 6.0.10 postcss-selector-parser: 6.0.10
dev: true dev: true
@@ -3001,6 +3037,10 @@ packages:
resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==} resolution: {integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==}
dev: true dev: true
/tiny-emitter/2.1.0:
resolution: {integrity: sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==}
dev: false
/tiny-glob/0.2.9: /tiny-glob/0.2.9:
resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==}
dependencies: dependencies:
@@ -3059,13 +3099,13 @@ packages:
hasBin: true hasBin: true
dev: true dev: true
/update-browserslist-db/1.0.5_browserslist@4.21.2: /update-browserslist-db/1.0.5_browserslist@4.21.3:
resolution: {integrity: sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==} resolution: {integrity: sha512-dteFFpCyvuDdr9S/ff1ISkKt/9YZxKjI9WlRR99c180GaztJtRa/fn18FdxGVKVsnPY7/a/FDN68mcvUmP4U7Q==}
hasBin: true hasBin: true
peerDependencies: peerDependencies:
browserslist: '>= 4.21.0' browserslist: '>= 4.21.0'
dependencies: dependencies:
browserslist: 4.21.2 browserslist: 4.21.3
escalade: 3.1.1 escalade: 3.1.1
picocolors: 1.0.0 picocolors: 1.0.0
dev: true dev: true
@@ -3080,10 +3120,22 @@ packages:
resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
dev: true dev: true
/util/0.10.4:
resolution: {integrity: sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==}
dependencies:
inherits: 2.0.3
dev: false
/v8-compile-cache/2.3.0: /v8-compile-cache/2.3.0:
resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==}
dev: true dev: true
/virtual-scroll/2.2.1:
resolution: {integrity: sha512-RvjcLxluh7B/6GPzLgQ9d0NYG4yqEguTc3MU7AvxyPVltuo2Cq5RokTL9RKUaZCMJ64in2hus0d03gTtoHp55g==}
dependencies:
tiny-emitter: 2.1.0
dev: false
/vite/3.0.3_sass@1.54.0: /vite/3.0.3_sass@1.54.0:
resolution: {integrity: sha512-sDIpIcl3mv1NUaSzZwiXGEy1ZoWwwC2vkxUHY6yiDacR6zf//ZFuBJrozO62gedpE43pmxnLATNR5IYUdAEkMQ==} resolution: {integrity: sha512-sDIpIcl3mv1NUaSzZwiXGEy1ZoWwwC2vkxUHY6yiDacR6zf//ZFuBJrozO62gedpE43pmxnLATNR5IYUdAEkMQ==}
engines: {node: ^14.18.0 || >=16.0.0} engines: {node: ^14.18.0 || >=16.0.0}
@@ -3106,7 +3158,7 @@ packages:
esbuild: 0.14.50 esbuild: 0.14.50
postcss: 8.4.14 postcss: 8.4.14
resolve: 1.22.1 resolve: 1.22.1
rollup: 2.77.0 rollup: 2.77.2
sass: 1.54.0 sass: 1.54.0
optionalDependencies: optionalDependencies:
fsevents: 2.3.2 fsevents: 2.3.2

View File

@@ -0,0 +1,36 @@
<script lang="ts">
import { browser } from '$app/env'
import { onMount } from 'svelte'
import Lenis from '@studio-freight/lenis'
import { smoothScroll } from '$utils/stores'
let smoothScrollRAF = 0
// Setup smooth scroll
if (browser) {
$smoothScroll = new Lenis({
lerp: 0.1,
smooth: true,
direction: 'vertical',
})
}
// Lenis RAF
const update = () => {
$smoothScroll.raf()
smoothScrollRAF = requestAnimationFrame(update)
}
onMount(() => {
// Enable smooth scroll
requestAnimationFrame(update)
// Destroy
return () => {
cancelAnimationFrame(smoothScrollRAF)
$smoothScroll.destroy()
}
})
</script>

View File

@@ -10,6 +10,7 @@
import '$utils/polyfills' import '$utils/polyfills'
// Components // Components
import SVGSprite from '$components/SVGSprite.svelte' import SVGSprite from '$components/SVGSprite.svelte'
import SmoothScroll from '$components/SmoothScroll.svelte'
import Analytics from '$components/Analytics.svelte' import Analytics from '$components/Analytics.svelte'
import Switcher from '$components/molecules/Switcher.svelte' import Switcher from '$components/molecules/Switcher.svelte'
import Footer from '$components/organisms/Footer.svelte' import Footer from '$components/organisms/Footer.svelte'
@@ -80,6 +81,7 @@
{/if} {/if}
<SVGSprite /> <SVGSprite />
<SmoothScroll />
{#if browser} {#if browser}
<Analytics <Analytics

View File

@@ -1,4 +1,5 @@
import { writable, type Writable } from 'svelte/store' import { writable, type Writable } from 'svelte/store'
export const pageLoading: Writable<boolean> = writable(false) export const pageLoading: Writable<boolean> = writable(false)
export const previousPage: Writable<string> = writable('') export const previousPage: Writable<string> = writable('')
export const smoothScroll: Writable<any> = writable(null)