diff --git a/src/assets/intro/0000.avif b/src/assets/intro/0000.avif new file mode 100644 index 0000000..87d0b00 Binary files /dev/null and b/src/assets/intro/0000.avif differ diff --git a/src/assets/intro/0000.webp b/src/assets/intro/0000.webp deleted file mode 100644 index 71265f1..0000000 Binary files a/src/assets/intro/0000.webp and /dev/null differ diff --git a/src/assets/intro/0001.avif b/src/assets/intro/0001.avif new file mode 100644 index 0000000..fd8dc02 Binary files /dev/null and b/src/assets/intro/0001.avif differ diff --git a/src/assets/intro/0001.webp b/src/assets/intro/0001.webp deleted file mode 100644 index 0d77821..0000000 Binary files a/src/assets/intro/0001.webp and /dev/null differ diff --git a/src/assets/intro/0002.avif b/src/assets/intro/0002.avif new file mode 100644 index 0000000..1506614 Binary files /dev/null and b/src/assets/intro/0002.avif differ diff --git a/src/assets/intro/0002.webp b/src/assets/intro/0002.webp deleted file mode 100644 index 8bdb45e..0000000 Binary files a/src/assets/intro/0002.webp and /dev/null differ diff --git a/src/assets/intro/0003.avif b/src/assets/intro/0003.avif new file mode 100644 index 0000000..b20cd96 Binary files /dev/null and b/src/assets/intro/0003.avif differ diff --git a/src/assets/intro/0003.webp b/src/assets/intro/0003.webp deleted file mode 100644 index 3678720..0000000 Binary files a/src/assets/intro/0003.webp and /dev/null differ diff --git a/src/assets/intro/0004.avif b/src/assets/intro/0004.avif new file mode 100644 index 0000000..e18bafd Binary files /dev/null and b/src/assets/intro/0004.avif differ diff --git a/src/assets/intro/0004.webp b/src/assets/intro/0004.webp deleted file mode 100644 index 42ba787..0000000 Binary files a/src/assets/intro/0004.webp and /dev/null differ diff --git a/src/assets/intro/0005.avif b/src/assets/intro/0005.avif new file mode 100644 index 0000000..261065b Binary files /dev/null and b/src/assets/intro/0005.avif differ diff --git a/src/assets/intro/0005.webp b/src/assets/intro/0005.webp deleted file mode 100644 index ef431fa..0000000 Binary files a/src/assets/intro/0005.webp and /dev/null differ diff --git a/src/assets/intro/0006.avif b/src/assets/intro/0006.avif new file mode 100644 index 0000000..0d78399 Binary files /dev/null and b/src/assets/intro/0006.avif differ diff --git a/src/assets/intro/0006.webp b/src/assets/intro/0006.webp deleted file mode 100644 index 726f37b..0000000 Binary files a/src/assets/intro/0006.webp and /dev/null differ diff --git a/src/assets/intro/0007.avif b/src/assets/intro/0007.avif new file mode 100644 index 0000000..9818fba Binary files /dev/null and b/src/assets/intro/0007.avif differ diff --git a/src/assets/intro/0007.webp b/src/assets/intro/0007.webp deleted file mode 100644 index 0383f34..0000000 Binary files a/src/assets/intro/0007.webp and /dev/null differ diff --git a/src/assets/intro/0008.avif b/src/assets/intro/0008.avif new file mode 100644 index 0000000..609174c Binary files /dev/null and b/src/assets/intro/0008.avif differ diff --git a/src/assets/intro/0008.webp b/src/assets/intro/0008.webp deleted file mode 100644 index 5370080..0000000 Binary files a/src/assets/intro/0008.webp and /dev/null differ diff --git a/src/assets/intro/0009.avif b/src/assets/intro/0009.avif new file mode 100644 index 0000000..a014fb4 Binary files /dev/null and b/src/assets/intro/0009.avif differ diff --git a/src/assets/intro/0009.webp b/src/assets/intro/0009.webp deleted file mode 100644 index f2e6cbe..0000000 Binary files a/src/assets/intro/0009.webp and /dev/null differ diff --git a/src/assets/intro/0010.avif b/src/assets/intro/0010.avif new file mode 100644 index 0000000..7fb268d Binary files /dev/null and b/src/assets/intro/0010.avif differ diff --git a/src/assets/intro/0010.webp b/src/assets/intro/0010.webp deleted file mode 100644 index c056d79..0000000 Binary files a/src/assets/intro/0010.webp and /dev/null differ diff --git a/src/assets/intro/0011.avif b/src/assets/intro/0011.avif new file mode 100644 index 0000000..8fa6b30 Binary files /dev/null and b/src/assets/intro/0011.avif differ diff --git a/src/assets/intro/0011.webp b/src/assets/intro/0011.webp deleted file mode 100644 index 86f5d89..0000000 Binary files a/src/assets/intro/0011.webp and /dev/null differ diff --git a/src/assets/intro/0012.avif b/src/assets/intro/0012.avif new file mode 100644 index 0000000..7748fca Binary files /dev/null and b/src/assets/intro/0012.avif differ diff --git a/src/assets/intro/0012.webp b/src/assets/intro/0012.webp deleted file mode 100644 index 491d7ab..0000000 Binary files a/src/assets/intro/0012.webp and /dev/null differ diff --git a/src/assets/intro/0013.avif b/src/assets/intro/0013.avif new file mode 100644 index 0000000..c5f2869 Binary files /dev/null and b/src/assets/intro/0013.avif differ diff --git a/src/assets/intro/0013.webp b/src/assets/intro/0013.webp deleted file mode 100644 index 8732783..0000000 Binary files a/src/assets/intro/0013.webp and /dev/null differ diff --git a/src/assets/intro/0014.avif b/src/assets/intro/0014.avif new file mode 100644 index 0000000..8a728ec Binary files /dev/null and b/src/assets/intro/0014.avif differ diff --git a/src/assets/intro/0014.webp b/src/assets/intro/0014.webp deleted file mode 100644 index 43632f7..0000000 Binary files a/src/assets/intro/0014.webp and /dev/null differ diff --git a/src/assets/intro/0015.avif b/src/assets/intro/0015.avif new file mode 100644 index 0000000..fa0d2f9 Binary files /dev/null and b/src/assets/intro/0015.avif differ diff --git a/src/assets/intro/0015.webp b/src/assets/intro/0015.webp deleted file mode 100644 index f015da7..0000000 Binary files a/src/assets/intro/0015.webp and /dev/null differ diff --git a/src/assets/intro/0016.avif b/src/assets/intro/0016.avif new file mode 100644 index 0000000..3926c26 Binary files /dev/null and b/src/assets/intro/0016.avif differ diff --git a/src/assets/intro/0016.webp b/src/assets/intro/0016.webp deleted file mode 100644 index 1ee89b7..0000000 Binary files a/src/assets/intro/0016.webp and /dev/null differ diff --git a/src/assets/intro/0017.avif b/src/assets/intro/0017.avif new file mode 100644 index 0000000..51be565 Binary files /dev/null and b/src/assets/intro/0017.avif differ diff --git a/src/assets/intro/0017.webp b/src/assets/intro/0017.webp deleted file mode 100644 index be30061..0000000 Binary files a/src/assets/intro/0017.webp and /dev/null differ diff --git a/src/assets/intro/0018.avif b/src/assets/intro/0018.avif new file mode 100644 index 0000000..2854b1c Binary files /dev/null and b/src/assets/intro/0018.avif differ diff --git a/src/assets/intro/0018.webp b/src/assets/intro/0018.webp deleted file mode 100644 index 77a81dc..0000000 Binary files a/src/assets/intro/0018.webp and /dev/null differ diff --git a/src/assets/intro/0019.avif b/src/assets/intro/0019.avif new file mode 100644 index 0000000..d9629b6 Binary files /dev/null and b/src/assets/intro/0019.avif differ diff --git a/src/assets/intro/0019.webp b/src/assets/intro/0019.webp deleted file mode 100644 index b8a40e0..0000000 Binary files a/src/assets/intro/0019.webp and /dev/null differ diff --git a/src/assets/intro/0020.avif b/src/assets/intro/0020.avif new file mode 100644 index 0000000..a8560bb Binary files /dev/null and b/src/assets/intro/0020.avif differ diff --git a/src/assets/intro/0020.webp b/src/assets/intro/0020.webp deleted file mode 100644 index 3da9782..0000000 Binary files a/src/assets/intro/0020.webp and /dev/null differ diff --git a/src/assets/intro/0021.avif b/src/assets/intro/0021.avif new file mode 100644 index 0000000..00b63ac Binary files /dev/null and b/src/assets/intro/0021.avif differ diff --git a/src/assets/intro/0021.webp b/src/assets/intro/0021.webp deleted file mode 100644 index 40bb5c2..0000000 Binary files a/src/assets/intro/0021.webp and /dev/null differ diff --git a/src/assets/intro/0022.avif b/src/assets/intro/0022.avif new file mode 100644 index 0000000..7f44e01 Binary files /dev/null and b/src/assets/intro/0022.avif differ diff --git a/src/assets/intro/0022.webp b/src/assets/intro/0022.webp deleted file mode 100644 index 2a94d5d..0000000 Binary files a/src/assets/intro/0022.webp and /dev/null differ diff --git a/src/assets/intro/0023.avif b/src/assets/intro/0023.avif new file mode 100644 index 0000000..ca30f26 Binary files /dev/null and b/src/assets/intro/0023.avif differ diff --git a/src/assets/intro/0023.webp b/src/assets/intro/0023.webp deleted file mode 100644 index 83e789a..0000000 Binary files a/src/assets/intro/0023.webp and /dev/null differ diff --git a/src/assets/intro/0024.avif b/src/assets/intro/0024.avif new file mode 100644 index 0000000..24cd8a8 Binary files /dev/null and b/src/assets/intro/0024.avif differ diff --git a/src/assets/intro/0024.webp b/src/assets/intro/0024.webp deleted file mode 100644 index 232d568..0000000 Binary files a/src/assets/intro/0024.webp and /dev/null differ diff --git a/src/assets/intro/0025.avif b/src/assets/intro/0025.avif new file mode 100644 index 0000000..8e10c7a Binary files /dev/null and b/src/assets/intro/0025.avif differ diff --git a/src/assets/intro/0025.webp b/src/assets/intro/0025.webp deleted file mode 100644 index d4023eb..0000000 Binary files a/src/assets/intro/0025.webp and /dev/null differ diff --git a/src/assets/intro/0026.avif b/src/assets/intro/0026.avif new file mode 100644 index 0000000..f8e01de Binary files /dev/null and b/src/assets/intro/0026.avif differ diff --git a/src/assets/intro/0026.webp b/src/assets/intro/0026.webp deleted file mode 100644 index d4023eb..0000000 Binary files a/src/assets/intro/0026.webp and /dev/null differ diff --git a/src/assets/intro/0027.avif b/src/assets/intro/0027.avif new file mode 100644 index 0000000..2a23d96 Binary files /dev/null and b/src/assets/intro/0027.avif differ diff --git a/src/assets/intro/0027.webp b/src/assets/intro/0027.webp deleted file mode 100644 index d4023eb..0000000 Binary files a/src/assets/intro/0027.webp and /dev/null differ diff --git a/src/assets/intro/0028.avif b/src/assets/intro/0028.avif new file mode 100644 index 0000000..434605e Binary files /dev/null and b/src/assets/intro/0028.avif differ diff --git a/src/assets/intro/0028.webp b/src/assets/intro/0028.webp deleted file mode 100644 index d4023eb..0000000 Binary files a/src/assets/intro/0028.webp and /dev/null differ diff --git a/src/assets/intro/0029.avif b/src/assets/intro/0029.avif new file mode 100644 index 0000000..052b47a Binary files /dev/null and b/src/assets/intro/0029.avif differ diff --git a/src/assets/intro/0029.webp b/src/assets/intro/0029.webp deleted file mode 100644 index d4023eb..0000000 Binary files a/src/assets/intro/0029.webp and /dev/null differ diff --git a/src/assets/intro/0030.avif b/src/assets/intro/0030.avif new file mode 100644 index 0000000..cfb99f0 Binary files /dev/null and b/src/assets/intro/0030.avif differ diff --git a/src/assets/intro/0030.webp b/src/assets/intro/0030.webp deleted file mode 100644 index d4023eb..0000000 Binary files a/src/assets/intro/0030.webp and /dev/null differ diff --git a/src/assets/intro/0031.avif b/src/assets/intro/0031.avif new file mode 100644 index 0000000..8b6da51 Binary files /dev/null and b/src/assets/intro/0031.avif differ diff --git a/src/assets/intro/0031.webp b/src/assets/intro/0031.webp deleted file mode 100644 index 386564d..0000000 Binary files a/src/assets/intro/0031.webp and /dev/null differ diff --git a/src/assets/intro/0032.avif b/src/assets/intro/0032.avif new file mode 100644 index 0000000..7dc9db3 Binary files /dev/null and b/src/assets/intro/0032.avif differ diff --git a/src/assets/intro/0032.webp b/src/assets/intro/0032.webp deleted file mode 100644 index 0b21160..0000000 Binary files a/src/assets/intro/0032.webp and /dev/null differ diff --git a/src/assets/intro/0033.avif b/src/assets/intro/0033.avif new file mode 100644 index 0000000..6a1caae Binary files /dev/null and b/src/assets/intro/0033.avif differ diff --git a/src/assets/intro/0033.webp b/src/assets/intro/0033.webp deleted file mode 100644 index a130c82..0000000 Binary files a/src/assets/intro/0033.webp and /dev/null differ diff --git a/src/assets/intro/0034.avif b/src/assets/intro/0034.avif new file mode 100644 index 0000000..1504af7 Binary files /dev/null and b/src/assets/intro/0034.avif differ diff --git a/src/assets/intro/0034.webp b/src/assets/intro/0034.webp deleted file mode 100644 index 238fb7e..0000000 Binary files a/src/assets/intro/0034.webp and /dev/null differ diff --git a/src/assets/intro/0035.avif b/src/assets/intro/0035.avif new file mode 100644 index 0000000..3070ec5 Binary files /dev/null and b/src/assets/intro/0035.avif differ diff --git a/src/assets/intro/0035.webp b/src/assets/intro/0035.webp deleted file mode 100644 index 216c426..0000000 Binary files a/src/assets/intro/0035.webp and /dev/null differ diff --git a/src/assets/intro/0036.avif b/src/assets/intro/0036.avif new file mode 100644 index 0000000..03e1adc Binary files /dev/null and b/src/assets/intro/0036.avif differ diff --git a/src/assets/intro/0036.webp b/src/assets/intro/0036.webp deleted file mode 100644 index 1647920..0000000 Binary files a/src/assets/intro/0036.webp and /dev/null differ diff --git a/src/assets/intro/0037.avif b/src/assets/intro/0037.avif new file mode 100644 index 0000000..5678d5b Binary files /dev/null and b/src/assets/intro/0037.avif differ diff --git a/src/assets/intro/0037.webp b/src/assets/intro/0037.webp deleted file mode 100644 index 3a43a57..0000000 Binary files a/src/assets/intro/0037.webp and /dev/null differ diff --git a/src/assets/intro/0038.avif b/src/assets/intro/0038.avif new file mode 100644 index 0000000..79d6d50 Binary files /dev/null and b/src/assets/intro/0038.avif differ diff --git a/src/assets/intro/0038.webp b/src/assets/intro/0038.webp deleted file mode 100644 index b9c2f8a..0000000 Binary files a/src/assets/intro/0038.webp and /dev/null differ diff --git a/src/assets/intro/0039.avif b/src/assets/intro/0039.avif new file mode 100644 index 0000000..09e7ae5 Binary files /dev/null and b/src/assets/intro/0039.avif differ diff --git a/src/assets/intro/0039.webp b/src/assets/intro/0039.webp deleted file mode 100644 index dc36ee9..0000000 Binary files a/src/assets/intro/0039.webp and /dev/null differ diff --git a/src/assets/intro/0040.avif b/src/assets/intro/0040.avif new file mode 100644 index 0000000..b7dac00 Binary files /dev/null and b/src/assets/intro/0040.avif differ diff --git a/src/assets/intro/0040.webp b/src/assets/intro/0040.webp deleted file mode 100644 index 914ebe5..0000000 Binary files a/src/assets/intro/0040.webp and /dev/null differ diff --git a/src/assets/intro/0041.avif b/src/assets/intro/0041.avif new file mode 100644 index 0000000..507372a Binary files /dev/null and b/src/assets/intro/0041.avif differ diff --git a/src/assets/intro/0041.webp b/src/assets/intro/0041.webp deleted file mode 100644 index 19538be..0000000 Binary files a/src/assets/intro/0041.webp and /dev/null differ diff --git a/src/assets/intro/0042.avif b/src/assets/intro/0042.avif new file mode 100644 index 0000000..f3b1931 Binary files /dev/null and b/src/assets/intro/0042.avif differ diff --git a/src/assets/intro/0042.webp b/src/assets/intro/0042.webp deleted file mode 100644 index 5c0038a..0000000 Binary files a/src/assets/intro/0042.webp and /dev/null differ diff --git a/src/assets/intro/0043.avif b/src/assets/intro/0043.avif new file mode 100644 index 0000000..2639e55 Binary files /dev/null and b/src/assets/intro/0043.avif differ diff --git a/src/assets/intro/0043.webp b/src/assets/intro/0043.webp deleted file mode 100644 index fb56e2c..0000000 Binary files a/src/assets/intro/0043.webp and /dev/null differ diff --git a/src/assets/intro/0044.avif b/src/assets/intro/0044.avif new file mode 100644 index 0000000..8701f1c Binary files /dev/null and b/src/assets/intro/0044.avif differ diff --git a/src/assets/intro/0044.webp b/src/assets/intro/0044.webp deleted file mode 100644 index 7ede041..0000000 Binary files a/src/assets/intro/0044.webp and /dev/null differ diff --git a/src/assets/intro/0045.avif b/src/assets/intro/0045.avif new file mode 100644 index 0000000..f6c0c18 Binary files /dev/null and b/src/assets/intro/0045.avif differ diff --git a/src/assets/intro/0045.webp b/src/assets/intro/0045.webp deleted file mode 100644 index 60e9ced..0000000 Binary files a/src/assets/intro/0045.webp and /dev/null differ diff --git a/src/assets/intro/0046.avif b/src/assets/intro/0046.avif new file mode 100644 index 0000000..620a516 Binary files /dev/null and b/src/assets/intro/0046.avif differ diff --git a/src/assets/intro/0046.webp b/src/assets/intro/0046.webp deleted file mode 100644 index e107bac..0000000 Binary files a/src/assets/intro/0046.webp and /dev/null differ diff --git a/src/assets/intro/0047.avif b/src/assets/intro/0047.avif new file mode 100644 index 0000000..c5d96e7 Binary files /dev/null and b/src/assets/intro/0047.avif differ diff --git a/src/assets/intro/0047.webp b/src/assets/intro/0047.webp deleted file mode 100644 index 776e19a..0000000 Binary files a/src/assets/intro/0047.webp and /dev/null differ diff --git a/src/assets/intro/0048.avif b/src/assets/intro/0048.avif new file mode 100644 index 0000000..e079c64 Binary files /dev/null and b/src/assets/intro/0048.avif differ diff --git a/src/assets/intro/0048.webp b/src/assets/intro/0048.webp deleted file mode 100644 index e9cbbe4..0000000 Binary files a/src/assets/intro/0048.webp and /dev/null differ diff --git a/src/assets/intro/0049.avif b/src/assets/intro/0049.avif new file mode 100644 index 0000000..667f74a Binary files /dev/null and b/src/assets/intro/0049.avif differ diff --git a/src/assets/intro/0049.webp b/src/assets/intro/0049.webp deleted file mode 100644 index 5504fe1..0000000 Binary files a/src/assets/intro/0049.webp and /dev/null differ diff --git a/src/assets/intro/0050.avif b/src/assets/intro/0050.avif new file mode 100644 index 0000000..6a5c64e Binary files /dev/null and b/src/assets/intro/0050.avif differ diff --git a/src/assets/intro/0050.webp b/src/assets/intro/0050.webp deleted file mode 100644 index d7272eb..0000000 Binary files a/src/assets/intro/0050.webp and /dev/null differ diff --git a/src/assets/intro/0051.avif b/src/assets/intro/0051.avif new file mode 100644 index 0000000..e8b8898 Binary files /dev/null and b/src/assets/intro/0051.avif differ diff --git a/src/assets/intro/0051.webp b/src/assets/intro/0051.webp deleted file mode 100644 index a885bdc..0000000 Binary files a/src/assets/intro/0051.webp and /dev/null differ diff --git a/src/assets/intro/0052.avif b/src/assets/intro/0052.avif new file mode 100644 index 0000000..396f4c0 Binary files /dev/null and b/src/assets/intro/0052.avif differ diff --git a/src/assets/intro/0052.webp b/src/assets/intro/0052.webp deleted file mode 100644 index fd8f081..0000000 Binary files a/src/assets/intro/0052.webp and /dev/null differ diff --git a/src/assets/intro/0053.avif b/src/assets/intro/0053.avif new file mode 100644 index 0000000..ae0840c Binary files /dev/null and b/src/assets/intro/0053.avif differ diff --git a/src/assets/intro/0053.webp b/src/assets/intro/0053.webp deleted file mode 100644 index 4a40d4b..0000000 Binary files a/src/assets/intro/0053.webp and /dev/null differ diff --git a/src/assets/intro/0054.avif b/src/assets/intro/0054.avif new file mode 100644 index 0000000..9d23fac Binary files /dev/null and b/src/assets/intro/0054.avif differ diff --git a/src/assets/intro/0054.webp b/src/assets/intro/0054.webp deleted file mode 100644 index b9f16dd..0000000 Binary files a/src/assets/intro/0054.webp and /dev/null differ diff --git a/src/assets/intro/0055.avif b/src/assets/intro/0055.avif new file mode 100644 index 0000000..e9fdfeb Binary files /dev/null and b/src/assets/intro/0055.avif differ diff --git a/src/assets/intro/0055.webp b/src/assets/intro/0055.webp deleted file mode 100644 index 3a4ef8c..0000000 Binary files a/src/assets/intro/0055.webp and /dev/null differ diff --git a/src/assets/intro/0056.avif b/src/assets/intro/0056.avif new file mode 100644 index 0000000..ee85da9 Binary files /dev/null and b/src/assets/intro/0056.avif differ diff --git a/src/assets/intro/0056.webp b/src/assets/intro/0056.webp deleted file mode 100644 index 8ea6225..0000000 Binary files a/src/assets/intro/0056.webp and /dev/null differ diff --git a/src/assets/intro/0057.avif b/src/assets/intro/0057.avif new file mode 100644 index 0000000..8e0d7a4 Binary files /dev/null and b/src/assets/intro/0057.avif differ diff --git a/src/assets/intro/0057.webp b/src/assets/intro/0057.webp deleted file mode 100644 index 4867f10..0000000 Binary files a/src/assets/intro/0057.webp and /dev/null differ diff --git a/src/assets/intro/0058.avif b/src/assets/intro/0058.avif new file mode 100644 index 0000000..f92741d Binary files /dev/null and b/src/assets/intro/0058.avif differ diff --git a/src/assets/intro/0058.webp b/src/assets/intro/0058.webp deleted file mode 100644 index edfa949..0000000 Binary files a/src/assets/intro/0058.webp and /dev/null differ diff --git a/src/assets/intro/0059.avif b/src/assets/intro/0059.avif new file mode 100644 index 0000000..c5b61a9 Binary files /dev/null and b/src/assets/intro/0059.avif differ diff --git a/src/assets/intro/0059.webp b/src/assets/intro/0059.webp deleted file mode 100644 index 7cd3045..0000000 Binary files a/src/assets/intro/0059.webp and /dev/null differ diff --git a/src/assets/intro/0060.avif b/src/assets/intro/0060.avif new file mode 100644 index 0000000..d497033 Binary files /dev/null and b/src/assets/intro/0060.avif differ diff --git a/src/assets/intro/0060.webp b/src/assets/intro/0060.webp deleted file mode 100644 index d52a544..0000000 Binary files a/src/assets/intro/0060.webp and /dev/null differ diff --git a/src/components/Graphics.astro b/src/components/Graphics.astro new file mode 100644 index 0000000..0ba4796 --- /dev/null +++ b/src/components/Graphics.astro @@ -0,0 +1,53 @@ +--- +import type GraphicsImporter from "../scripts/graphics-importer"; +interface Props { + graphicsImporter: GraphicsImporter; + alt: string; +} + +const { graphicsImporter, alt } = Astro.props; +--- +{graphicsImporter.getImageSrcs().then((srcs) => ( + + + { + graphicsImporter.getFirstImageMetadata().then(({default: {src, width, height}}) => ( + {alt}/ + )) + } + + ))} + + \ No newline at end of file diff --git a/src/layouts/Layout.astro b/src/layouts/Layout.astro index 615ea0c..0f10923 100644 --- a/src/layouts/Layout.astro +++ b/src/layouts/Layout.astro @@ -1,15 +1,25 @@ --- +interface Props { + imageSrcs: Promise; +} + +const { imageSrcs } = Astro.props; --- - - - - - - Pinpoint - - - - + + + + + + Pinpoint + + + {imageSrcs.then((srcs) => srcs.map((src) => ( + + )))} + + + + diff --git a/src/pages/index.astro b/src/pages/index.astro index 7b36bea..074e061 100644 --- a/src/pages/index.astro +++ b/src/pages/index.astro @@ -2,16 +2,24 @@ import Article from "../components/Article.astro"; import Hero from "../components/Hero.astro"; import Layout from "../layouts/Layout.astro"; + +import Graphics from "../components/Graphics.astro"; +import GraphicsImporter from "../scripts/graphics-importer"; +import type { DefaultImageMetadata } from "../scripts/types"; + +const introImporter = new GraphicsImporter( + import.meta.glob("/src/assets/intro/*.avif"), +); --- - +
- +
@@ -116,10 +124,4 @@ import Layout from "../layouts/Layout.astro"; margin-top: -45dvh; visibility: hidden; } - - - \ No newline at end of file + \ No newline at end of file diff --git a/src/scripts/graphics-drawer.ts b/src/scripts/graphics-drawer.ts deleted file mode 100644 index 08c81bd..0000000 --- a/src/scripts/graphics-drawer.ts +++ /dev/null @@ -1,105 +0,0 @@ -import type { ImageMetadata } from "astro"; - -/** - * Drawer for scrolling graphics. - */ -export default class GraphicsDrawer { - // Fields. - private readonly canvas: HTMLCanvasElement; - private readonly outputImage: HTMLImageElement; - private readonly context: CanvasRenderingContext2D; - private readonly imageImports: (() => Promise<{ default: ImageMetadata }>)[]; - - /** - * Construct and gather components for drawing graphics. - * - * @param imageRecords Dynamically imported image records. - * @param canvasId ID of the canvas element to draw on. - */ - constructor( - imageRecords: Record Promise<{ default: ImageMetadata }>>, - canvasId: string, - ) { - // Collect fields. - this.imageImports = Object.values(imageRecords); - this.canvas = - (document.getElementById(canvasId) as HTMLCanvasElement) ?? - (() => { - throw new Error("Failed to get canvas element"); - }); - this.outputImage = new Image(); - this.context = - this.canvas.getContext("2d") ?? - (() => { - throw new Error("Failed to get 2d context from canvas"); - })(); - - // Collect components. - const containerBounds = - this.canvas.parentElement?.getBoundingClientRect() ?? - (() => { - throw new Error("Failed to get canvas containing element and bounds"); - })(); - const numberOfImages = this.imageImports.length; - - // Draw the first image. - this.drawImage(0); - - // Bind scroll event to draw images. - window.addEventListener("scroll", () => { - const scrollFraction = - (document.documentElement.scrollTop - containerBounds.top) / - (containerBounds.bottom - containerBounds.top); - const imageIndex = Math.min( - numberOfImages - 1, - Math.ceil(scrollFraction * numberOfImages), - ); - requestAnimationFrame(() => this.drawImage(imageIndex)); - }); - - // Preload the other images. - for (let i = 1; i < numberOfImages; i++) { - this.loadImageThenExec(i, ({ default: { src } }) => { - const preloadImage = new Image(); - preloadImage.src = src; - }); - } - } - - /** - * Load an image by index and then pass it to the callback. - * - * @param imageIndex Index of the image to load. - * @param callback Callback to pass the loaded image to. - * @private - */ - private loadImageThenExec( - imageIndex: number, - callback: (value: { default: ImageMetadata }) => void, - ): void { - this.imageImports[imageIndex]().then(callback); - } - - /** - * Draw the image with the given index. - * - * @param imageIndex Index of the image to draw. - * @private - */ - private drawImage(imageIndex: number): void { - this.loadImageThenExec( - imageIndex, - ({ default: { src, width, height } }) => { - // Set canvas size to match image. - this.canvas.width = width; - this.canvas.height = height; - - // Draw image. - this.outputImage.src = src; - this.outputImage.onload = () => { - this.context.drawImage(this.outputImage, 0, 0); - }; - }, - ); - } -} diff --git a/src/scripts/graphics-importer.ts b/src/scripts/graphics-importer.ts new file mode 100644 index 0000000..a0ed790 --- /dev/null +++ b/src/scripts/graphics-importer.ts @@ -0,0 +1,39 @@ +import type { DefaultImageMetadata } from "./types.ts"; + +/** + * Imports graphics from source folder and provides their resolved URLs. + */ +export default class GraphicsImporter { + // Fields. + private readonly imageMetadatas: Promise[]; + + /** + * Extract image metadata from dynamic import. + * @param imageDynamicImport Dynamic import of images. + */ + constructor( + imageDynamicImport: Record Promise>, + ) { + this.imageMetadatas = Object.values(imageDynamicImport).map((imageImport) => + imageImport(), + ); + } + + /** + * Get the source URLs of all images. + */ + async getImageSrcs(): Promise { + return Promise.all( + this.imageMetadatas.map((imageMetadataPromise) => + imageMetadataPromise.then(({ default: { src } }) => src), + ), + ); + } + + /** + * Get the metadata of the first image. + */ + async getFirstImageMetadata(): Promise { + return await this.imageMetadatas[0]; + } +} diff --git a/src/scripts/types.ts b/src/scripts/types.ts new file mode 100644 index 0000000..af8a367 --- /dev/null +++ b/src/scripts/types.ts @@ -0,0 +1 @@ +export type DefaultImageMetadata = { default: ImageMetadata };