├── .gitignore ├── .npmrc ├── README.md ├── package.json ├── pnpm-lock.yaml ├── src ├── app.css ├── app.d.ts ├── app.html └── routes │ ├── +layout.svelte │ ├── +page.svelte │ ├── 01-flip │ └── +page.svelte │ ├── 02-circles │ └── +page.svelte │ ├── 03-grid │ ├── +page.svelte │ └── action │ │ └── +page.svelte │ └── 04-movies │ ├── +layout.svelte │ ├── +layout.ts │ ├── +page.svelte │ ├── movie │ └── [id] │ │ └── +page.svelte │ └── movies.json ├── static └── favicon.png ├── svelte.config.js ├── tsconfig.json └── vite.config.ts /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | node_modules 3 | /build 4 | /.svelte-kit 5 | /package 6 | .env 7 | .env.* 8 | !.env.example 9 | vite.config.js.timestamp-* 10 | vite.config.ts.timestamp-* 11 | -------------------------------------------------------------------------------- /.npmrc: -------------------------------------------------------------------------------- 1 | engine-strict=true 2 | resolution-mode=highest 3 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Impossible Layout Animations With Svelte 2 | 3 | Learn how to do impossible layout animations with Svelte using GSAP and the FLIP animation technique. 4 | 5 | ## Post 6 | 7 | ✍️ https://joyofcode.xyz/impossible-layout-animations-with-svelte 8 | 9 | ## Remote Development 10 | 11 | [![Open in StackBlitz](https://developer.stackblitz.com/img/open_in_stackblitz.svg)](https://stackblitz.com/github/joysofcode/svelte-gsap-flip) 12 | 13 | ## Local Development 14 | 15 | ### 🧑‍🤝‍🧑 Clone the project 16 | 17 | ```sh 18 | https://github.com/joysofcode/svelte-gsap-flip 19 | ``` 20 | 21 | ### 📦️ Install dependencies 22 | 23 | ```sh 24 | pnpm i 25 | ``` 26 | 27 | ### 💿️ Run the development server 28 | 29 | ```sh 30 | pnpm run dev 31 | ``` 32 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "svelte-gsap-flip", 3 | "private": true, 4 | "type": "module", 5 | "scripts": { 6 | "dev": "vite dev", 7 | "build": "vite build", 8 | "preview": "vite preview", 9 | "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json", 10 | "check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch" 11 | }, 12 | "devDependencies": { 13 | "@sveltejs/adapter-auto": "^2.0.0", 14 | "@sveltejs/kit": "^1.5.0", 15 | "svelte": "^3.54.0", 16 | "svelte-check": "^3.0.1", 17 | "tslib": "^2.4.1", 18 | "typescript": "^5.0.0", 19 | "vite": "^4.3.0" 20 | }, 21 | "dependencies": { 22 | "@fontsource/jetbrains-mono": "^5.0.3", 23 | "@fontsource/manrope": "^5.0.3", 24 | "gsap": "^3.12.1" 25 | } 26 | } 27 | -------------------------------------------------------------------------------- /pnpm-lock.yaml: -------------------------------------------------------------------------------- 1 | lockfileVersion: '6.0' 2 | 3 | settings: 4 | autoInstallPeers: true 5 | excludeLinksFromLockfile: false 6 | 7 | dependencies: 8 | '@fontsource/jetbrains-mono': 9 | specifier: ^5.0.3 10 | version: 5.0.3 11 | '@fontsource/manrope': 12 | specifier: ^5.0.3 13 | version: 5.0.3 14 | gsap: 15 | specifier: ^3.12.1 16 | version: 3.12.1 17 | 18 | devDependencies: 19 | '@sveltejs/adapter-auto': 20 | specifier: ^2.0.0 21 | version: 2.1.0(@sveltejs/kit@1.20.2) 22 | '@sveltejs/kit': 23 | specifier: ^1.5.0 24 | version: 1.20.2(svelte@3.59.1)(vite@4.3.9) 25 | svelte: 26 | specifier: ^3.54.0 27 | version: 3.59.1 28 | svelte-check: 29 | specifier: ^3.0.1 30 | version: 3.4.3(svelte@3.59.1) 31 | tslib: 32 | specifier: ^2.4.1 33 | version: 2.5.3 34 | typescript: 35 | specifier: ^5.0.0 36 | version: 5.1.3 37 | vite: 38 | specifier: ^4.3.0 39 | version: 4.3.9 40 | 41 | packages: 42 | 43 | /@esbuild/android-arm64@0.17.19: 44 | resolution: {integrity: sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==} 45 | engines: {node: '>=12'} 46 | cpu: [arm64] 47 | os: [android] 48 | requiresBuild: true 49 | dev: true 50 | optional: true 51 | 52 | /@esbuild/android-arm@0.17.19: 53 | resolution: {integrity: sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==} 54 | engines: {node: '>=12'} 55 | cpu: [arm] 56 | os: [android] 57 | requiresBuild: true 58 | dev: true 59 | optional: true 60 | 61 | /@esbuild/android-x64@0.17.19: 62 | resolution: {integrity: sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==} 63 | engines: {node: '>=12'} 64 | cpu: [x64] 65 | os: [android] 66 | requiresBuild: true 67 | dev: true 68 | optional: true 69 | 70 | /@esbuild/darwin-arm64@0.17.19: 71 | resolution: {integrity: sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==} 72 | engines: {node: '>=12'} 73 | cpu: [arm64] 74 | os: [darwin] 75 | requiresBuild: true 76 | dev: true 77 | optional: true 78 | 79 | /@esbuild/darwin-x64@0.17.19: 80 | resolution: {integrity: sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==} 81 | engines: {node: '>=12'} 82 | cpu: [x64] 83 | os: [darwin] 84 | requiresBuild: true 85 | dev: true 86 | optional: true 87 | 88 | /@esbuild/freebsd-arm64@0.17.19: 89 | resolution: {integrity: sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==} 90 | engines: {node: '>=12'} 91 | cpu: [arm64] 92 | os: [freebsd] 93 | requiresBuild: true 94 | dev: true 95 | optional: true 96 | 97 | /@esbuild/freebsd-x64@0.17.19: 98 | resolution: {integrity: sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==} 99 | engines: {node: '>=12'} 100 | cpu: [x64] 101 | os: [freebsd] 102 | requiresBuild: true 103 | dev: true 104 | optional: true 105 | 106 | /@esbuild/linux-arm64@0.17.19: 107 | resolution: {integrity: sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==} 108 | engines: {node: '>=12'} 109 | cpu: [arm64] 110 | os: [linux] 111 | requiresBuild: true 112 | dev: true 113 | optional: true 114 | 115 | /@esbuild/linux-arm@0.17.19: 116 | resolution: {integrity: sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==} 117 | engines: {node: '>=12'} 118 | cpu: [arm] 119 | os: [linux] 120 | requiresBuild: true 121 | dev: true 122 | optional: true 123 | 124 | /@esbuild/linux-ia32@0.17.19: 125 | resolution: {integrity: sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==} 126 | engines: {node: '>=12'} 127 | cpu: [ia32] 128 | os: [linux] 129 | requiresBuild: true 130 | dev: true 131 | optional: true 132 | 133 | /@esbuild/linux-loong64@0.17.19: 134 | resolution: {integrity: sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==} 135 | engines: {node: '>=12'} 136 | cpu: [loong64] 137 | os: [linux] 138 | requiresBuild: true 139 | dev: true 140 | optional: true 141 | 142 | /@esbuild/linux-mips64el@0.17.19: 143 | resolution: {integrity: sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==} 144 | engines: {node: '>=12'} 145 | cpu: [mips64el] 146 | os: [linux] 147 | requiresBuild: true 148 | dev: true 149 | optional: true 150 | 151 | /@esbuild/linux-ppc64@0.17.19: 152 | resolution: {integrity: sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==} 153 | engines: {node: '>=12'} 154 | cpu: [ppc64] 155 | os: [linux] 156 | requiresBuild: true 157 | dev: true 158 | optional: true 159 | 160 | /@esbuild/linux-riscv64@0.17.19: 161 | resolution: {integrity: sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==} 162 | engines: {node: '>=12'} 163 | cpu: [riscv64] 164 | os: [linux] 165 | requiresBuild: true 166 | dev: true 167 | optional: true 168 | 169 | /@esbuild/linux-s390x@0.17.19: 170 | resolution: {integrity: sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==} 171 | engines: {node: '>=12'} 172 | cpu: [s390x] 173 | os: [linux] 174 | requiresBuild: true 175 | dev: true 176 | optional: true 177 | 178 | /@esbuild/linux-x64@0.17.19: 179 | resolution: {integrity: sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==} 180 | engines: {node: '>=12'} 181 | cpu: [x64] 182 | os: [linux] 183 | requiresBuild: true 184 | dev: true 185 | optional: true 186 | 187 | /@esbuild/netbsd-x64@0.17.19: 188 | resolution: {integrity: sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==} 189 | engines: {node: '>=12'} 190 | cpu: [x64] 191 | os: [netbsd] 192 | requiresBuild: true 193 | dev: true 194 | optional: true 195 | 196 | /@esbuild/openbsd-x64@0.17.19: 197 | resolution: {integrity: sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==} 198 | engines: {node: '>=12'} 199 | cpu: [x64] 200 | os: [openbsd] 201 | requiresBuild: true 202 | dev: true 203 | optional: true 204 | 205 | /@esbuild/sunos-x64@0.17.19: 206 | resolution: {integrity: sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==} 207 | engines: {node: '>=12'} 208 | cpu: [x64] 209 | os: [sunos] 210 | requiresBuild: true 211 | dev: true 212 | optional: true 213 | 214 | /@esbuild/win32-arm64@0.17.19: 215 | resolution: {integrity: sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==} 216 | engines: {node: '>=12'} 217 | cpu: [arm64] 218 | os: [win32] 219 | requiresBuild: true 220 | dev: true 221 | optional: true 222 | 223 | /@esbuild/win32-ia32@0.17.19: 224 | resolution: {integrity: sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==} 225 | engines: {node: '>=12'} 226 | cpu: [ia32] 227 | os: [win32] 228 | requiresBuild: true 229 | dev: true 230 | optional: true 231 | 232 | /@esbuild/win32-x64@0.17.19: 233 | resolution: {integrity: sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==} 234 | engines: {node: '>=12'} 235 | cpu: [x64] 236 | os: [win32] 237 | requiresBuild: true 238 | dev: true 239 | optional: true 240 | 241 | /@fontsource/jetbrains-mono@5.0.3: 242 | resolution: {integrity: sha512-0zbVAm0dVaBo7x9Q4ceX4VWe5VSM1Jaonb85bC+LR7fTpPeOpQs1nPDSdR55XMGSghl7ElsL12g8AaJKwXoutw==} 243 | dev: false 244 | 245 | /@fontsource/manrope@5.0.3: 246 | resolution: {integrity: sha512-MlRhrzpIEcgAB0MFdlQ/LVD5C4XB53Pq13Wxxb3inyEAPG+gSBoHW1NKGOWwOQs22FLlengtbOkmL5br2/YASw==} 247 | dev: false 248 | 249 | /@jridgewell/resolve-uri@3.1.0: 250 | resolution: {integrity: sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==} 251 | engines: {node: '>=6.0.0'} 252 | dev: true 253 | 254 | /@jridgewell/sourcemap-codec@1.4.14: 255 | resolution: {integrity: sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==} 256 | dev: true 257 | 258 | /@jridgewell/sourcemap-codec@1.4.15: 259 | resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} 260 | dev: true 261 | 262 | /@jridgewell/trace-mapping@0.3.18: 263 | resolution: {integrity: sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==} 264 | dependencies: 265 | '@jridgewell/resolve-uri': 3.1.0 266 | '@jridgewell/sourcemap-codec': 1.4.14 267 | dev: true 268 | 269 | /@nodelib/fs.scandir@2.1.5: 270 | resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} 271 | engines: {node: '>= 8'} 272 | dependencies: 273 | '@nodelib/fs.stat': 2.0.5 274 | run-parallel: 1.2.0 275 | dev: true 276 | 277 | /@nodelib/fs.stat@2.0.5: 278 | resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} 279 | engines: {node: '>= 8'} 280 | dev: true 281 | 282 | /@nodelib/fs.walk@1.2.8: 283 | resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} 284 | engines: {node: '>= 8'} 285 | dependencies: 286 | '@nodelib/fs.scandir': 2.1.5 287 | fastq: 1.15.0 288 | dev: true 289 | 290 | /@polka/url@1.0.0-next.21: 291 | resolution: {integrity: sha512-a5Sab1C4/icpTZVzZc5Ghpz88yQtGOyNqYXcZgOssB2uuAr+wF/MvN6bgtW32q7HHrvBki+BsZ0OuNv6EV3K9g==} 292 | dev: true 293 | 294 | /@sveltejs/adapter-auto@2.1.0(@sveltejs/kit@1.20.2): 295 | resolution: {integrity: sha512-o2pZCfATFtA/Gw/BB0Xm7k4EYaekXxaPGER3xGSY3FvzFJGTlJlZjBseaXwYSM94lZ0HniOjTokN3cWaLX6fow==} 296 | peerDependencies: 297 | '@sveltejs/kit': ^1.0.0 298 | dependencies: 299 | '@sveltejs/kit': 1.20.2(svelte@3.59.1)(vite@4.3.9) 300 | import-meta-resolve: 3.0.0 301 | dev: true 302 | 303 | /@sveltejs/kit@1.20.2(svelte@3.59.1)(vite@4.3.9): 304 | resolution: {integrity: sha512-MtR1i+HtmYWcRgtubw1GQqT/+CWXL/z24PegE0xYAdObbhdr7YtEfmoe705D/JZMtMmoPXrmSk4W0MfL5A3lYw==} 305 | engines: {node: ^16.14 || >=18} 306 | hasBin: true 307 | requiresBuild: true 308 | peerDependencies: 309 | svelte: ^3.54.0 || ^4.0.0-next.0 310 | vite: ^4.0.0 311 | dependencies: 312 | '@sveltejs/vite-plugin-svelte': 2.4.1(svelte@3.59.1)(vite@4.3.9) 313 | '@types/cookie': 0.5.1 314 | cookie: 0.5.0 315 | devalue: 4.3.2 316 | esm-env: 1.0.0 317 | kleur: 4.1.5 318 | magic-string: 0.30.0 319 | mime: 3.0.0 320 | sade: 1.8.1 321 | set-cookie-parser: 2.6.0 322 | sirv: 2.0.3 323 | svelte: 3.59.1 324 | tiny-glob: 0.2.9 325 | undici: 5.22.1 326 | vite: 4.3.9 327 | transitivePeerDependencies: 328 | - supports-color 329 | dev: true 330 | 331 | /@sveltejs/vite-plugin-svelte-inspector@1.0.2(@sveltejs/vite-plugin-svelte@2.4.1)(svelte@3.59.1)(vite@4.3.9): 332 | resolution: {integrity: sha512-Cy1dUMcYCnDVV/hPLXa43YZJ2jGKVW5rA0xuNL9dlmYhT0yoS1g7+FOFSRlgk0BXKk/Oc7grs+8BVA5Iz2fr8A==} 333 | engines: {node: ^14.18.0 || >= 16} 334 | peerDependencies: 335 | '@sveltejs/vite-plugin-svelte': ^2.2.0 336 | svelte: ^3.54.0 || ^4.0.0-next.0 337 | vite: ^4.0.0 338 | dependencies: 339 | '@sveltejs/vite-plugin-svelte': 2.4.1(svelte@3.59.1)(vite@4.3.9) 340 | debug: 4.3.4 341 | svelte: 3.59.1 342 | vite: 4.3.9 343 | transitivePeerDependencies: 344 | - supports-color 345 | dev: true 346 | 347 | /@sveltejs/vite-plugin-svelte@2.4.1(svelte@3.59.1)(vite@4.3.9): 348 | resolution: {integrity: sha512-bNNKvoRY89ptY7udeBSCmTdCVwkjmMcZ0j/z9J5MuedT8jPjq0zrknAo/jF1sToAza4NVaAgR9AkZoD9oJJmnA==} 349 | engines: {node: ^14.18.0 || >= 16} 350 | peerDependencies: 351 | svelte: ^3.54.0 || ^4.0.0-next.0 352 | vite: ^4.0.0 353 | dependencies: 354 | '@sveltejs/vite-plugin-svelte-inspector': 1.0.2(@sveltejs/vite-plugin-svelte@2.4.1)(svelte@3.59.1)(vite@4.3.9) 355 | debug: 4.3.4 356 | deepmerge: 4.3.1 357 | kleur: 4.1.5 358 | magic-string: 0.30.0 359 | svelte: 3.59.1 360 | svelte-hmr: 0.15.2(svelte@3.59.1) 361 | vite: 4.3.9 362 | vitefu: 0.2.4(vite@4.3.9) 363 | transitivePeerDependencies: 364 | - supports-color 365 | dev: true 366 | 367 | /@types/cookie@0.5.1: 368 | resolution: {integrity: sha512-COUnqfB2+ckwXXSFInsFdOAWQzCCx+a5hq2ruyj+Vjund94RJQd4LG2u9hnvJrTgunKAaax7ancBYlDrNYxA0g==} 369 | dev: true 370 | 371 | /@types/pug@2.0.6: 372 | resolution: {integrity: sha512-SnHmG9wN1UVmagJOnyo/qkk0Z7gejYxOYYmaAwr5u2yFYfsupN3sg10kyzN8Hep/2zbHxCnsumxOoRIRMBwKCg==} 373 | dev: true 374 | 375 | /anymatch@3.1.3: 376 | resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} 377 | engines: {node: '>= 8'} 378 | dependencies: 379 | normalize-path: 3.0.0 380 | picomatch: 2.3.1 381 | dev: true 382 | 383 | /balanced-match@1.0.2: 384 | resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} 385 | dev: true 386 | 387 | /binary-extensions@2.2.0: 388 | resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} 389 | engines: {node: '>=8'} 390 | dev: true 391 | 392 | /brace-expansion@1.1.11: 393 | resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} 394 | dependencies: 395 | balanced-match: 1.0.2 396 | concat-map: 0.0.1 397 | dev: true 398 | 399 | /braces@3.0.2: 400 | resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==} 401 | engines: {node: '>=8'} 402 | dependencies: 403 | fill-range: 7.0.1 404 | dev: true 405 | 406 | /buffer-crc32@0.2.13: 407 | resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} 408 | dev: true 409 | 410 | /busboy@1.6.0: 411 | resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} 412 | engines: {node: '>=10.16.0'} 413 | dependencies: 414 | streamsearch: 1.1.0 415 | dev: true 416 | 417 | /callsites@3.1.0: 418 | resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} 419 | engines: {node: '>=6'} 420 | dev: true 421 | 422 | /chokidar@3.5.3: 423 | resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} 424 | engines: {node: '>= 8.10.0'} 425 | dependencies: 426 | anymatch: 3.1.3 427 | braces: 3.0.2 428 | glob-parent: 5.1.2 429 | is-binary-path: 2.1.0 430 | is-glob: 4.0.3 431 | normalize-path: 3.0.0 432 | readdirp: 3.6.0 433 | optionalDependencies: 434 | fsevents: 2.3.2 435 | dev: true 436 | 437 | /concat-map@0.0.1: 438 | resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} 439 | dev: true 440 | 441 | /cookie@0.5.0: 442 | resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==} 443 | engines: {node: '>= 0.6'} 444 | dev: true 445 | 446 | /debug@4.3.4: 447 | resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==} 448 | engines: {node: '>=6.0'} 449 | peerDependencies: 450 | supports-color: '*' 451 | peerDependenciesMeta: 452 | supports-color: 453 | optional: true 454 | dependencies: 455 | ms: 2.1.2 456 | dev: true 457 | 458 | /deepmerge@4.3.1: 459 | resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==} 460 | engines: {node: '>=0.10.0'} 461 | dev: true 462 | 463 | /detect-indent@6.1.0: 464 | resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} 465 | engines: {node: '>=8'} 466 | dev: true 467 | 468 | /devalue@4.3.2: 469 | resolution: {integrity: sha512-KqFl6pOgOW+Y6wJgu80rHpo2/3H07vr8ntR9rkkFIRETewbf5GaYYcakYfiKz89K+sLsuPkQIZaXDMjUObZwWg==} 470 | dev: true 471 | 472 | /es6-promise@3.3.1: 473 | resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} 474 | dev: true 475 | 476 | /esbuild@0.17.19: 477 | resolution: {integrity: sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==} 478 | engines: {node: '>=12'} 479 | hasBin: true 480 | requiresBuild: true 481 | optionalDependencies: 482 | '@esbuild/android-arm': 0.17.19 483 | '@esbuild/android-arm64': 0.17.19 484 | '@esbuild/android-x64': 0.17.19 485 | '@esbuild/darwin-arm64': 0.17.19 486 | '@esbuild/darwin-x64': 0.17.19 487 | '@esbuild/freebsd-arm64': 0.17.19 488 | '@esbuild/freebsd-x64': 0.17.19 489 | '@esbuild/linux-arm': 0.17.19 490 | '@esbuild/linux-arm64': 0.17.19 491 | '@esbuild/linux-ia32': 0.17.19 492 | '@esbuild/linux-loong64': 0.17.19 493 | '@esbuild/linux-mips64el': 0.17.19 494 | '@esbuild/linux-ppc64': 0.17.19 495 | '@esbuild/linux-riscv64': 0.17.19 496 | '@esbuild/linux-s390x': 0.17.19 497 | '@esbuild/linux-x64': 0.17.19 498 | '@esbuild/netbsd-x64': 0.17.19 499 | '@esbuild/openbsd-x64': 0.17.19 500 | '@esbuild/sunos-x64': 0.17.19 501 | '@esbuild/win32-arm64': 0.17.19 502 | '@esbuild/win32-ia32': 0.17.19 503 | '@esbuild/win32-x64': 0.17.19 504 | dev: true 505 | 506 | /esm-env@1.0.0: 507 | resolution: {integrity: sha512-Cf6VksWPsTuW01vU9Mk/3vRue91Zevka5SjyNf3nEpokFRuqt/KjUQoGAwq9qMmhpLTHmXzSIrFRw8zxWzmFBA==} 508 | dev: true 509 | 510 | /fast-glob@3.2.12: 511 | resolution: {integrity: sha512-DVj4CQIYYow0BlaelwK1pHl5n5cRSJfM60UA0zK891sVInoPri2Ekj7+e1CT3/3qxXenpI+nBBmQAcJPJgaj4w==} 512 | engines: {node: '>=8.6.0'} 513 | dependencies: 514 | '@nodelib/fs.stat': 2.0.5 515 | '@nodelib/fs.walk': 1.2.8 516 | glob-parent: 5.1.2 517 | merge2: 1.4.1 518 | micromatch: 4.0.5 519 | dev: true 520 | 521 | /fastq@1.15.0: 522 | resolution: {integrity: sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==} 523 | dependencies: 524 | reusify: 1.0.4 525 | dev: true 526 | 527 | /fill-range@7.0.1: 528 | resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==} 529 | engines: {node: '>=8'} 530 | dependencies: 531 | to-regex-range: 5.0.1 532 | dev: true 533 | 534 | /fs.realpath@1.0.0: 535 | resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} 536 | dev: true 537 | 538 | /fsevents@2.3.2: 539 | resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} 540 | engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} 541 | os: [darwin] 542 | requiresBuild: true 543 | dev: true 544 | optional: true 545 | 546 | /glob-parent@5.1.2: 547 | resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} 548 | engines: {node: '>= 6'} 549 | dependencies: 550 | is-glob: 4.0.3 551 | dev: true 552 | 553 | /glob@7.2.3: 554 | resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} 555 | dependencies: 556 | fs.realpath: 1.0.0 557 | inflight: 1.0.6 558 | inherits: 2.0.4 559 | minimatch: 3.1.2 560 | once: 1.4.0 561 | path-is-absolute: 1.0.1 562 | dev: true 563 | 564 | /globalyzer@0.1.0: 565 | resolution: {integrity: sha512-40oNTM9UfG6aBmuKxk/giHn5nQ8RVz/SS4Ir6zgzOv9/qC3kKZ9v4etGTcJbEl/NyVQH7FGU7d+X1egr57Md2Q==} 566 | dev: true 567 | 568 | /globrex@0.1.2: 569 | resolution: {integrity: sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==} 570 | dev: true 571 | 572 | /graceful-fs@4.2.11: 573 | resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} 574 | dev: true 575 | 576 | /gsap@3.12.1: 577 | resolution: {integrity: sha512-FXtb2YbBE9l8I9Pl5DFLpCMedaiMPztRlr0Ln0CMSnJn+pbTaeKlzgth8cLNPc7PzNwIZe+SEQiBBAWaBKJdVA==} 578 | dev: false 579 | 580 | /import-fresh@3.3.0: 581 | resolution: {integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==} 582 | engines: {node: '>=6'} 583 | dependencies: 584 | parent-module: 1.0.1 585 | resolve-from: 4.0.0 586 | dev: true 587 | 588 | /import-meta-resolve@3.0.0: 589 | resolution: {integrity: sha512-4IwhLhNNA8yy445rPjD/lWh++7hMDOml2eHtd58eG7h+qK3EryMuuRbsHGPikCoAgIkkDnckKfWSk2iDla/ejg==} 590 | dev: true 591 | 592 | /inflight@1.0.6: 593 | resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} 594 | dependencies: 595 | once: 1.4.0 596 | wrappy: 1.0.2 597 | dev: true 598 | 599 | /inherits@2.0.4: 600 | resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} 601 | dev: true 602 | 603 | /is-binary-path@2.1.0: 604 | resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} 605 | engines: {node: '>=8'} 606 | dependencies: 607 | binary-extensions: 2.2.0 608 | dev: true 609 | 610 | /is-extglob@2.1.1: 611 | resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} 612 | engines: {node: '>=0.10.0'} 613 | dev: true 614 | 615 | /is-glob@4.0.3: 616 | resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} 617 | engines: {node: '>=0.10.0'} 618 | dependencies: 619 | is-extglob: 2.1.1 620 | dev: true 621 | 622 | /is-number@7.0.0: 623 | resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} 624 | engines: {node: '>=0.12.0'} 625 | dev: true 626 | 627 | /kleur@4.1.5: 628 | resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==} 629 | engines: {node: '>=6'} 630 | dev: true 631 | 632 | /magic-string@0.27.0: 633 | resolution: {integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==} 634 | engines: {node: '>=12'} 635 | dependencies: 636 | '@jridgewell/sourcemap-codec': 1.4.15 637 | dev: true 638 | 639 | /magic-string@0.30.0: 640 | resolution: {integrity: sha512-LA+31JYDJLs82r2ScLrlz1GjSgu66ZV518eyWT+S8VhyQn/JL0u9MeBOvQMGYiPk1DBiSN9DDMOcXvigJZaViQ==} 641 | engines: {node: '>=12'} 642 | dependencies: 643 | '@jridgewell/sourcemap-codec': 1.4.15 644 | dev: true 645 | 646 | /merge2@1.4.1: 647 | resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} 648 | engines: {node: '>= 8'} 649 | dev: true 650 | 651 | /micromatch@4.0.5: 652 | resolution: {integrity: sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==} 653 | engines: {node: '>=8.6'} 654 | dependencies: 655 | braces: 3.0.2 656 | picomatch: 2.3.1 657 | dev: true 658 | 659 | /mime@3.0.0: 660 | resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==} 661 | engines: {node: '>=10.0.0'} 662 | hasBin: true 663 | dev: true 664 | 665 | /min-indent@1.0.1: 666 | resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} 667 | engines: {node: '>=4'} 668 | dev: true 669 | 670 | /minimatch@3.1.2: 671 | resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} 672 | dependencies: 673 | brace-expansion: 1.1.11 674 | dev: true 675 | 676 | /minimist@1.2.8: 677 | resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} 678 | dev: true 679 | 680 | /mkdirp@0.5.6: 681 | resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} 682 | hasBin: true 683 | dependencies: 684 | minimist: 1.2.8 685 | dev: true 686 | 687 | /mri@1.2.0: 688 | resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} 689 | engines: {node: '>=4'} 690 | dev: true 691 | 692 | /mrmime@1.0.1: 693 | resolution: {integrity: sha512-hzzEagAgDyoU1Q6yg5uI+AorQgdvMCur3FcKf7NhMKWsaYg+RnbTyHRa/9IlLF9rf455MOCtcqqrQQ83pPP7Uw==} 694 | engines: {node: '>=10'} 695 | dev: true 696 | 697 | /ms@2.1.2: 698 | resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} 699 | dev: true 700 | 701 | /nanoid@3.3.6: 702 | resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==} 703 | engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} 704 | hasBin: true 705 | dev: true 706 | 707 | /normalize-path@3.0.0: 708 | resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} 709 | engines: {node: '>=0.10.0'} 710 | dev: true 711 | 712 | /once@1.4.0: 713 | resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} 714 | dependencies: 715 | wrappy: 1.0.2 716 | dev: true 717 | 718 | /parent-module@1.0.1: 719 | resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} 720 | engines: {node: '>=6'} 721 | dependencies: 722 | callsites: 3.1.0 723 | dev: true 724 | 725 | /path-is-absolute@1.0.1: 726 | resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} 727 | engines: {node: '>=0.10.0'} 728 | dev: true 729 | 730 | /picocolors@1.0.0: 731 | resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} 732 | dev: true 733 | 734 | /picomatch@2.3.1: 735 | resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} 736 | engines: {node: '>=8.6'} 737 | dev: true 738 | 739 | /postcss@8.4.24: 740 | resolution: {integrity: sha512-M0RzbcI0sO/XJNucsGjvWU9ERWxb/ytp1w6dKtxTKgixdtQDq4rmx/g8W1hnaheq9jgwL/oyEdH5Bc4WwJKMqg==} 741 | engines: {node: ^10 || ^12 || >=14} 742 | dependencies: 743 | nanoid: 3.3.6 744 | picocolors: 1.0.0 745 | source-map-js: 1.0.2 746 | dev: true 747 | 748 | /queue-microtask@1.2.3: 749 | resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} 750 | dev: true 751 | 752 | /readdirp@3.6.0: 753 | resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==} 754 | engines: {node: '>=8.10.0'} 755 | dependencies: 756 | picomatch: 2.3.1 757 | dev: true 758 | 759 | /resolve-from@4.0.0: 760 | resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} 761 | engines: {node: '>=4'} 762 | dev: true 763 | 764 | /reusify@1.0.4: 765 | resolution: {integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==} 766 | engines: {iojs: '>=1.0.0', node: '>=0.10.0'} 767 | dev: true 768 | 769 | /rimraf@2.7.1: 770 | resolution: {integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==} 771 | hasBin: true 772 | dependencies: 773 | glob: 7.2.3 774 | dev: true 775 | 776 | /rollup@3.25.1: 777 | resolution: {integrity: sha512-tywOR+rwIt5m2ZAWSe5AIJcTat8vGlnPFAv15ycCrw33t6iFsXZ6mzHVFh2psSjxQPmI+xgzMZZizUAukBI4aQ==} 778 | engines: {node: '>=14.18.0', npm: '>=8.0.0'} 779 | hasBin: true 780 | optionalDependencies: 781 | fsevents: 2.3.2 782 | dev: true 783 | 784 | /run-parallel@1.2.0: 785 | resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} 786 | dependencies: 787 | queue-microtask: 1.2.3 788 | dev: true 789 | 790 | /sade@1.8.1: 791 | resolution: {integrity: sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==} 792 | engines: {node: '>=6'} 793 | dependencies: 794 | mri: 1.2.0 795 | dev: true 796 | 797 | /sander@0.5.1: 798 | resolution: {integrity: sha512-3lVqBir7WuKDHGrKRDn/1Ye3kwpXaDOMsiRP1wd6wpZW56gJhsbp5RqQpA6JG/P+pkXizygnr1dKR8vzWaVsfA==} 799 | dependencies: 800 | es6-promise: 3.3.1 801 | graceful-fs: 4.2.11 802 | mkdirp: 0.5.6 803 | rimraf: 2.7.1 804 | dev: true 805 | 806 | /set-cookie-parser@2.6.0: 807 | resolution: {integrity: sha512-RVnVQxTXuerk653XfuliOxBP81Sf0+qfQE73LIYKcyMYHG94AuH0kgrQpRDuTZnSmjpysHmzxJXKNfa6PjFhyQ==} 808 | dev: true 809 | 810 | /sirv@2.0.3: 811 | resolution: {integrity: sha512-O9jm9BsID1P+0HOi81VpXPoDxYP374pkOLzACAoyUQ/3OUVndNpsz6wMnY2z+yOxzbllCKZrM+9QrWsv4THnyA==} 812 | engines: {node: '>= 10'} 813 | dependencies: 814 | '@polka/url': 1.0.0-next.21 815 | mrmime: 1.0.1 816 | totalist: 3.0.1 817 | dev: true 818 | 819 | /sorcery@0.11.0: 820 | resolution: {integrity: sha512-J69LQ22xrQB1cIFJhPfgtLuI6BpWRiWu1Y3vSsIwK/eAScqJxd/+CJlUuHQRdX2C9NGFamq+KqNywGgaThwfHw==} 821 | hasBin: true 822 | dependencies: 823 | '@jridgewell/sourcemap-codec': 1.4.15 824 | buffer-crc32: 0.2.13 825 | minimist: 1.2.8 826 | sander: 0.5.1 827 | dev: true 828 | 829 | /source-map-js@1.0.2: 830 | resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} 831 | engines: {node: '>=0.10.0'} 832 | dev: true 833 | 834 | /streamsearch@1.1.0: 835 | resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} 836 | engines: {node: '>=10.0.0'} 837 | dev: true 838 | 839 | /strip-indent@3.0.0: 840 | resolution: {integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==} 841 | engines: {node: '>=8'} 842 | dependencies: 843 | min-indent: 1.0.1 844 | dev: true 845 | 846 | /svelte-check@3.4.3(svelte@3.59.1): 847 | resolution: {integrity: sha512-O07soQFY3X0VDt+bcGc6D5naz0cLtjwnmNP9JsEBPVyMemFEqUhL2OdLqvkl5H/u8Jwm50EiAU4BPRn5iin/kg==} 848 | hasBin: true 849 | peerDependencies: 850 | svelte: ^3.55.0 || ^4.0.0-next.0 || ^4.0.0 851 | dependencies: 852 | '@jridgewell/trace-mapping': 0.3.18 853 | chokidar: 3.5.3 854 | fast-glob: 3.2.12 855 | import-fresh: 3.3.0 856 | picocolors: 1.0.0 857 | sade: 1.8.1 858 | svelte: 3.59.1 859 | svelte-preprocess: 5.0.4(svelte@3.59.1)(typescript@5.1.3) 860 | typescript: 5.1.3 861 | transitivePeerDependencies: 862 | - '@babel/core' 863 | - coffeescript 864 | - less 865 | - postcss 866 | - postcss-load-config 867 | - pug 868 | - sass 869 | - stylus 870 | - sugarss 871 | dev: true 872 | 873 | /svelte-hmr@0.15.2(svelte@3.59.1): 874 | resolution: {integrity: sha512-q/bAruCvFLwvNbeE1x3n37TYFb3mTBJ6TrCq6p2CoFbSTNhDE9oAtEfpy+wmc9So8AG0Tja+X0/mJzX9tSfvIg==} 875 | engines: {node: ^12.20 || ^14.13.1 || >= 16} 876 | peerDependencies: 877 | svelte: ^3.19.0 || ^4.0.0-next.0 878 | dependencies: 879 | svelte: 3.59.1 880 | dev: true 881 | 882 | /svelte-preprocess@5.0.4(svelte@3.59.1)(typescript@5.1.3): 883 | resolution: {integrity: sha512-ABia2QegosxOGsVlsSBJvoWeXy1wUKSfF7SWJdTjLAbx/Y3SrVevvvbFNQqrSJw89+lNSsM58SipmZJ5SRi5iw==} 884 | engines: {node: '>= 14.10.0'} 885 | requiresBuild: true 886 | peerDependencies: 887 | '@babel/core': ^7.10.2 888 | coffeescript: ^2.5.1 889 | less: ^3.11.3 || ^4.0.0 890 | postcss: ^7 || ^8 891 | postcss-load-config: ^2.1.0 || ^3.0.0 || ^4.0.0 892 | pug: ^3.0.0 893 | sass: ^1.26.8 894 | stylus: ^0.55.0 895 | sugarss: ^2.0.0 || ^3.0.0 || ^4.0.0 896 | svelte: ^3.23.0 || ^4.0.0-next.0 || ^4.0.0 897 | typescript: '>=3.9.5 || ^4.0.0 || ^5.0.0' 898 | peerDependenciesMeta: 899 | '@babel/core': 900 | optional: true 901 | coffeescript: 902 | optional: true 903 | less: 904 | optional: true 905 | postcss: 906 | optional: true 907 | postcss-load-config: 908 | optional: true 909 | pug: 910 | optional: true 911 | sass: 912 | optional: true 913 | stylus: 914 | optional: true 915 | sugarss: 916 | optional: true 917 | typescript: 918 | optional: true 919 | dependencies: 920 | '@types/pug': 2.0.6 921 | detect-indent: 6.1.0 922 | magic-string: 0.27.0 923 | sorcery: 0.11.0 924 | strip-indent: 3.0.0 925 | svelte: 3.59.1 926 | typescript: 5.1.3 927 | dev: true 928 | 929 | /svelte@3.59.1: 930 | resolution: {integrity: sha512-pKj8fEBmqf6mq3/NfrB9SLtcJcUvjYSWyePlfCqN9gujLB25RitWK8PvFzlwim6hD/We35KbPlRteuA6rnPGcQ==} 931 | engines: {node: '>= 8'} 932 | dev: true 933 | 934 | /tiny-glob@0.2.9: 935 | resolution: {integrity: sha512-g/55ssRPUjShh+xkfx9UPDXqhckHEsHr4Vd9zX55oSdGZc/MD0m3sferOkwWtp98bv+kcVfEHtRJgBVJzelrzg==} 936 | dependencies: 937 | globalyzer: 0.1.0 938 | globrex: 0.1.2 939 | dev: true 940 | 941 | /to-regex-range@5.0.1: 942 | resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} 943 | engines: {node: '>=8.0'} 944 | dependencies: 945 | is-number: 7.0.0 946 | dev: true 947 | 948 | /totalist@3.0.1: 949 | resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} 950 | engines: {node: '>=6'} 951 | dev: true 952 | 953 | /tslib@2.5.3: 954 | resolution: {integrity: sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==} 955 | dev: true 956 | 957 | /typescript@5.1.3: 958 | resolution: {integrity: sha512-XH627E9vkeqhlZFQuL+UsyAXEnibT0kWR2FWONlr4sTjvxyJYnyefgrkyECLzM5NenmKzRAy2rR/OlYLA1HkZw==} 959 | engines: {node: '>=14.17'} 960 | hasBin: true 961 | dev: true 962 | 963 | /undici@5.22.1: 964 | resolution: {integrity: sha512-Ji2IJhFXZY0x/0tVBXeQwgPlLWw13GVzpsWPQ3rV50IFMMof2I55PZZxtm4P6iNq+L5znYN9nSTAq0ZyE6lSJw==} 965 | engines: {node: '>=14.0'} 966 | dependencies: 967 | busboy: 1.6.0 968 | dev: true 969 | 970 | /vite@4.3.9: 971 | resolution: {integrity: sha512-qsTNZjO9NoJNW7KnOrgYwczm0WctJ8m/yqYAMAK9Lxt4SoySUfS5S8ia9K7JHpa3KEeMfyF8LoJ3c5NeBJy6pg==} 972 | engines: {node: ^14.18.0 || >=16.0.0} 973 | hasBin: true 974 | peerDependencies: 975 | '@types/node': '>= 14' 976 | less: '*' 977 | sass: '*' 978 | stylus: '*' 979 | sugarss: '*' 980 | terser: ^5.4.0 981 | peerDependenciesMeta: 982 | '@types/node': 983 | optional: true 984 | less: 985 | optional: true 986 | sass: 987 | optional: true 988 | stylus: 989 | optional: true 990 | sugarss: 991 | optional: true 992 | terser: 993 | optional: true 994 | dependencies: 995 | esbuild: 0.17.19 996 | postcss: 8.4.24 997 | rollup: 3.25.1 998 | optionalDependencies: 999 | fsevents: 2.3.2 1000 | dev: true 1001 | 1002 | /vitefu@0.2.4(vite@4.3.9): 1003 | resolution: {integrity: sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g==} 1004 | peerDependencies: 1005 | vite: ^3.0.0 || ^4.0.0 1006 | peerDependenciesMeta: 1007 | vite: 1008 | optional: true 1009 | dependencies: 1010 | vite: 4.3.9 1011 | dev: true 1012 | 1013 | /wrappy@1.0.2: 1014 | resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} 1015 | dev: true 1016 | -------------------------------------------------------------------------------- /src/app.css: -------------------------------------------------------------------------------- 1 | @import '@fontsource/jetbrains-mono'; 2 | 3 | body { 4 | font-family: 'JetBrains Mono', sans-serif; 5 | color: hsl(220 10% 80%); 6 | background-color: hsl(220 10% 10%); 7 | background-attachment: fixed; 8 | padding: 1rem; 9 | } 10 | 11 | body::-webkit-scrollbar { 12 | display: none; 13 | } 14 | -------------------------------------------------------------------------------- /src/app.d.ts: -------------------------------------------------------------------------------- 1 | // See https://kit.svelte.dev/docs/types#app 2 | // for information about these interfaces 3 | declare global { 4 | namespace App { 5 | // interface Error {} 6 | // interface Locals {} 7 | // interface PageData {} 8 | // interface Platform {} 9 | } 10 | } 11 | 12 | export {}; 13 | -------------------------------------------------------------------------------- /src/app.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | %sveltekit.head% 9 | 10 | 11 |
%sveltekit.body%
12 | 13 | 14 | -------------------------------------------------------------------------------- /src/routes/+layout.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 | 6 | FLIP 7 | 8 | 9 | 10 | -------------------------------------------------------------------------------- /src/routes/+page.svelte: -------------------------------------------------------------------------------- 1 |
2 | 16 |
17 | 18 | 45 | -------------------------------------------------------------------------------- /src/routes/01-flip/+page.svelte: -------------------------------------------------------------------------------- 1 | 39 | 40 |

Click anywhere to FLIP

41 | 42 | 43 | 44 |
45 |
46 | {#if !swap} 47 |
First
48 | {/if} 49 |
50 | 51 |
52 | {#if swap} 53 |
Last
54 | {/if} 55 |
56 |
57 | 58 | 94 | -------------------------------------------------------------------------------- /src/routes/02-circles/+page.svelte: -------------------------------------------------------------------------------- 1 | 33 | 34 | 35 | 36 |

Click anywhere to FLIP

37 | 38 |
39 |
40 | {#each { length: 10 } as _, id} 41 | Placeholder 46 | {/each} 47 |
48 |
49 | 50 | 91 | -------------------------------------------------------------------------------- /src/routes/03-grid/+page.svelte: -------------------------------------------------------------------------------- 1 | 39 | 40 |
41 | {#each { length: 8 } as _, id} 42 | {@const details = selected === id} 43 | {@const number = id + 1} 44 | 45 | 51 | {/each} 52 |
53 | 54 | 109 | -------------------------------------------------------------------------------- /src/routes/03-grid/action/+page.svelte: -------------------------------------------------------------------------------- 1 | 48 | 49 |
50 | {#each { length: 8 } as _, id} 51 | {@const details = id === 0} 52 | {@const number = id + 1} 53 | 54 | 60 | {/each} 61 |
62 | 63 | 118 | -------------------------------------------------------------------------------- /src/routes/04-movies/+layout.svelte: -------------------------------------------------------------------------------- 1 | 23 | 24 |

Svelteflix

25 | 26 | 27 | 28 | 35 | -------------------------------------------------------------------------------- /src/routes/04-movies/+layout.ts: -------------------------------------------------------------------------------- 1 | import movies from './movies.json' 2 | 3 | export async function load() { 4 | return { movies } 5 | } 6 | -------------------------------------------------------------------------------- /src/routes/04-movies/+page.svelte: -------------------------------------------------------------------------------- 1 | 4 | 5 |
6 | {#each data.movies as movie} 7 | 24 | {/each} 25 |
26 | 27 | 63 | -------------------------------------------------------------------------------- /src/routes/04-movies/movie/[id]/+page.svelte: -------------------------------------------------------------------------------- 1 | 8 | 9 | {#if movie} 10 |
11 |
12 | 13 | {movie.title} 19 | 20 |
21 | 22 |
23 |

24 | {movie.title} 25 |

26 |

{movie.overview}

27 |
28 |
29 | 30 |
31 | {/if} 32 | 33 | 74 | -------------------------------------------------------------------------------- /src/routes/04-movies/movies.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "title": "Star Wars", 4 | "id": "star-wars", 5 | "overview": "Princess Leia is captured and held hostage by the evil Imperial forces in their effort to take over the galactic Empire. Venturesome Luke Skywalker and dashing captain Han Solo team together with the loveable robot duo R2-D2 and C-3PO to rescue the beautiful princess and restore peace and justice in the Empire.", 6 | "poster_path": "https://image.tmdb.org/t/p/w185/6FfCtAuVAW8XJjZ7eWeLibRLWTw.jpg", 7 | "backdrop_path": "https://image.tmdb.org/t/p/w1920_and_h800_multi_faces/yrdAamkeqXHm0UYukk8xgoCvc7G.jpg", 8 | "release_date": "1977-05-25", 9 | "vote_average": 8.2 10 | }, 11 | { 12 | "title": "Star Wars: The Force Awakens", 13 | "id": "star-wars-the-force-awakens", 14 | "overview": "Thirty years after defeating the Galactic Empire, Han Solo and his allies face a new threat from the evil Kylo Ren and his army of Stormtroopers.", 15 | "poster_path": "https://image.tmdb.org/t/p/w185/wqnLdwVXoBjKibFRR5U3y0aDUhs.jpg", 16 | "backdrop_path": "https://image.tmdb.org/t/p/w1920_and_h800_multi_faces/8BTsTfln4jlQrLXUBquXJ0ASQy9.jpg", 17 | "release_date": "2015-12-15", 18 | "vote_average": 7.3 19 | }, 20 | { 21 | "title": "Star Wars: The Last Jedi", 22 | "id": "star-wars-the-last-jedi", 23 | "overview": "Rey develops her newly discovered abilities with the guidance of Luke Skywalker, who is unsettled by the strength of her powers. Meanwhile, the Resistance prepares to do battle with the First Order.", 24 | "poster_path": "https://image.tmdb.org/t/p/w185/ySaaKHOLAQU5HoZqWmzDIj1VvZ1.jpg", 25 | "backdrop_path": "https://image.tmdb.org/t/p/w1920_and_h800_multi_faces/5Iw7zQTHVRBOYpA0V6z0yypOPZh.jpg", 26 | "release_date": "2017-12-13", 27 | "vote_average": 6.9 28 | }, 29 | { 30 | "title": "Star Wars: The Rise of Skywalker", 31 | "id": "star-wars-the-rise-of-skywalker", 32 | "overview": "The surviving Resistance faces the First Order once again as the journey of Rey, Finn and Poe Dameron continues. With the power and knowledge of generations behind them, the final battle begins.", 33 | "poster_path": "https://image.tmdb.org/t/p/w185/db32LaOibwEliAmSL2jjDF6oDdj.jpg", 34 | "backdrop_path": "https://image.tmdb.org/t/p/w1920_and_h800_multi_faces/SPkEiZGxq5aHWQ2Zw7AITwSEo2.jpg", 35 | "release_date": "2019-12-18", 36 | "vote_average": 6.4 37 | }, 38 | { 39 | "title": "Solo: A Star Wars Story", 40 | "id": "solo-a-star-wars-story", 41 | "overview": "Through a series of daring escapades deep within a dark and dangerous criminal underworld, Han Solo meets his mighty future copilot Chewbacca and encounters the notorious gambler Lando Calrissian.", 42 | "poster_path": "https://image.tmdb.org/t/p/w185/3IGbjc5ZC5yxim5W0sFING2kdcz.jpg", 43 | "backdrop_path": "https://image.tmdb.org/t/p/w1920_and_h800_multi_faces/ojHCeDULAkQK25700fhRU75Tur2.jpg", 44 | "release_date": "2018-05-15", 45 | "vote_average": 6.6 46 | }, 47 | { 48 | "title": "Rogue One: A Star Wars Story", 49 | "id": "rogue-one-a-star-wars-story", 50 | "overview": "A rogue band of resistance fighters unite for a mission to steal the Death Star plans and bring a new hope to the galaxy.", 51 | "poster_path": "https://image.tmdb.org/t/p/w185/i0yw1mFbB7sNGHCs7EXZPzFkdA1.jpg", 52 | "backdrop_path": "https://image.tmdb.org/t/p/w1920_and_h800_multi_faces/6t8ES1d12OzWyCGxBeDYLHoaDrT.jpg", 53 | "release_date": "2016-12-14", 54 | "vote_average": 7.5 55 | }, 56 | { 57 | "title": "Star Wars: Episode I - The Phantom Menace", 58 | "id": "star-wars-the-phantom-menace", 59 | "overview": "Anakin Skywalker, a young slave strong with the Force, is discovered on Tatooine. Meanwhile, the evil Sith have returned, enacting their plot for revenge against the Jedi.", 60 | "poster_path": "https://image.tmdb.org/t/p/w185/6wkfovpn7Eq8dYNKaG5PY3q2oq6.jpg", 61 | "backdrop_path": "https://image.tmdb.org/t/p/w1920_and_h800_multi_faces/5fu7fzy4NZTsL1Jap00UBIInAuB.jpg", 62 | "release_date": "1999-05-19", 63 | "vote_average": 6.5 64 | }, 65 | { 66 | "title": "Star Wars: Episode III - Revenge of the Sith", 67 | "id": "star-wars-revenge-of-the-sith", 68 | "overview": "The evil Darth Sidious enacts his final plan for unlimited power -- and the heroic Jedi Anakin Skywalker must choose a side.", 69 | "poster_path": "https://image.tmdb.org/t/p/w185/xfSAoBEm9MNBjmlNcDYLvLSMlnq.jpg", 70 | "backdrop_path": "https://image.tmdb.org/t/p/w1920_and_h800_multi_faces/rkKx3O4e1tNDDpS3eERWZHumSMm.jpg", 71 | "release_date": "2005-05-17", 72 | "vote_average": 7.4 73 | }, 74 | { 75 | "title": "Star Wars: Episode II - Attack of the Clones", 76 | "id": "star-wars-attack-of-the-clones", 77 | "overview": "Following an assassination attempt on Senator Padmé Amidala, Jedi Knights Anakin Skywalker and Obi-Wan Kenobi investigate a mysterious plot that could change the galaxy forever.", 78 | "poster_path": "https://image.tmdb.org/t/p/w185/oZNPzxqM2s5DyVWab09NTQScDQt.jpg", 79 | "backdrop_path": "https://image.tmdb.org/t/p/w1920_and_h800_multi_faces/pXnNSeyTCUebjpHTiZt7v6FZId0.jpg", 80 | "release_date": "2002-05-15", 81 | "vote_average": 6.5 82 | }, 83 | { 84 | "title": "The Empire Strikes Back", 85 | "id": "star-wars-the-empire-strikes-back", 86 | "overview": "The epic saga continues as Luke Skywalker, in hopes of defeating the evil Galactic Empire, learns the ways of the Jedi from aging master Yoda. But Darth Vader is more determined than ever to capture Luke. Meanwhile, rebel leader Princess Leia, cocky Han Solo, Chewbacca, and droids C-3PO and R2-D2 are thrown into various stages of capture, betrayal and despair.", 87 | "poster_path": "https://image.tmdb.org/t/p/w185/2l05cFWJacyIsTpsqSgH0wQXe4V.jpg", 88 | "backdrop_path": "https://image.tmdb.org/t/p/w1920_and_h800_multi_faces/aJCtkxLLzkk1pECehVjKHA2lBgw.jpg", 89 | "release_date": "1980-05-20", 90 | "vote_average": 8.4 91 | }, 92 | { 93 | "title": "Return of the Jedi", 94 | "id": "star-wars-return-of-the-jedi", 95 | "overview": "Luke Skywalker leads a mission to rescue his friend Han Solo from the clutches of Jabba the Hutt, while the Emperor seeks to destroy the Rebellion once and for all with a second dreaded Death Star.", 96 | "poster_path": "https://image.tmdb.org/t/p/w185/q6ydU8r1iYyy2bV7tPVaq266Y1k.jpg", 97 | "backdrop_path": "https://image.tmdb.org/t/p/w1920_and_h800_multi_faces/zgLadRY6f8Ydgf9sKpiq3tPYBUM.jpg", 98 | "release_date": "1983-05-25", 99 | "vote_average": 7.9 100 | } 101 | ] 102 | -------------------------------------------------------------------------------- /static/favicon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/joysofcode/svelte-gsap-flip/2abddd2a1c62022e523c9e340f019182c2ecd6c6/static/favicon.png -------------------------------------------------------------------------------- /svelte.config.js: -------------------------------------------------------------------------------- 1 | import adapter from '@sveltejs/adapter-auto'; 2 | import { vitePreprocess } from '@sveltejs/kit/vite'; 3 | 4 | /** @type {import('@sveltejs/kit').Config} */ 5 | const config = { 6 | // Consult https://kit.svelte.dev/docs/integrations#preprocessors 7 | // for more information about preprocessors 8 | preprocess: vitePreprocess(), 9 | 10 | kit: { 11 | // adapter-auto only supports some environments, see https://kit.svelte.dev/docs/adapter-auto for a list. 12 | // If your environment is not supported or you settled on a specific environment, switch out the adapter. 13 | // See https://kit.svelte.dev/docs/adapters for more information about adapters. 14 | adapter: adapter() 15 | } 16 | }; 17 | 18 | export default config; 19 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "./.svelte-kit/tsconfig.json", 3 | "compilerOptions": { 4 | "allowJs": true, 5 | "checkJs": true, 6 | "esModuleInterop": true, 7 | "forceConsistentCasingInFileNames": true, 8 | "resolveJsonModule": true, 9 | "skipLibCheck": true, 10 | "sourceMap": true, 11 | "strict": true 12 | }, 13 | "files": ["node_modules/gsap/types/index.d.ts"] 14 | // Path aliases are handled by https://kit.svelte.dev/docs/configuration#alias 15 | // 16 | // If you want to overwrite includes/excludes, make sure to copy over the relevant includes/excludes 17 | // from the referenced tsconfig.json - TypeScript does not merge them in 18 | } 19 | -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- 1 | import { sveltekit } from '@sveltejs/kit/vite'; 2 | import { defineConfig } from 'vite'; 3 | 4 | export default defineConfig({ 5 | plugins: [sveltekit()] 6 | }); 7 | --------------------------------------------------------------------------------