├── .gitignore ├── .prettierrc ├── .vscode └── extensions.json ├── README.md ├── index.html ├── package-lock.json ├── package.json ├── public └── vite.svg ├── src ├── App.vue ├── animations │ ├── observe.js │ ├── slider.js │ └── text.js ├── assets │ └── .gitkeep ├── components │ ├── .gitkeep │ └── landing.vue ├── main.js └── styles │ ├── abstracts │ ├── _mixins.scss │ └── _variables.scss │ ├── base │ ├── _generic.scss │ └── _normalize.scss │ └── main.scss └── vite.config.js /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | pnpm-debug.log* 8 | lerna-debug.log* 9 | 10 | node_modules 11 | dist 12 | dist-ssr 13 | *.local 14 | 15 | # Editor directories and files 16 | .vscode/* 17 | !.vscode/extensions.json 18 | .idea 19 | .DS_Store 20 | *.suo 21 | *.ntvs* 22 | *.njsproj 23 | *.sln 24 | *.sw? 25 | -------------------------------------------------------------------------------- /.prettierrc: -------------------------------------------------------------------------------- 1 | { 2 | "tabWidth": 4, 3 | "printWidth": 150 4 | } -------------------------------------------------------------------------------- /.vscode/extensions.json: -------------------------------------------------------------------------------- 1 | { 2 | "recommendations": ["Vue.volar", "Vue.vscode-typescript-vue-plugin"] 3 | } 4 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Vue 3 + Vite 2 | 3 | This template should help get you started developing with Vue 3 in Vite. The template uses Vue 3 ` 12 | 13 | 14 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vue-scss-vite", 3 | "version": "0.0.0", 4 | "lockfileVersion": 2, 5 | "requires": true, 6 | "packages": { 7 | "": { 8 | "name": "vue-scss-vite", 9 | "version": "0.0.0", 10 | "dependencies": { 11 | "gsap": "^3.11.5", 12 | "splitting": "^1.0.6", 13 | "three": "^0.151.3", 14 | "vue": "^3.2.45" 15 | }, 16 | "devDependencies": { 17 | "@vitejs/plugin-vue": "^4.0.0", 18 | "sass": "^1.59.2", 19 | "vite": "^4.1.0" 20 | } 21 | }, 22 | "node_modules/@babel/parser": { 23 | "version": "7.21.3", 24 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.3.tgz", 25 | "integrity": "sha512-lobG0d7aOfQRXh8AyklEAgZGvA4FShxo6xQbUrrT/cNBPUdIDojlokwJsQyCC/eKia7ifqM0yP+2DRZ4WKw2RQ==", 26 | "bin": { 27 | "parser": "bin/babel-parser.js" 28 | }, 29 | "engines": { 30 | "node": ">=6.0.0" 31 | } 32 | }, 33 | "node_modules/@esbuild/android-arm": { 34 | "version": "0.16.17", 35 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.17.tgz", 36 | "integrity": "sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==", 37 | "cpu": [ 38 | "arm" 39 | ], 40 | "dev": true, 41 | "optional": true, 42 | "os": [ 43 | "android" 44 | ], 45 | "engines": { 46 | "node": ">=12" 47 | } 48 | }, 49 | "node_modules/@esbuild/android-arm64": { 50 | "version": "0.16.17", 51 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.17.tgz", 52 | "integrity": "sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==", 53 | "cpu": [ 54 | "arm64" 55 | ], 56 | "dev": true, 57 | "optional": true, 58 | "os": [ 59 | "android" 60 | ], 61 | "engines": { 62 | "node": ">=12" 63 | } 64 | }, 65 | "node_modules/@esbuild/android-x64": { 66 | "version": "0.16.17", 67 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.17.tgz", 68 | "integrity": "sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==", 69 | "cpu": [ 70 | "x64" 71 | ], 72 | "dev": true, 73 | "optional": true, 74 | "os": [ 75 | "android" 76 | ], 77 | "engines": { 78 | "node": ">=12" 79 | } 80 | }, 81 | "node_modules/@esbuild/darwin-arm64": { 82 | "version": "0.16.17", 83 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz", 84 | "integrity": "sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==", 85 | "cpu": [ 86 | "arm64" 87 | ], 88 | "dev": true, 89 | "optional": true, 90 | "os": [ 91 | "darwin" 92 | ], 93 | "engines": { 94 | "node": ">=12" 95 | } 96 | }, 97 | "node_modules/@esbuild/darwin-x64": { 98 | "version": "0.16.17", 99 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz", 100 | "integrity": "sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==", 101 | "cpu": [ 102 | "x64" 103 | ], 104 | "dev": true, 105 | "optional": true, 106 | "os": [ 107 | "darwin" 108 | ], 109 | "engines": { 110 | "node": ">=12" 111 | } 112 | }, 113 | "node_modules/@esbuild/freebsd-arm64": { 114 | "version": "0.16.17", 115 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.17.tgz", 116 | "integrity": "sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==", 117 | "cpu": [ 118 | "arm64" 119 | ], 120 | "dev": true, 121 | "optional": true, 122 | "os": [ 123 | "freebsd" 124 | ], 125 | "engines": { 126 | "node": ">=12" 127 | } 128 | }, 129 | "node_modules/@esbuild/freebsd-x64": { 130 | "version": "0.16.17", 131 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.17.tgz", 132 | "integrity": "sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==", 133 | "cpu": [ 134 | "x64" 135 | ], 136 | "dev": true, 137 | "optional": true, 138 | "os": [ 139 | "freebsd" 140 | ], 141 | "engines": { 142 | "node": ">=12" 143 | } 144 | }, 145 | "node_modules/@esbuild/linux-arm": { 146 | "version": "0.16.17", 147 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.17.tgz", 148 | "integrity": "sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==", 149 | "cpu": [ 150 | "arm" 151 | ], 152 | "dev": true, 153 | "optional": true, 154 | "os": [ 155 | "linux" 156 | ], 157 | "engines": { 158 | "node": ">=12" 159 | } 160 | }, 161 | "node_modules/@esbuild/linux-arm64": { 162 | "version": "0.16.17", 163 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.17.tgz", 164 | "integrity": "sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==", 165 | "cpu": [ 166 | "arm64" 167 | ], 168 | "dev": true, 169 | "optional": true, 170 | "os": [ 171 | "linux" 172 | ], 173 | "engines": { 174 | "node": ">=12" 175 | } 176 | }, 177 | "node_modules/@esbuild/linux-ia32": { 178 | "version": "0.16.17", 179 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.17.tgz", 180 | "integrity": "sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==", 181 | "cpu": [ 182 | "ia32" 183 | ], 184 | "dev": true, 185 | "optional": true, 186 | "os": [ 187 | "linux" 188 | ], 189 | "engines": { 190 | "node": ">=12" 191 | } 192 | }, 193 | "node_modules/@esbuild/linux-loong64": { 194 | "version": "0.16.17", 195 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz", 196 | "integrity": "sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==", 197 | "cpu": [ 198 | "loong64" 199 | ], 200 | "dev": true, 201 | "optional": true, 202 | "os": [ 203 | "linux" 204 | ], 205 | "engines": { 206 | "node": ">=12" 207 | } 208 | }, 209 | "node_modules/@esbuild/linux-mips64el": { 210 | "version": "0.16.17", 211 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.17.tgz", 212 | "integrity": "sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==", 213 | "cpu": [ 214 | "mips64el" 215 | ], 216 | "dev": true, 217 | "optional": true, 218 | "os": [ 219 | "linux" 220 | ], 221 | "engines": { 222 | "node": ">=12" 223 | } 224 | }, 225 | "node_modules/@esbuild/linux-ppc64": { 226 | "version": "0.16.17", 227 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.17.tgz", 228 | "integrity": "sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==", 229 | "cpu": [ 230 | "ppc64" 231 | ], 232 | "dev": true, 233 | "optional": true, 234 | "os": [ 235 | "linux" 236 | ], 237 | "engines": { 238 | "node": ">=12" 239 | } 240 | }, 241 | "node_modules/@esbuild/linux-riscv64": { 242 | "version": "0.16.17", 243 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.17.tgz", 244 | "integrity": "sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==", 245 | "cpu": [ 246 | "riscv64" 247 | ], 248 | "dev": true, 249 | "optional": true, 250 | "os": [ 251 | "linux" 252 | ], 253 | "engines": { 254 | "node": ">=12" 255 | } 256 | }, 257 | "node_modules/@esbuild/linux-s390x": { 258 | "version": "0.16.17", 259 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.17.tgz", 260 | "integrity": "sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==", 261 | "cpu": [ 262 | "s390x" 263 | ], 264 | "dev": true, 265 | "optional": true, 266 | "os": [ 267 | "linux" 268 | ], 269 | "engines": { 270 | "node": ">=12" 271 | } 272 | }, 273 | "node_modules/@esbuild/linux-x64": { 274 | "version": "0.16.17", 275 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz", 276 | "integrity": "sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==", 277 | "cpu": [ 278 | "x64" 279 | ], 280 | "dev": true, 281 | "optional": true, 282 | "os": [ 283 | "linux" 284 | ], 285 | "engines": { 286 | "node": ">=12" 287 | } 288 | }, 289 | "node_modules/@esbuild/netbsd-x64": { 290 | "version": "0.16.17", 291 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.17.tgz", 292 | "integrity": "sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==", 293 | "cpu": [ 294 | "x64" 295 | ], 296 | "dev": true, 297 | "optional": true, 298 | "os": [ 299 | "netbsd" 300 | ], 301 | "engines": { 302 | "node": ">=12" 303 | } 304 | }, 305 | "node_modules/@esbuild/openbsd-x64": { 306 | "version": "0.16.17", 307 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.17.tgz", 308 | "integrity": "sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==", 309 | "cpu": [ 310 | "x64" 311 | ], 312 | "dev": true, 313 | "optional": true, 314 | "os": [ 315 | "openbsd" 316 | ], 317 | "engines": { 318 | "node": ">=12" 319 | } 320 | }, 321 | "node_modules/@esbuild/sunos-x64": { 322 | "version": "0.16.17", 323 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.17.tgz", 324 | "integrity": "sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==", 325 | "cpu": [ 326 | "x64" 327 | ], 328 | "dev": true, 329 | "optional": true, 330 | "os": [ 331 | "sunos" 332 | ], 333 | "engines": { 334 | "node": ">=12" 335 | } 336 | }, 337 | "node_modules/@esbuild/win32-arm64": { 338 | "version": "0.16.17", 339 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.17.tgz", 340 | "integrity": "sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==", 341 | "cpu": [ 342 | "arm64" 343 | ], 344 | "dev": true, 345 | "optional": true, 346 | "os": [ 347 | "win32" 348 | ], 349 | "engines": { 350 | "node": ">=12" 351 | } 352 | }, 353 | "node_modules/@esbuild/win32-ia32": { 354 | "version": "0.16.17", 355 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.17.tgz", 356 | "integrity": "sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==", 357 | "cpu": [ 358 | "ia32" 359 | ], 360 | "dev": true, 361 | "optional": true, 362 | "os": [ 363 | "win32" 364 | ], 365 | "engines": { 366 | "node": ">=12" 367 | } 368 | }, 369 | "node_modules/@esbuild/win32-x64": { 370 | "version": "0.16.17", 371 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz", 372 | "integrity": "sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==", 373 | "cpu": [ 374 | "x64" 375 | ], 376 | "dev": true, 377 | "optional": true, 378 | "os": [ 379 | "win32" 380 | ], 381 | "engines": { 382 | "node": ">=12" 383 | } 384 | }, 385 | "node_modules/@vitejs/plugin-vue": { 386 | "version": "4.0.0", 387 | "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.0.0.tgz", 388 | "integrity": "sha512-e0X4jErIxAB5oLtDqbHvHpJe/uWNkdpYV83AOG2xo2tEVSzCzewgJMtREZM30wXnM5ls90hxiOtAuVU6H5JgbA==", 389 | "dev": true, 390 | "engines": { 391 | "node": "^14.18.0 || >=16.0.0" 392 | }, 393 | "peerDependencies": { 394 | "vite": "^4.0.0", 395 | "vue": "^3.2.25" 396 | } 397 | }, 398 | "node_modules/@vue/compiler-core": { 399 | "version": "3.2.47", 400 | "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.47.tgz", 401 | "integrity": "sha512-p4D7FDnQb7+YJmO2iPEv0SQNeNzcbHdGByJDsT4lynf63AFkOTFN07HsiRSvjGo0QrxR/o3d0hUyNCUnBU2Tig==", 402 | "dependencies": { 403 | "@babel/parser": "^7.16.4", 404 | "@vue/shared": "3.2.47", 405 | "estree-walker": "^2.0.2", 406 | "source-map": "^0.6.1" 407 | } 408 | }, 409 | "node_modules/@vue/compiler-dom": { 410 | "version": "3.2.47", 411 | "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.47.tgz", 412 | "integrity": "sha512-dBBnEHEPoftUiS03a4ggEig74J2YBZ2UIeyfpcRM2tavgMWo4bsEfgCGsu+uJIL/vax9S+JztH8NmQerUo7shQ==", 413 | "dependencies": { 414 | "@vue/compiler-core": "3.2.47", 415 | "@vue/shared": "3.2.47" 416 | } 417 | }, 418 | "node_modules/@vue/compiler-sfc": { 419 | "version": "3.2.47", 420 | "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.47.tgz", 421 | "integrity": "sha512-rog05W+2IFfxjMcFw10tM9+f7i/+FFpZJJ5XHX72NP9eC2uRD+42M3pYcQqDXVYoj74kHMSEdQ/WmCjt8JFksQ==", 422 | "dependencies": { 423 | "@babel/parser": "^7.16.4", 424 | "@vue/compiler-core": "3.2.47", 425 | "@vue/compiler-dom": "3.2.47", 426 | "@vue/compiler-ssr": "3.2.47", 427 | "@vue/reactivity-transform": "3.2.47", 428 | "@vue/shared": "3.2.47", 429 | "estree-walker": "^2.0.2", 430 | "magic-string": "^0.25.7", 431 | "postcss": "^8.1.10", 432 | "source-map": "^0.6.1" 433 | } 434 | }, 435 | "node_modules/@vue/compiler-ssr": { 436 | "version": "3.2.47", 437 | "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.47.tgz", 438 | "integrity": "sha512-wVXC+gszhulcMD8wpxMsqSOpvDZ6xKXSVWkf50Guf/S+28hTAXPDYRTbLQ3EDkOP5Xz/+SY37YiwDquKbJOgZw==", 439 | "dependencies": { 440 | "@vue/compiler-dom": "3.2.47", 441 | "@vue/shared": "3.2.47" 442 | } 443 | }, 444 | "node_modules/@vue/reactivity": { 445 | "version": "3.2.47", 446 | "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.47.tgz", 447 | "integrity": "sha512-7khqQ/75oyyg+N/e+iwV6lpy1f5wq759NdlS1fpAhFXa8VeAIKGgk2E/C4VF59lx5b+Ezs5fpp/5WsRYXQiKxQ==", 448 | "dependencies": { 449 | "@vue/shared": "3.2.47" 450 | } 451 | }, 452 | "node_modules/@vue/reactivity-transform": { 453 | "version": "3.2.47", 454 | "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.47.tgz", 455 | "integrity": "sha512-m8lGXw8rdnPVVIdIFhf0LeQ/ixyHkH5plYuS83yop5n7ggVJU+z5v0zecwEnX7fa7HNLBhh2qngJJkxpwEEmYA==", 456 | "dependencies": { 457 | "@babel/parser": "^7.16.4", 458 | "@vue/compiler-core": "3.2.47", 459 | "@vue/shared": "3.2.47", 460 | "estree-walker": "^2.0.2", 461 | "magic-string": "^0.25.7" 462 | } 463 | }, 464 | "node_modules/@vue/runtime-core": { 465 | "version": "3.2.47", 466 | "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.47.tgz", 467 | "integrity": "sha512-RZxbLQIRB/K0ev0K9FXhNbBzT32H9iRtYbaXb0ZIz2usLms/D55dJR2t6cIEUn6vyhS3ALNvNthI+Q95C+NOpA==", 468 | "dependencies": { 469 | "@vue/reactivity": "3.2.47", 470 | "@vue/shared": "3.2.47" 471 | } 472 | }, 473 | "node_modules/@vue/runtime-dom": { 474 | "version": "3.2.47", 475 | "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.47.tgz", 476 | "integrity": "sha512-ArXrFTjS6TsDei4qwNvgrdmHtD930KgSKGhS5M+j8QxXrDJYLqYw4RRcDy1bz1m1wMmb6j+zGLifdVHtkXA7gA==", 477 | "dependencies": { 478 | "@vue/runtime-core": "3.2.47", 479 | "@vue/shared": "3.2.47", 480 | "csstype": "^2.6.8" 481 | } 482 | }, 483 | "node_modules/@vue/server-renderer": { 484 | "version": "3.2.47", 485 | "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.47.tgz", 486 | "integrity": "sha512-dN9gc1i8EvmP9RCzvneONXsKfBRgqFeFZLurmHOveL7oH6HiFXJw5OGu294n1nHc/HMgTy6LulU/tv5/A7f/LA==", 487 | "dependencies": { 488 | "@vue/compiler-ssr": "3.2.47", 489 | "@vue/shared": "3.2.47" 490 | }, 491 | "peerDependencies": { 492 | "vue": "3.2.47" 493 | } 494 | }, 495 | "node_modules/@vue/shared": { 496 | "version": "3.2.47", 497 | "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.47.tgz", 498 | "integrity": "sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ==" 499 | }, 500 | "node_modules/anymatch": { 501 | "version": "3.1.3", 502 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", 503 | "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", 504 | "dev": true, 505 | "dependencies": { 506 | "normalize-path": "^3.0.0", 507 | "picomatch": "^2.0.4" 508 | }, 509 | "engines": { 510 | "node": ">= 8" 511 | } 512 | }, 513 | "node_modules/binary-extensions": { 514 | "version": "2.2.0", 515 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", 516 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", 517 | "dev": true, 518 | "engines": { 519 | "node": ">=8" 520 | } 521 | }, 522 | "node_modules/braces": { 523 | "version": "3.0.2", 524 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 525 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 526 | "dev": true, 527 | "dependencies": { 528 | "fill-range": "^7.0.1" 529 | }, 530 | "engines": { 531 | "node": ">=8" 532 | } 533 | }, 534 | "node_modules/chokidar": { 535 | "version": "3.5.3", 536 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", 537 | "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", 538 | "dev": true, 539 | "funding": [ 540 | { 541 | "type": "individual", 542 | "url": "https://paulmillr.com/funding/" 543 | } 544 | ], 545 | "dependencies": { 546 | "anymatch": "~3.1.2", 547 | "braces": "~3.0.2", 548 | "glob-parent": "~5.1.2", 549 | "is-binary-path": "~2.1.0", 550 | "is-glob": "~4.0.1", 551 | "normalize-path": "~3.0.0", 552 | "readdirp": "~3.6.0" 553 | }, 554 | "engines": { 555 | "node": ">= 8.10.0" 556 | }, 557 | "optionalDependencies": { 558 | "fsevents": "~2.3.2" 559 | } 560 | }, 561 | "node_modules/csstype": { 562 | "version": "2.6.21", 563 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz", 564 | "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==" 565 | }, 566 | "node_modules/esbuild": { 567 | "version": "0.16.17", 568 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.17.tgz", 569 | "integrity": "sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==", 570 | "dev": true, 571 | "hasInstallScript": true, 572 | "bin": { 573 | "esbuild": "bin/esbuild" 574 | }, 575 | "engines": { 576 | "node": ">=12" 577 | }, 578 | "optionalDependencies": { 579 | "@esbuild/android-arm": "0.16.17", 580 | "@esbuild/android-arm64": "0.16.17", 581 | "@esbuild/android-x64": "0.16.17", 582 | "@esbuild/darwin-arm64": "0.16.17", 583 | "@esbuild/darwin-x64": "0.16.17", 584 | "@esbuild/freebsd-arm64": "0.16.17", 585 | "@esbuild/freebsd-x64": "0.16.17", 586 | "@esbuild/linux-arm": "0.16.17", 587 | "@esbuild/linux-arm64": "0.16.17", 588 | "@esbuild/linux-ia32": "0.16.17", 589 | "@esbuild/linux-loong64": "0.16.17", 590 | "@esbuild/linux-mips64el": "0.16.17", 591 | "@esbuild/linux-ppc64": "0.16.17", 592 | "@esbuild/linux-riscv64": "0.16.17", 593 | "@esbuild/linux-s390x": "0.16.17", 594 | "@esbuild/linux-x64": "0.16.17", 595 | "@esbuild/netbsd-x64": "0.16.17", 596 | "@esbuild/openbsd-x64": "0.16.17", 597 | "@esbuild/sunos-x64": "0.16.17", 598 | "@esbuild/win32-arm64": "0.16.17", 599 | "@esbuild/win32-ia32": "0.16.17", 600 | "@esbuild/win32-x64": "0.16.17" 601 | } 602 | }, 603 | "node_modules/estree-walker": { 604 | "version": "2.0.2", 605 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", 606 | "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" 607 | }, 608 | "node_modules/fill-range": { 609 | "version": "7.0.1", 610 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 611 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 612 | "dev": true, 613 | "dependencies": { 614 | "to-regex-range": "^5.0.1" 615 | }, 616 | "engines": { 617 | "node": ">=8" 618 | } 619 | }, 620 | "node_modules/fsevents": { 621 | "version": "2.3.2", 622 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 623 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 624 | "dev": true, 625 | "hasInstallScript": true, 626 | "optional": true, 627 | "os": [ 628 | "darwin" 629 | ], 630 | "engines": { 631 | "node": "^8.16.0 || ^10.6.0 || >=11.0.0" 632 | } 633 | }, 634 | "node_modules/function-bind": { 635 | "version": "1.1.1", 636 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 637 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 638 | "dev": true 639 | }, 640 | "node_modules/glob-parent": { 641 | "version": "5.1.2", 642 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 643 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 644 | "dev": true, 645 | "dependencies": { 646 | "is-glob": "^4.0.1" 647 | }, 648 | "engines": { 649 | "node": ">= 6" 650 | } 651 | }, 652 | "node_modules/gsap": { 653 | "version": "3.11.5", 654 | "resolved": "https://registry.npmjs.org/gsap/-/gsap-3.11.5.tgz", 655 | "integrity": "sha512-Q89nKCLgoX5xUjznh9LcaIUkz54k1voNucT1Rpf9SJNFIQznBwFqt5qUUQbeVInFyN/n18OUJkpeI6CNEDt74w==" 656 | }, 657 | "node_modules/has": { 658 | "version": "1.0.3", 659 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 660 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 661 | "dev": true, 662 | "dependencies": { 663 | "function-bind": "^1.1.1" 664 | }, 665 | "engines": { 666 | "node": ">= 0.4.0" 667 | } 668 | }, 669 | "node_modules/immutable": { 670 | "version": "4.3.0", 671 | "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.0.tgz", 672 | "integrity": "sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==", 673 | "dev": true 674 | }, 675 | "node_modules/is-binary-path": { 676 | "version": "2.1.0", 677 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 678 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 679 | "dev": true, 680 | "dependencies": { 681 | "binary-extensions": "^2.0.0" 682 | }, 683 | "engines": { 684 | "node": ">=8" 685 | } 686 | }, 687 | "node_modules/is-core-module": { 688 | "version": "2.11.0", 689 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", 690 | "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", 691 | "dev": true, 692 | "dependencies": { 693 | "has": "^1.0.3" 694 | }, 695 | "funding": { 696 | "url": "https://github.com/sponsors/ljharb" 697 | } 698 | }, 699 | "node_modules/is-extglob": { 700 | "version": "2.1.1", 701 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 702 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 703 | "dev": true, 704 | "engines": { 705 | "node": ">=0.10.0" 706 | } 707 | }, 708 | "node_modules/is-glob": { 709 | "version": "4.0.3", 710 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 711 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 712 | "dev": true, 713 | "dependencies": { 714 | "is-extglob": "^2.1.1" 715 | }, 716 | "engines": { 717 | "node": ">=0.10.0" 718 | } 719 | }, 720 | "node_modules/is-number": { 721 | "version": "7.0.0", 722 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 723 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 724 | "dev": true, 725 | "engines": { 726 | "node": ">=0.12.0" 727 | } 728 | }, 729 | "node_modules/magic-string": { 730 | "version": "0.25.9", 731 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", 732 | "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", 733 | "dependencies": { 734 | "sourcemap-codec": "^1.4.8" 735 | } 736 | }, 737 | "node_modules/nanoid": { 738 | "version": "3.3.4", 739 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", 740 | "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", 741 | "bin": { 742 | "nanoid": "bin/nanoid.cjs" 743 | }, 744 | "engines": { 745 | "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" 746 | } 747 | }, 748 | "node_modules/normalize-path": { 749 | "version": "3.0.0", 750 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 751 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 752 | "dev": true, 753 | "engines": { 754 | "node": ">=0.10.0" 755 | } 756 | }, 757 | "node_modules/path-parse": { 758 | "version": "1.0.7", 759 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 760 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 761 | "dev": true 762 | }, 763 | "node_modules/picocolors": { 764 | "version": "1.0.0", 765 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 766 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" 767 | }, 768 | "node_modules/picomatch": { 769 | "version": "2.3.1", 770 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 771 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 772 | "dev": true, 773 | "engines": { 774 | "node": ">=8.6" 775 | }, 776 | "funding": { 777 | "url": "https://github.com/sponsors/jonschlinkert" 778 | } 779 | }, 780 | "node_modules/postcss": { 781 | "version": "8.4.21", 782 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", 783 | "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", 784 | "funding": [ 785 | { 786 | "type": "opencollective", 787 | "url": "https://opencollective.com/postcss/" 788 | }, 789 | { 790 | "type": "tidelift", 791 | "url": "https://tidelift.com/funding/github/npm/postcss" 792 | } 793 | ], 794 | "dependencies": { 795 | "nanoid": "^3.3.4", 796 | "picocolors": "^1.0.0", 797 | "source-map-js": "^1.0.2" 798 | }, 799 | "engines": { 800 | "node": "^10 || ^12 || >=14" 801 | } 802 | }, 803 | "node_modules/readdirp": { 804 | "version": "3.6.0", 805 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", 806 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 807 | "dev": true, 808 | "dependencies": { 809 | "picomatch": "^2.2.1" 810 | }, 811 | "engines": { 812 | "node": ">=8.10.0" 813 | } 814 | }, 815 | "node_modules/resolve": { 816 | "version": "1.22.1", 817 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", 818 | "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", 819 | "dev": true, 820 | "dependencies": { 821 | "is-core-module": "^2.9.0", 822 | "path-parse": "^1.0.7", 823 | "supports-preserve-symlinks-flag": "^1.0.0" 824 | }, 825 | "bin": { 826 | "resolve": "bin/resolve" 827 | }, 828 | "funding": { 829 | "url": "https://github.com/sponsors/ljharb" 830 | } 831 | }, 832 | "node_modules/rollup": { 833 | "version": "3.19.1", 834 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.19.1.tgz", 835 | "integrity": "sha512-lAbrdN7neYCg/8WaoWn/ckzCtz+jr70GFfYdlf50OF7387HTg+wiuiqJRFYawwSPpqfqDNYqK7smY/ks2iAudg==", 836 | "dev": true, 837 | "bin": { 838 | "rollup": "dist/bin/rollup" 839 | }, 840 | "engines": { 841 | "node": ">=14.18.0", 842 | "npm": ">=8.0.0" 843 | }, 844 | "optionalDependencies": { 845 | "fsevents": "~2.3.2" 846 | } 847 | }, 848 | "node_modules/sass": { 849 | "version": "1.59.2", 850 | "resolved": "https://registry.npmjs.org/sass/-/sass-1.59.2.tgz", 851 | "integrity": "sha512-jJyO6SmbzkJexF8MUorHx5tAilcgabioYxT/BHbY4+OvoqmbHxsYlrjZ8Adhqcgl6Zqwie0TgMXLCAmPFxXOuw==", 852 | "dev": true, 853 | "dependencies": { 854 | "chokidar": ">=3.0.0 <4.0.0", 855 | "immutable": "^4.0.0", 856 | "source-map-js": ">=0.6.2 <2.0.0" 857 | }, 858 | "bin": { 859 | "sass": "sass.js" 860 | }, 861 | "engines": { 862 | "node": ">=12.0.0" 863 | } 864 | }, 865 | "node_modules/source-map": { 866 | "version": "0.6.1", 867 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 868 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", 869 | "engines": { 870 | "node": ">=0.10.0" 871 | } 872 | }, 873 | "node_modules/source-map-js": { 874 | "version": "1.0.2", 875 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", 876 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", 877 | "engines": { 878 | "node": ">=0.10.0" 879 | } 880 | }, 881 | "node_modules/sourcemap-codec": { 882 | "version": "1.4.8", 883 | "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", 884 | "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", 885 | "deprecated": "Please use @jridgewell/sourcemap-codec instead" 886 | }, 887 | "node_modules/splitting": { 888 | "version": "1.0.6", 889 | "resolved": "https://registry.npmjs.org/splitting/-/splitting-1.0.6.tgz", 890 | "integrity": "sha512-2hYicS/hTy1MgjTi4ST6B298uoLSx854VfTf0FeMmCeE6OiZjEixTOGPLqnNzSaM/y3jwoEYj5pmDzYFwRInPw==" 891 | }, 892 | "node_modules/supports-preserve-symlinks-flag": { 893 | "version": "1.0.0", 894 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 895 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 896 | "dev": true, 897 | "engines": { 898 | "node": ">= 0.4" 899 | }, 900 | "funding": { 901 | "url": "https://github.com/sponsors/ljharb" 902 | } 903 | }, 904 | "node_modules/three": { 905 | "version": "0.151.3", 906 | "resolved": "https://registry.npmjs.org/three/-/three-0.151.3.tgz", 907 | "integrity": "sha512-+vbuqxFy8kzLeO5MgpBHUvP/EAiecaDwDuOPPDe6SbrZr96kccF0ktLngXc7xA7bzyd3N0t2f6mw3Z9y6JCojQ==" 908 | }, 909 | "node_modules/to-regex-range": { 910 | "version": "5.0.1", 911 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 912 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 913 | "dev": true, 914 | "dependencies": { 915 | "is-number": "^7.0.0" 916 | }, 917 | "engines": { 918 | "node": ">=8.0" 919 | } 920 | }, 921 | "node_modules/vite": { 922 | "version": "4.1.4", 923 | "resolved": "https://registry.npmjs.org/vite/-/vite-4.1.4.tgz", 924 | "integrity": "sha512-3knk/HsbSTKEin43zHu7jTwYWv81f8kgAL99G5NWBcA1LKvtvcVAC4JjBH1arBunO9kQka+1oGbrMKOjk4ZrBg==", 925 | "dev": true, 926 | "dependencies": { 927 | "esbuild": "^0.16.14", 928 | "postcss": "^8.4.21", 929 | "resolve": "^1.22.1", 930 | "rollup": "^3.10.0" 931 | }, 932 | "bin": { 933 | "vite": "bin/vite.js" 934 | }, 935 | "engines": { 936 | "node": "^14.18.0 || >=16.0.0" 937 | }, 938 | "optionalDependencies": { 939 | "fsevents": "~2.3.2" 940 | }, 941 | "peerDependencies": { 942 | "@types/node": ">= 14", 943 | "less": "*", 944 | "sass": "*", 945 | "stylus": "*", 946 | "sugarss": "*", 947 | "terser": "^5.4.0" 948 | }, 949 | "peerDependenciesMeta": { 950 | "@types/node": { 951 | "optional": true 952 | }, 953 | "less": { 954 | "optional": true 955 | }, 956 | "sass": { 957 | "optional": true 958 | }, 959 | "stylus": { 960 | "optional": true 961 | }, 962 | "sugarss": { 963 | "optional": true 964 | }, 965 | "terser": { 966 | "optional": true 967 | } 968 | } 969 | }, 970 | "node_modules/vue": { 971 | "version": "3.2.47", 972 | "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.47.tgz", 973 | "integrity": "sha512-60188y/9Dc9WVrAZeUVSDxRQOZ+z+y5nO2ts9jWXSTkMvayiWxCWOWtBQoYjLeccfXkiiPZWAHcV+WTPhkqJHQ==", 974 | "dependencies": { 975 | "@vue/compiler-dom": "3.2.47", 976 | "@vue/compiler-sfc": "3.2.47", 977 | "@vue/runtime-dom": "3.2.47", 978 | "@vue/server-renderer": "3.2.47", 979 | "@vue/shared": "3.2.47" 980 | } 981 | } 982 | }, 983 | "dependencies": { 984 | "@babel/parser": { 985 | "version": "7.21.3", 986 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.21.3.tgz", 987 | "integrity": "sha512-lobG0d7aOfQRXh8AyklEAgZGvA4FShxo6xQbUrrT/cNBPUdIDojlokwJsQyCC/eKia7ifqM0yP+2DRZ4WKw2RQ==" 988 | }, 989 | "@esbuild/android-arm": { 990 | "version": "0.16.17", 991 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.16.17.tgz", 992 | "integrity": "sha512-N9x1CMXVhtWEAMS7pNNONyA14f71VPQN9Cnavj1XQh6T7bskqiLLrSca4O0Vr8Wdcga943eThxnVp3JLnBMYtw==", 993 | "dev": true, 994 | "optional": true 995 | }, 996 | "@esbuild/android-arm64": { 997 | "version": "0.16.17", 998 | "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.16.17.tgz", 999 | "integrity": "sha512-MIGl6p5sc3RDTLLkYL1MyL8BMRN4tLMRCn+yRJJmEDvYZ2M7tmAf80hx1kbNEUX2KJ50RRtxZ4JHLvCfuB6kBg==", 1000 | "dev": true, 1001 | "optional": true 1002 | }, 1003 | "@esbuild/android-x64": { 1004 | "version": "0.16.17", 1005 | "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.16.17.tgz", 1006 | "integrity": "sha512-a3kTv3m0Ghh4z1DaFEuEDfz3OLONKuFvI4Xqczqx4BqLyuFaFkuaG4j2MtA6fuWEFeC5x9IvqnX7drmRq/fyAQ==", 1007 | "dev": true, 1008 | "optional": true 1009 | }, 1010 | "@esbuild/darwin-arm64": { 1011 | "version": "0.16.17", 1012 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.16.17.tgz", 1013 | "integrity": "sha512-/2agbUEfmxWHi9ARTX6OQ/KgXnOWfsNlTeLcoV7HSuSTv63E4DqtAc+2XqGw1KHxKMHGZgbVCZge7HXWX9Vn+w==", 1014 | "dev": true, 1015 | "optional": true 1016 | }, 1017 | "@esbuild/darwin-x64": { 1018 | "version": "0.16.17", 1019 | "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.16.17.tgz", 1020 | "integrity": "sha512-2By45OBHulkd9Svy5IOCZt376Aa2oOkiE9QWUK9fe6Tb+WDr8hXL3dpqi+DeLiMed8tVXspzsTAvd0jUl96wmg==", 1021 | "dev": true, 1022 | "optional": true 1023 | }, 1024 | "@esbuild/freebsd-arm64": { 1025 | "version": "0.16.17", 1026 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.16.17.tgz", 1027 | "integrity": "sha512-mt+cxZe1tVx489VTb4mBAOo2aKSnJ33L9fr25JXpqQqzbUIw/yzIzi+NHwAXK2qYV1lEFp4OoVeThGjUbmWmdw==", 1028 | "dev": true, 1029 | "optional": true 1030 | }, 1031 | "@esbuild/freebsd-x64": { 1032 | "version": "0.16.17", 1033 | "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.16.17.tgz", 1034 | "integrity": "sha512-8ScTdNJl5idAKjH8zGAsN7RuWcyHG3BAvMNpKOBaqqR7EbUhhVHOqXRdL7oZvz8WNHL2pr5+eIT5c65kA6NHug==", 1035 | "dev": true, 1036 | "optional": true 1037 | }, 1038 | "@esbuild/linux-arm": { 1039 | "version": "0.16.17", 1040 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.16.17.tgz", 1041 | "integrity": "sha512-iihzrWbD4gIT7j3caMzKb/RsFFHCwqqbrbH9SqUSRrdXkXaygSZCZg1FybsZz57Ju7N/SHEgPyaR0LZ8Zbe9gQ==", 1042 | "dev": true, 1043 | "optional": true 1044 | }, 1045 | "@esbuild/linux-arm64": { 1046 | "version": "0.16.17", 1047 | "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.16.17.tgz", 1048 | "integrity": "sha512-7S8gJnSlqKGVJunnMCrXHU9Q8Q/tQIxk/xL8BqAP64wchPCTzuM6W3Ra8cIa1HIflAvDnNOt2jaL17vaW+1V0g==", 1049 | "dev": true, 1050 | "optional": true 1051 | }, 1052 | "@esbuild/linux-ia32": { 1053 | "version": "0.16.17", 1054 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.16.17.tgz", 1055 | "integrity": "sha512-kiX69+wcPAdgl3Lonh1VI7MBr16nktEvOfViszBSxygRQqSpzv7BffMKRPMFwzeJGPxcio0pdD3kYQGpqQ2SSg==", 1056 | "dev": true, 1057 | "optional": true 1058 | }, 1059 | "@esbuild/linux-loong64": { 1060 | "version": "0.16.17", 1061 | "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.16.17.tgz", 1062 | "integrity": "sha512-dTzNnQwembNDhd654cA4QhbS9uDdXC3TKqMJjgOWsC0yNCbpzfWoXdZvp0mY7HU6nzk5E0zpRGGx3qoQg8T2DQ==", 1063 | "dev": true, 1064 | "optional": true 1065 | }, 1066 | "@esbuild/linux-mips64el": { 1067 | "version": "0.16.17", 1068 | "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.16.17.tgz", 1069 | "integrity": "sha512-ezbDkp2nDl0PfIUn0CsQ30kxfcLTlcx4Foz2kYv8qdC6ia2oX5Q3E/8m6lq84Dj/6b0FrkgD582fJMIfHhJfSw==", 1070 | "dev": true, 1071 | "optional": true 1072 | }, 1073 | "@esbuild/linux-ppc64": { 1074 | "version": "0.16.17", 1075 | "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.16.17.tgz", 1076 | "integrity": "sha512-dzS678gYD1lJsW73zrFhDApLVdM3cUF2MvAa1D8K8KtcSKdLBPP4zZSLy6LFZ0jYqQdQ29bjAHJDgz0rVbLB3g==", 1077 | "dev": true, 1078 | "optional": true 1079 | }, 1080 | "@esbuild/linux-riscv64": { 1081 | "version": "0.16.17", 1082 | "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.16.17.tgz", 1083 | "integrity": "sha512-ylNlVsxuFjZK8DQtNUwiMskh6nT0vI7kYl/4fZgV1llP5d6+HIeL/vmmm3jpuoo8+NuXjQVZxmKuhDApK0/cKw==", 1084 | "dev": true, 1085 | "optional": true 1086 | }, 1087 | "@esbuild/linux-s390x": { 1088 | "version": "0.16.17", 1089 | "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.16.17.tgz", 1090 | "integrity": "sha512-gzy7nUTO4UA4oZ2wAMXPNBGTzZFP7mss3aKR2hH+/4UUkCOyqmjXiKpzGrY2TlEUhbbejzXVKKGazYcQTZWA/w==", 1091 | "dev": true, 1092 | "optional": true 1093 | }, 1094 | "@esbuild/linux-x64": { 1095 | "version": "0.16.17", 1096 | "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.16.17.tgz", 1097 | "integrity": "sha512-mdPjPxfnmoqhgpiEArqi4egmBAMYvaObgn4poorpUaqmvzzbvqbowRllQ+ZgzGVMGKaPkqUmPDOOFQRUFDmeUw==", 1098 | "dev": true, 1099 | "optional": true 1100 | }, 1101 | "@esbuild/netbsd-x64": { 1102 | "version": "0.16.17", 1103 | "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.16.17.tgz", 1104 | "integrity": "sha512-/PzmzD/zyAeTUsduZa32bn0ORug+Jd1EGGAUJvqfeixoEISYpGnAezN6lnJoskauoai0Jrs+XSyvDhppCPoKOA==", 1105 | "dev": true, 1106 | "optional": true 1107 | }, 1108 | "@esbuild/openbsd-x64": { 1109 | "version": "0.16.17", 1110 | "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.16.17.tgz", 1111 | "integrity": "sha512-2yaWJhvxGEz2RiftSk0UObqJa/b+rIAjnODJgv2GbGGpRwAfpgzyrg1WLK8rqA24mfZa9GvpjLcBBg8JHkoodg==", 1112 | "dev": true, 1113 | "optional": true 1114 | }, 1115 | "@esbuild/sunos-x64": { 1116 | "version": "0.16.17", 1117 | "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.16.17.tgz", 1118 | "integrity": "sha512-xtVUiev38tN0R3g8VhRfN7Zl42YCJvyBhRKw1RJjwE1d2emWTVToPLNEQj/5Qxc6lVFATDiy6LjVHYhIPrLxzw==", 1119 | "dev": true, 1120 | "optional": true 1121 | }, 1122 | "@esbuild/win32-arm64": { 1123 | "version": "0.16.17", 1124 | "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.16.17.tgz", 1125 | "integrity": "sha512-ga8+JqBDHY4b6fQAmOgtJJue36scANy4l/rL97W+0wYmijhxKetzZdKOJI7olaBaMhWt8Pac2McJdZLxXWUEQw==", 1126 | "dev": true, 1127 | "optional": true 1128 | }, 1129 | "@esbuild/win32-ia32": { 1130 | "version": "0.16.17", 1131 | "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.16.17.tgz", 1132 | "integrity": "sha512-WnsKaf46uSSF/sZhwnqE4L/F89AYNMiD4YtEcYekBt9Q7nj0DiId2XH2Ng2PHM54qi5oPrQ8luuzGszqi/veig==", 1133 | "dev": true, 1134 | "optional": true 1135 | }, 1136 | "@esbuild/win32-x64": { 1137 | "version": "0.16.17", 1138 | "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz", 1139 | "integrity": "sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==", 1140 | "dev": true, 1141 | "optional": true 1142 | }, 1143 | "@vitejs/plugin-vue": { 1144 | "version": "4.0.0", 1145 | "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-4.0.0.tgz", 1146 | "integrity": "sha512-e0X4jErIxAB5oLtDqbHvHpJe/uWNkdpYV83AOG2xo2tEVSzCzewgJMtREZM30wXnM5ls90hxiOtAuVU6H5JgbA==", 1147 | "dev": true, 1148 | "requires": {} 1149 | }, 1150 | "@vue/compiler-core": { 1151 | "version": "3.2.47", 1152 | "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.2.47.tgz", 1153 | "integrity": "sha512-p4D7FDnQb7+YJmO2iPEv0SQNeNzcbHdGByJDsT4lynf63AFkOTFN07HsiRSvjGo0QrxR/o3d0hUyNCUnBU2Tig==", 1154 | "requires": { 1155 | "@babel/parser": "^7.16.4", 1156 | "@vue/shared": "3.2.47", 1157 | "estree-walker": "^2.0.2", 1158 | "source-map": "^0.6.1" 1159 | } 1160 | }, 1161 | "@vue/compiler-dom": { 1162 | "version": "3.2.47", 1163 | "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.2.47.tgz", 1164 | "integrity": "sha512-dBBnEHEPoftUiS03a4ggEig74J2YBZ2UIeyfpcRM2tavgMWo4bsEfgCGsu+uJIL/vax9S+JztH8NmQerUo7shQ==", 1165 | "requires": { 1166 | "@vue/compiler-core": "3.2.47", 1167 | "@vue/shared": "3.2.47" 1168 | } 1169 | }, 1170 | "@vue/compiler-sfc": { 1171 | "version": "3.2.47", 1172 | "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.2.47.tgz", 1173 | "integrity": "sha512-rog05W+2IFfxjMcFw10tM9+f7i/+FFpZJJ5XHX72NP9eC2uRD+42M3pYcQqDXVYoj74kHMSEdQ/WmCjt8JFksQ==", 1174 | "requires": { 1175 | "@babel/parser": "^7.16.4", 1176 | "@vue/compiler-core": "3.2.47", 1177 | "@vue/compiler-dom": "3.2.47", 1178 | "@vue/compiler-ssr": "3.2.47", 1179 | "@vue/reactivity-transform": "3.2.47", 1180 | "@vue/shared": "3.2.47", 1181 | "estree-walker": "^2.0.2", 1182 | "magic-string": "^0.25.7", 1183 | "postcss": "^8.1.10", 1184 | "source-map": "^0.6.1" 1185 | } 1186 | }, 1187 | "@vue/compiler-ssr": { 1188 | "version": "3.2.47", 1189 | "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.2.47.tgz", 1190 | "integrity": "sha512-wVXC+gszhulcMD8wpxMsqSOpvDZ6xKXSVWkf50Guf/S+28hTAXPDYRTbLQ3EDkOP5Xz/+SY37YiwDquKbJOgZw==", 1191 | "requires": { 1192 | "@vue/compiler-dom": "3.2.47", 1193 | "@vue/shared": "3.2.47" 1194 | } 1195 | }, 1196 | "@vue/reactivity": { 1197 | "version": "3.2.47", 1198 | "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.2.47.tgz", 1199 | "integrity": "sha512-7khqQ/75oyyg+N/e+iwV6lpy1f5wq759NdlS1fpAhFXa8VeAIKGgk2E/C4VF59lx5b+Ezs5fpp/5WsRYXQiKxQ==", 1200 | "requires": { 1201 | "@vue/shared": "3.2.47" 1202 | } 1203 | }, 1204 | "@vue/reactivity-transform": { 1205 | "version": "3.2.47", 1206 | "resolved": "https://registry.npmjs.org/@vue/reactivity-transform/-/reactivity-transform-3.2.47.tgz", 1207 | "integrity": "sha512-m8lGXw8rdnPVVIdIFhf0LeQ/ixyHkH5plYuS83yop5n7ggVJU+z5v0zecwEnX7fa7HNLBhh2qngJJkxpwEEmYA==", 1208 | "requires": { 1209 | "@babel/parser": "^7.16.4", 1210 | "@vue/compiler-core": "3.2.47", 1211 | "@vue/shared": "3.2.47", 1212 | "estree-walker": "^2.0.2", 1213 | "magic-string": "^0.25.7" 1214 | } 1215 | }, 1216 | "@vue/runtime-core": { 1217 | "version": "3.2.47", 1218 | "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.2.47.tgz", 1219 | "integrity": "sha512-RZxbLQIRB/K0ev0K9FXhNbBzT32H9iRtYbaXb0ZIz2usLms/D55dJR2t6cIEUn6vyhS3ALNvNthI+Q95C+NOpA==", 1220 | "requires": { 1221 | "@vue/reactivity": "3.2.47", 1222 | "@vue/shared": "3.2.47" 1223 | } 1224 | }, 1225 | "@vue/runtime-dom": { 1226 | "version": "3.2.47", 1227 | "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.2.47.tgz", 1228 | "integrity": "sha512-ArXrFTjS6TsDei4qwNvgrdmHtD930KgSKGhS5M+j8QxXrDJYLqYw4RRcDy1bz1m1wMmb6j+zGLifdVHtkXA7gA==", 1229 | "requires": { 1230 | "@vue/runtime-core": "3.2.47", 1231 | "@vue/shared": "3.2.47", 1232 | "csstype": "^2.6.8" 1233 | } 1234 | }, 1235 | "@vue/server-renderer": { 1236 | "version": "3.2.47", 1237 | "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.2.47.tgz", 1238 | "integrity": "sha512-dN9gc1i8EvmP9RCzvneONXsKfBRgqFeFZLurmHOveL7oH6HiFXJw5OGu294n1nHc/HMgTy6LulU/tv5/A7f/LA==", 1239 | "requires": { 1240 | "@vue/compiler-ssr": "3.2.47", 1241 | "@vue/shared": "3.2.47" 1242 | } 1243 | }, 1244 | "@vue/shared": { 1245 | "version": "3.2.47", 1246 | "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.2.47.tgz", 1247 | "integrity": "sha512-BHGyyGN3Q97EZx0taMQ+OLNuZcW3d37ZEVmEAyeoA9ERdGvm9Irc/0Fua8SNyOtV1w6BS4q25wbMzJujO9HIfQ==" 1248 | }, 1249 | "anymatch": { 1250 | "version": "3.1.3", 1251 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", 1252 | "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", 1253 | "dev": true, 1254 | "requires": { 1255 | "normalize-path": "^3.0.0", 1256 | "picomatch": "^2.0.4" 1257 | } 1258 | }, 1259 | "binary-extensions": { 1260 | "version": "2.2.0", 1261 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", 1262 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", 1263 | "dev": true 1264 | }, 1265 | "braces": { 1266 | "version": "3.0.2", 1267 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 1268 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 1269 | "dev": true, 1270 | "requires": { 1271 | "fill-range": "^7.0.1" 1272 | } 1273 | }, 1274 | "chokidar": { 1275 | "version": "3.5.3", 1276 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", 1277 | "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", 1278 | "dev": true, 1279 | "requires": { 1280 | "anymatch": "~3.1.2", 1281 | "braces": "~3.0.2", 1282 | "fsevents": "~2.3.2", 1283 | "glob-parent": "~5.1.2", 1284 | "is-binary-path": "~2.1.0", 1285 | "is-glob": "~4.0.1", 1286 | "normalize-path": "~3.0.0", 1287 | "readdirp": "~3.6.0" 1288 | } 1289 | }, 1290 | "csstype": { 1291 | "version": "2.6.21", 1292 | "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz", 1293 | "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w==" 1294 | }, 1295 | "esbuild": { 1296 | "version": "0.16.17", 1297 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.17.tgz", 1298 | "integrity": "sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==", 1299 | "dev": true, 1300 | "requires": { 1301 | "@esbuild/android-arm": "0.16.17", 1302 | "@esbuild/android-arm64": "0.16.17", 1303 | "@esbuild/android-x64": "0.16.17", 1304 | "@esbuild/darwin-arm64": "0.16.17", 1305 | "@esbuild/darwin-x64": "0.16.17", 1306 | "@esbuild/freebsd-arm64": "0.16.17", 1307 | "@esbuild/freebsd-x64": "0.16.17", 1308 | "@esbuild/linux-arm": "0.16.17", 1309 | "@esbuild/linux-arm64": "0.16.17", 1310 | "@esbuild/linux-ia32": "0.16.17", 1311 | "@esbuild/linux-loong64": "0.16.17", 1312 | "@esbuild/linux-mips64el": "0.16.17", 1313 | "@esbuild/linux-ppc64": "0.16.17", 1314 | "@esbuild/linux-riscv64": "0.16.17", 1315 | "@esbuild/linux-s390x": "0.16.17", 1316 | "@esbuild/linux-x64": "0.16.17", 1317 | "@esbuild/netbsd-x64": "0.16.17", 1318 | "@esbuild/openbsd-x64": "0.16.17", 1319 | "@esbuild/sunos-x64": "0.16.17", 1320 | "@esbuild/win32-arm64": "0.16.17", 1321 | "@esbuild/win32-ia32": "0.16.17", 1322 | "@esbuild/win32-x64": "0.16.17" 1323 | } 1324 | }, 1325 | "estree-walker": { 1326 | "version": "2.0.2", 1327 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", 1328 | "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" 1329 | }, 1330 | "fill-range": { 1331 | "version": "7.0.1", 1332 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 1333 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 1334 | "dev": true, 1335 | "requires": { 1336 | "to-regex-range": "^5.0.1" 1337 | } 1338 | }, 1339 | "fsevents": { 1340 | "version": "2.3.2", 1341 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 1342 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 1343 | "dev": true, 1344 | "optional": true 1345 | }, 1346 | "function-bind": { 1347 | "version": "1.1.1", 1348 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 1349 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", 1350 | "dev": true 1351 | }, 1352 | "glob-parent": { 1353 | "version": "5.1.2", 1354 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 1355 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 1356 | "dev": true, 1357 | "requires": { 1358 | "is-glob": "^4.0.1" 1359 | } 1360 | }, 1361 | "gsap": { 1362 | "version": "3.11.5", 1363 | "resolved": "https://registry.npmjs.org/gsap/-/gsap-3.11.5.tgz", 1364 | "integrity": "sha512-Q89nKCLgoX5xUjznh9LcaIUkz54k1voNucT1Rpf9SJNFIQznBwFqt5qUUQbeVInFyN/n18OUJkpeI6CNEDt74w==" 1365 | }, 1366 | "has": { 1367 | "version": "1.0.3", 1368 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 1369 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 1370 | "dev": true, 1371 | "requires": { 1372 | "function-bind": "^1.1.1" 1373 | } 1374 | }, 1375 | "immutable": { 1376 | "version": "4.3.0", 1377 | "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.3.0.tgz", 1378 | "integrity": "sha512-0AOCmOip+xgJwEVTQj1EfiDDOkPmuyllDuTuEX+DDXUgapLAsBIfkg3sxCYyCEA8mQqZrrxPUGjcOQ2JS3WLkg==", 1379 | "dev": true 1380 | }, 1381 | "is-binary-path": { 1382 | "version": "2.1.0", 1383 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 1384 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 1385 | "dev": true, 1386 | "requires": { 1387 | "binary-extensions": "^2.0.0" 1388 | } 1389 | }, 1390 | "is-core-module": { 1391 | "version": "2.11.0", 1392 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", 1393 | "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", 1394 | "dev": true, 1395 | "requires": { 1396 | "has": "^1.0.3" 1397 | } 1398 | }, 1399 | "is-extglob": { 1400 | "version": "2.1.1", 1401 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 1402 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", 1403 | "dev": true 1404 | }, 1405 | "is-glob": { 1406 | "version": "4.0.3", 1407 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 1408 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 1409 | "dev": true, 1410 | "requires": { 1411 | "is-extglob": "^2.1.1" 1412 | } 1413 | }, 1414 | "is-number": { 1415 | "version": "7.0.0", 1416 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 1417 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", 1418 | "dev": true 1419 | }, 1420 | "magic-string": { 1421 | "version": "0.25.9", 1422 | "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", 1423 | "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", 1424 | "requires": { 1425 | "sourcemap-codec": "^1.4.8" 1426 | } 1427 | }, 1428 | "nanoid": { 1429 | "version": "3.3.4", 1430 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", 1431 | "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==" 1432 | }, 1433 | "normalize-path": { 1434 | "version": "3.0.0", 1435 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 1436 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", 1437 | "dev": true 1438 | }, 1439 | "path-parse": { 1440 | "version": "1.0.7", 1441 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 1442 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", 1443 | "dev": true 1444 | }, 1445 | "picocolors": { 1446 | "version": "1.0.0", 1447 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 1448 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" 1449 | }, 1450 | "picomatch": { 1451 | "version": "2.3.1", 1452 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 1453 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", 1454 | "dev": true 1455 | }, 1456 | "postcss": { 1457 | "version": "8.4.21", 1458 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", 1459 | "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", 1460 | "requires": { 1461 | "nanoid": "^3.3.4", 1462 | "picocolors": "^1.0.0", 1463 | "source-map-js": "^1.0.2" 1464 | } 1465 | }, 1466 | "readdirp": { 1467 | "version": "3.6.0", 1468 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", 1469 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 1470 | "dev": true, 1471 | "requires": { 1472 | "picomatch": "^2.2.1" 1473 | } 1474 | }, 1475 | "resolve": { 1476 | "version": "1.22.1", 1477 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", 1478 | "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", 1479 | "dev": true, 1480 | "requires": { 1481 | "is-core-module": "^2.9.0", 1482 | "path-parse": "^1.0.7", 1483 | "supports-preserve-symlinks-flag": "^1.0.0" 1484 | } 1485 | }, 1486 | "rollup": { 1487 | "version": "3.19.1", 1488 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.19.1.tgz", 1489 | "integrity": "sha512-lAbrdN7neYCg/8WaoWn/ckzCtz+jr70GFfYdlf50OF7387HTg+wiuiqJRFYawwSPpqfqDNYqK7smY/ks2iAudg==", 1490 | "dev": true, 1491 | "requires": { 1492 | "fsevents": "~2.3.2" 1493 | } 1494 | }, 1495 | "sass": { 1496 | "version": "1.59.2", 1497 | "resolved": "https://registry.npmjs.org/sass/-/sass-1.59.2.tgz", 1498 | "integrity": "sha512-jJyO6SmbzkJexF8MUorHx5tAilcgabioYxT/BHbY4+OvoqmbHxsYlrjZ8Adhqcgl6Zqwie0TgMXLCAmPFxXOuw==", 1499 | "dev": true, 1500 | "requires": { 1501 | "chokidar": ">=3.0.0 <4.0.0", 1502 | "immutable": "^4.0.0", 1503 | "source-map-js": ">=0.6.2 <2.0.0" 1504 | } 1505 | }, 1506 | "source-map": { 1507 | "version": "0.6.1", 1508 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", 1509 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" 1510 | }, 1511 | "source-map-js": { 1512 | "version": "1.0.2", 1513 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", 1514 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" 1515 | }, 1516 | "sourcemap-codec": { 1517 | "version": "1.4.8", 1518 | "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", 1519 | "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==" 1520 | }, 1521 | "splitting": { 1522 | "version": "1.0.6", 1523 | "resolved": "https://registry.npmjs.org/splitting/-/splitting-1.0.6.tgz", 1524 | "integrity": "sha512-2hYicS/hTy1MgjTi4ST6B298uoLSx854VfTf0FeMmCeE6OiZjEixTOGPLqnNzSaM/y3jwoEYj5pmDzYFwRInPw==" 1525 | }, 1526 | "supports-preserve-symlinks-flag": { 1527 | "version": "1.0.0", 1528 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 1529 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", 1530 | "dev": true 1531 | }, 1532 | "three": { 1533 | "version": "0.151.3", 1534 | "resolved": "https://registry.npmjs.org/three/-/three-0.151.3.tgz", 1535 | "integrity": "sha512-+vbuqxFy8kzLeO5MgpBHUvP/EAiecaDwDuOPPDe6SbrZr96kccF0ktLngXc7xA7bzyd3N0t2f6mw3Z9y6JCojQ==" 1536 | }, 1537 | "to-regex-range": { 1538 | "version": "5.0.1", 1539 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 1540 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 1541 | "dev": true, 1542 | "requires": { 1543 | "is-number": "^7.0.0" 1544 | } 1545 | }, 1546 | "vite": { 1547 | "version": "4.1.4", 1548 | "resolved": "https://registry.npmjs.org/vite/-/vite-4.1.4.tgz", 1549 | "integrity": "sha512-3knk/HsbSTKEin43zHu7jTwYWv81f8kgAL99G5NWBcA1LKvtvcVAC4JjBH1arBunO9kQka+1oGbrMKOjk4ZrBg==", 1550 | "dev": true, 1551 | "requires": { 1552 | "esbuild": "^0.16.14", 1553 | "fsevents": "~2.3.2", 1554 | "postcss": "^8.4.21", 1555 | "resolve": "^1.22.1", 1556 | "rollup": "^3.10.0" 1557 | } 1558 | }, 1559 | "vue": { 1560 | "version": "3.2.47", 1561 | "resolved": "https://registry.npmjs.org/vue/-/vue-3.2.47.tgz", 1562 | "integrity": "sha512-60188y/9Dc9WVrAZeUVSDxRQOZ+z+y5nO2ts9jWXSTkMvayiWxCWOWtBQoYjLeccfXkiiPZWAHcV+WTPhkqJHQ==", 1563 | "requires": { 1564 | "@vue/compiler-dom": "3.2.47", 1565 | "@vue/compiler-sfc": "3.2.47", 1566 | "@vue/runtime-dom": "3.2.47", 1567 | "@vue/server-renderer": "3.2.47", 1568 | "@vue/shared": "3.2.47" 1569 | } 1570 | } 1571 | } 1572 | } 1573 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "vue-scss-vite", 3 | "private": true, 4 | "version": "0.0.0", 5 | "type": "module", 6 | "scripts": { 7 | "dev": "vite", 8 | "build": "vite build", 9 | "preview": "vite preview" 10 | }, 11 | "dependencies": { 12 | "gsap": "^3.11.5", 13 | "splitting": "^1.0.6", 14 | "three": "^0.151.3", 15 | "vue": "^3.2.45" 16 | }, 17 | "devDependencies": { 18 | "@vitejs/plugin-vue": "^4.0.0", 19 | "sass": "^1.59.2", 20 | "vite": "^4.1.0" 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /public/vite.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /src/App.vue: -------------------------------------------------------------------------------- 1 | 11 | 12 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /src/animations/observe.js: -------------------------------------------------------------------------------- 1 | export const IO = (item, options) => { 2 | return new Promise((resolve) => { 3 | const observer = new window.IntersectionObserver((entries) => { 4 | entries.forEach((entry) => { 5 | if (entry.isIntersecting) { 6 | resolve(); 7 | } 8 | }); 9 | }, options); 10 | observer.observe(item); 11 | }); 12 | }; 13 | -------------------------------------------------------------------------------- /src/animations/slider.js: -------------------------------------------------------------------------------- 1 | import * as THREE from 'three'; 2 | import gsap from 'gsap'; 3 | 4 | export const displacementSlider = function () { 5 | let vertexShader = ` 6 | varying vec2 vUv; 7 | void main() { 8 | vUv = uv; 9 | gl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 ); 10 | } 11 | `; 12 | 13 | let fragmentShader = ` 14 | varying vec2 vUv; 15 | uniform sampler2D currentImage; 16 | uniform sampler2D nextImage; 17 | uniform float dispFactor; 18 | 19 | void main() { 20 | vec2 uv = vUv; 21 | vec4 _currentImage; 22 | vec4 _nextImage; 23 | float intensity = 0.3; 24 | vec4 orig1 = texture2D(currentImage, uv); 25 | vec4 orig2 = texture2D(nextImage, uv); 26 | _currentImage = texture2D(currentImage, vec2(uv.x, uv.y + dispFactor * (orig2 * intensity))); 27 | _nextImage = texture2D(nextImage, vec2(uv.x, uv.y + (1.0 - dispFactor) * (orig1 * intensity))); 28 | vec4 finalTexture = mix(_currentImage, _nextImage, dispFactor); 29 | gl_FragColor = finalTexture; 30 | 31 | } 32 | `; 33 | 34 | let images = document.querySelectorAll(".container img"); 35 | let parent = document.querySelector(".container"); 36 | let image, sliderImages = []; 37 | let canvasWidth = images[0].clientWidth; 38 | let canvasHeight = images[0].clientHeight; 39 | 40 | // calculate the height and width of the viewport 41 | 42 | let renderWidth = Math.max(document.documentElement.clientWidth, window.innerWidth || 0); 43 | let renderHeight = Math.max(document.documentElement.clientHeight, window.innerHeight || 0); 44 | 45 | let renderW, renderH; 46 | 47 | if( renderWidth > canvasWidth ) { 48 | renderW = renderWidth; 49 | } else { 50 | renderW = canvasWidth; 51 | } 52 | renderH = canvasHeight; 53 | 54 | let renderer = new THREE.WebGL1Renderer({ 55 | antialias:false 56 | }) 57 | renderer.setPixelRatio(window.devicePixelRatio); 58 | renderer.setClearColor( 0x23272A, 1.0 ); 59 | renderer.setSize( renderW, renderH ); 60 | 61 | parent.appendChild(renderer.domElement); 62 | 63 | //load textures from images 64 | 65 | let loader = new THREE.TextureLoader(); 66 | loader.crossOrigin = "anonymous"; 67 | 68 | images.forEach((img) => { 69 | image = loader.load( img.getAttribute( 'src' ) + '?v=' + Date.now() ); 70 | image.magFilter = image.minFilter = THREE.LinearFilter; 71 | image.anisotropy = renderer.capabilities.getMaxAnisotropy(); 72 | sliderImages.push( image ); 73 | }) 74 | 75 | let scene = new THREE.Scene(); 76 | scene.background = new THREE.Color(0x23272A); 77 | 78 | // 2d camera with zero perspective distortion 79 | 80 | let camera = new THREE.OrthographicCamera( 81 | renderWidth / -2, 82 | renderWidth / 2, 83 | renderHeight / 2, 84 | renderHeight / -2, 85 | 1, 86 | 1000 87 | ); 88 | camera.position.z = 1; 89 | 90 | // add custom material with vertex and frag shader 91 | 92 | let mat = new THREE.ShaderMaterial({ 93 | uniforms: { 94 | dispFactor: { type: "f", value: 0.0 }, 95 | currentImage: { type: "t", value: sliderImages[0] }, 96 | nextImage: { type: "t", value: sliderImages[1] }, 97 | }, 98 | vertexShader: vertexShader, 99 | fragmentShader: fragmentShader, 100 | transparent: true, 101 | opacity: 1.0 102 | }); 103 | 104 | let geometry = new THREE.PlaneGeometry( 105 | parent.offsetWidth, 106 | parent.offsetHeight, 107 | 1 108 | ) 109 | 110 | let object = new THREE.Mesh(geometry, mat); 111 | object.position.set(0, 0, 0); 112 | scene.add(object); 113 | 114 | let addEvents = () => { 115 | let pagButtons = document.getElementById('pagination').querySelectorAll('button'); 116 | let isAnimating = false; 117 | pagButtons.forEach((it) => { 118 | it.addEventListener("click", () => { 119 | if (!isAnimating) { 120 | isAnimating = true; 121 | document.getElementById('pagination').querySelectorAll('.active')[0].className = ''; 122 | it.className = 'active'; 123 | 124 | let slideId = parseInt(it.dataset.slide, 10); 125 | mat.uniforms.nextImage.value = sliderImages[slideId]; 126 | mat.uniforms.nextImage.needsUpdate = true; 127 | 128 | gsap.to(mat.uniforms.dispFactor, { 129 | duration: 1, 130 | value: 1, 131 | ease: 'expo.inOut', 132 | onComplete: function () { 133 | mat.uniforms.currentImage.value = sliderImages[slideId]; 134 | mat.uniforms.currentImage.needsUpdate = true; 135 | mat.uniforms.dispFactor.value = 0.0; 136 | isAnimating = false; 137 | } 138 | }); 139 | 140 | let slideTitleEl = document.getElementById('slide-title'); 141 | let slideStatusEl = document.getElementById('slide-status'); 142 | let nextSlideTitle = document.querySelectorAll(`[data-slide-title="${slideId}"]`)[0].innerHTML; 143 | let nextSlideStatus = document.querySelectorAll(`[data-slide-status="${slideId}"]`)[0].innerHTML; 144 | 145 | gsap.fromTo(slideTitleEl, { 146 | duration: 0.5, 147 | autoAlpha: 1, 148 | y: 0 149 | }, { 150 | autoAlpha: 0, 151 | y: 20, 152 | ease: 'expo.in', 153 | onComplete: function () { 154 | slideTitleEl.innerHTML = nextSlideTitle; 155 | gsap.to(slideTitleEl, { 156 | duration: 0.5, 157 | autoAlpha: 1, 158 | y: 0 159 | }); 160 | } 161 | }); 162 | 163 | gsap.fromTo(slideStatusEl, { 164 | duration: 0.5, 165 | autoAlpha: 1, 166 | y: 0 167 | }, { 168 | autoAlpha: 0, 169 | y: 20, 170 | ease: 'expo.in', 171 | onComplete: function () { 172 | slideStatusEl.innerHTML = nextSlideStatus; 173 | 174 | gsap.to(slideStatusEl, { 175 | duration: 0.5, 176 | autoAlpha: 1, 177 | y: 0, 178 | delay: 0.1 179 | }); 180 | } 181 | }); 182 | } 183 | }) 184 | }) 185 | } 186 | 187 | addEvents(); 188 | 189 | window.addEventListener( 'resize' , function(e) { 190 | renderer.setSize(renderW, renderH); 191 | }); 192 | 193 | 194 | let animate = function() { 195 | requestAnimationFrame(animate); 196 | 197 | renderer.render(scene, camera); 198 | }; 199 | animate(); 200 | }; 201 | -------------------------------------------------------------------------------- /src/animations/text.js: -------------------------------------------------------------------------------- 1 | import Splitting from "splitting"; 2 | import { IO } from "./observe"; 3 | import { gsap } from "gsap"; 4 | import ScrollTrigger from "gsap/ScrollTrigger"; 5 | gsap.registerPlugin(ScrollTrigger); 6 | 7 | export const split = () => { 8 | const p = document.querySelectorAll("[data-animation='paragraph']"); 9 | const H = document.querySelectorAll("[data-animation='header']"); 10 | const f = document.querySelectorAll("[data-animation='fadeInOut']"); 11 | p.forEach((item) => { 12 | const line = Splitting({ 13 | target: item, 14 | by: "lines", 15 | }); 16 | line.forEach((splitResult) => { 17 | const wrappedLines = splitResult.words 18 | .map( 19 | (wordsArr) => ` 20 | 21 | ${wordsArr.outerHTML} 22 | ` 23 | ) 24 | .join(""); 25 | splitResult.el.innerHTML = wrappedLines; 26 | }); 27 | 28 | gsap.set(item.querySelectorAll(".word"), { 29 | yPercent: 105, 30 | opacity: 0, 31 | rotateX: 50, 32 | transformStyle: "preserve-3d", 33 | }); 34 | IO(item, { threshold: 0.7 }).then(() => { 35 | const elem = item.querySelectorAll(".word"); 36 | gsap.to(elem, { 37 | yPercent: 0, 38 | opacity: 1, 39 | rotateX: 0, 40 | stagger: elem.length > 100 ? 0.02 : 0.03, 41 | duration: elem.length > 100 ? 0.5 : 0.6, 42 | ease: "easeOut", 43 | }); 44 | }); 45 | }); 46 | 47 | H.forEach((item) => { 48 | Splitting({ 49 | target: item, 50 | by: "chars", 51 | }); 52 | gsap.set(item.querySelectorAll(".char"), { 53 | opacity: 0, 54 | yPercent: 100, 55 | transformStyle: "preserve-3d", 56 | }); 57 | IO(item, { 58 | threshold: 1, 59 | }).then(() => { 60 | const elem = item.querySelectorAll(".char"); 61 | gsap.to(elem, { 62 | opacity: 1, 63 | yPercent: 0, 64 | stagger: elem.length > 100 ? 0.01 : 0.02, 65 | duration: elem.length > 100 ? 0.5 : 0.6, 66 | ease: "easeOut", 67 | }); 68 | }); 69 | }); 70 | 71 | f.forEach((item) => { 72 | gsap.set(item, { 73 | autoAlpha: 0, 74 | yPercent: 50, 75 | transformStyle: "preserve-3d", 76 | }); 77 | gsap.to(item, { 78 | autoAlpha: 1, 79 | yPercent: 0, 80 | duration: item.length > 100 ? 0.7 : 0.6, 81 | ease: "easeOut", 82 | scrollTrigger: { 83 | trigger: item, 84 | start: "top center", 85 | end: "+=300", 86 | scrub: true, 87 | ease: "circ.easeOut", 88 | toggleAttribute: "play play reverse reverse", 89 | }, 90 | }); 91 | }); 92 | }; 93 | -------------------------------------------------------------------------------- /src/assets/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Akohjesse/webgl-distort/6de047920eebdc62356153d88b7896f6380a528b/src/assets/.gitkeep -------------------------------------------------------------------------------- /src/components/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Akohjesse/webgl-distort/6de047920eebdc62356153d88b7896f6380a528b/src/components/.gitkeep -------------------------------------------------------------------------------- /src/components/landing.vue: -------------------------------------------------------------------------------- 1 | 34 | 35 | 162 | -------------------------------------------------------------------------------- /src/main.js: -------------------------------------------------------------------------------- 1 | import { createApp } from "vue"; 2 | import App from "./App.vue"; 3 | import "./styles/main.scss"; 4 | 5 | createApp(App).mount("#app"); 6 | -------------------------------------------------------------------------------- /src/styles/abstracts/_mixins.scss: -------------------------------------------------------------------------------- 1 | 2 | @mixin flex($jc, $ai, $gap) { 3 | display: flex; 4 | justify-content: $jc; 5 | align-items: $ai; 6 | gap: $gap; 7 | } 8 | 9 | @mixin flex_col($gap) { 10 | flex-direction: column; 11 | display: flex; 12 | gap: $gap; 13 | } 14 | 15 | @function toRem($value) { 16 | $remValue: (calc($value / 16)) + rem; 17 | @return $remValue; 18 | } 19 | -------------------------------------------------------------------------------- /src/styles/abstracts/_variables.scss: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Akohjesse/webgl-distort/6de047920eebdc62356153d88b7896f6380a528b/src/styles/abstracts/_variables.scss -------------------------------------------------------------------------------- /src/styles/base/_generic.scss: -------------------------------------------------------------------------------- 1 | .flex { 2 | display: flex; 3 | } 4 | .abs { 5 | position: absolute; 6 | } 7 | .ta_center { 8 | text-align: center; 9 | } 10 | .mg_au { 11 | margin: 0 auto; 12 | } 13 | -------------------------------------------------------------------------------- /src/styles/base/_normalize.scss: -------------------------------------------------------------------------------- 1 | @import url("https://use.typekit.net/euz1eqv.css"); 2 | * { 3 | margin: 0px; 4 | padding: 0px; 5 | box-sizing: border-box; 6 | } 7 | html { 8 | scroll-behavior: smooth; 9 | font-size: calc(100vw / 1440 * 16); 10 | } 11 | body { 12 | background-color: #23272a; 13 | overflow: hidden; 14 | } 15 | h1, 16 | h2 { 17 | font-family: "acta-display", serif; 18 | } 19 | img { 20 | -webkit-user-drag: none; 21 | user-select: none; 22 | } 23 | ::-webkit-scrollbar { 24 | display: none; 25 | } 26 | -------------------------------------------------------------------------------- /src/styles/main.scss: -------------------------------------------------------------------------------- 1 | @import "./base/generic"; 2 | @import "./base/normalize"; 3 | -------------------------------------------------------------------------------- /vite.config.js: -------------------------------------------------------------------------------- 1 | import { defineConfig } from 'vite' 2 | import vue from '@vitejs/plugin-vue' 3 | 4 | // https://vitejs.dev/config/ 5 | export default defineConfig({ 6 | plugins: [vue()], 7 | css: { 8 | preprocessorOptions: { 9 | scss: { 10 | additionalData: ` 11 | @import "./src/styles/abstracts/_mixins.scss"; 12 | @import "./src/styles/abstracts/_variables.scss"; 13 | ` 14 | } 15 | } 16 | } 17 | }) 18 | --------------------------------------------------------------------------------