Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
"dependencies": {
"@astrojs/tailwind": "^5.1.5",
"astro": "^5.1.10",
"sharp": "^0.33.5",
"tailwindcss": "^3.4.17"
},
"devDependencies": {
Expand Down
13 changes: 5 additions & 8 deletions pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Binary file added src/assets/automation/0000.avif
Binary file not shown.
Binary file added src/assets/automation/0001.avif
Binary file not shown.
Binary file added src/assets/automation/0002.avif
Binary file not shown.
Binary file added src/assets/automation/0003.avif
Binary file not shown.
Binary file added src/assets/automation/0004.avif
Binary file not shown.
Binary file added src/assets/automation/0005.avif
Binary file not shown.
Binary file added src/assets/automation/0006.avif
Binary file not shown.
Binary file added src/assets/automation/0008.avif
Binary file not shown.
Binary file added src/assets/automation/0009.avif
Binary file not shown.
Binary file added src/assets/automation/0010.avif
Binary file not shown.
Binary file added src/assets/automation/0011.avif
Binary file not shown.
Binary file added src/assets/automation/0012.avif
Binary file not shown.
Binary file added src/assets/automation/0013.avif
Binary file not shown.
Binary file added src/assets/automation/0014.avif
Binary file not shown.
Binary file added src/assets/automation/0015.avif
Binary file not shown.
Binary file added src/assets/automation/0016.avif
Binary file not shown.
Binary file added src/assets/automation/0017.avif
Binary file not shown.
Binary file added src/assets/automation/0018.avif
Binary file not shown.
Binary file added src/assets/automation/0019.avif
Binary file not shown.
Binary file added src/assets/automation/0020.avif
Binary file not shown.
Binary file added src/assets/automation/0021.avif
Binary file not shown.
Binary file added src/assets/automation/0022.avif
Binary file not shown.
Binary file added src/assets/automation/0023.avif
Binary file not shown.
Binary file added src/assets/automation/0024.avif
Binary file not shown.
Binary file added src/assets/automation/0025.avif
Binary file not shown.
Binary file added src/assets/automation/0026.avif
Binary file not shown.
Binary file added src/assets/automation/0027.avif
Binary file not shown.
Binary file added src/assets/automation/0028.avif
Binary file not shown.
Binary file added src/assets/automation/0029.avif
Binary file not shown.
Binary file added src/assets/automation/0030.avif
Binary file not shown.
Binary file added src/assets/automation/0031.avif
Binary file not shown.
Binary file added src/assets/automation/0032.avif
Binary file not shown.
Binary file added src/assets/automation/0033.avif
Binary file not shown.
Binary file added src/assets/automation/0034.avif
Binary file not shown.
Binary file added src/assets/automation/0035.avif
Binary file not shown.
Binary file added src/assets/automation/0036.avif
Binary file not shown.
Binary file added src/assets/automation/0037.avif
Binary file not shown.
Binary file added src/assets/automation/0038.avif
Binary file not shown.
Binary file added src/assets/automation/0039.avif
Binary file not shown.
Binary file added src/assets/automation/0040.avif
Binary file not shown.
Binary file added src/assets/automation/0041.avif
Binary file not shown.
Binary file added src/assets/automation/0042.avif
Binary file not shown.
Binary file added src/assets/automation/0043.avif
Binary file not shown.
Binary file added src/assets/automation/0044.avif
Binary file not shown.
Binary file added src/assets/automation/0045.avif
Binary file not shown.
Binary file added src/assets/automation/0046.avif
Binary file not shown.
Binary file added src/assets/automation/0047.avif
Binary file not shown.
Binary file added src/assets/automation/0048.avif
Binary file not shown.
Binary file added src/assets/automation/0049.avif
Binary file not shown.
Binary file added src/assets/automation/0050.avif
Binary file not shown.
Binary file added src/assets/automation/0051.avif
Binary file not shown.
Binary file added src/assets/automation/0052.avif
Binary file not shown.
Binary file added src/assets/automation/0053.avif
Binary file not shown.
Binary file added src/assets/automation/0054.avif
Binary file not shown.
Binary file added src/assets/automation/0055.avif
Binary file not shown.
Binary file added src/assets/automation/0056.avif
Binary file not shown.
Binary file added src/assets/automation/0057.avif
Binary file not shown.
Binary file added src/assets/automation/0058.avif
Binary file not shown.
Binary file added src/assets/automation/0059.avif
Binary file not shown.
Binary file added src/assets/equipment/0000.avif
Binary file not shown.
Binary file added src/assets/equipment/0001.avif
Binary file not shown.
Binary file added src/assets/equipment/0002.avif
Binary file not shown.
Binary file added src/assets/equipment/0003.avif
Binary file not shown.
Binary file added src/assets/equipment/0004.avif
Binary file not shown.
Binary file added src/assets/equipment/0005.avif
Binary file not shown.
Binary file added src/assets/equipment/0006.avif
Binary file not shown.
Binary file added src/assets/equipment/0007.avif
Binary file not shown.
Binary file added src/assets/equipment/0008.avif
Binary file not shown.
Binary file added src/assets/equipment/0009.avif
Binary file not shown.
Binary file added src/assets/equipment/0010.avif
Binary file not shown.
Binary file added src/assets/equipment/0011.avif
Binary file not shown.
Binary file added src/assets/equipment/0012.avif
Binary file not shown.
Binary file added src/assets/equipment/0013.avif
Binary file not shown.
Binary file added src/assets/equipment/0014.avif
Binary file not shown.
Binary file added src/assets/equipment/0015.avif
Binary file not shown.
Binary file added src/assets/equipment/0016.avif
Binary file not shown.
Binary file added src/assets/equipment/0017.avif
Binary file not shown.
Binary file added src/assets/equipment/0018.avif
Binary file not shown.
Binary file added src/assets/equipment/0019.avif
Binary file not shown.
Binary file added src/assets/equipment/0020.avif
Binary file not shown.
Binary file added src/assets/equipment/0021.avif
Binary file not shown.
Binary file added src/assets/equipment/0022.avif
Binary file not shown.
Binary file added src/assets/equipment/0023.avif
Binary file not shown.
Binary file added src/assets/equipment/0024.avif
Binary file not shown.
Binary file added src/assets/equipment/0025.avif
Binary file not shown.
Binary file added src/assets/equipment/0026.avif
Binary file not shown.
Binary file added src/assets/equipment/0027.avif
Binary file not shown.
Binary file added src/assets/equipment/0028.avif
Binary file not shown.
Binary file added src/assets/equipment/0029.avif
Binary file not shown.
Binary file added src/assets/equipment/0030.avif
Binary file not shown.
Binary file added src/assets/equipment/0031.avif
Binary file not shown.
Binary file added src/assets/equipment/0032.avif
Binary file not shown.
Binary file added src/assets/equipment/0033.avif
Binary file not shown.
Binary file added src/assets/equipment/0034.avif
Binary file not shown.
Binary file added src/assets/equipment/0035.avif
Binary file not shown.
Binary file added src/assets/equipment/0036.avif
Binary file not shown.
Binary file added src/assets/equipment/0037.avif
Binary file not shown.
Binary file added src/assets/equipment/0038.avif
Binary file not shown.
Binary file added src/assets/equipment/0039.avif
Binary file not shown.
Binary file added src/assets/equipment/0040.avif
Binary file not shown.
Binary file added src/assets/equipment/0041.avif
Binary file not shown.
Binary file added src/assets/equipment/0042.avif
Binary file not shown.
Binary file added src/assets/equipment/0043.avif
Binary file not shown.
Binary file added src/assets/equipment/0044.avif
Binary file not shown.
Binary file added src/assets/equipment/0045.avif
Binary file not shown.
Binary file added src/assets/equipment/0046.avif
Binary file not shown.
Binary file added src/assets/equipment/0047.avif
Binary file not shown.
Binary file added src/assets/equipment/0048.avif
Binary file not shown.
Binary file added src/assets/equipment/0049.avif
Binary file not shown.
Binary file added src/assets/equipment/0050.avif
Binary file not shown.
Binary file added src/assets/equipment/0051.avif
Binary file not shown.
Binary file added src/assets/equipment/0052.avif
Binary file not shown.
Binary file added src/assets/equipment/0053.avif
Binary file not shown.
Binary file added src/assets/equipment/0054.avif
Binary file not shown.
Binary file added src/assets/equipment/0055.avif
Binary file not shown.
Binary file added src/assets/equipment/0056.avif
Binary file not shown.
Binary file added src/assets/equipment/0057.avif
Binary file not shown.
Binary file added src/assets/equipment/0058.avif
Binary file not shown.
Binary file added src/assets/equipment/0059.avif
Binary file not shown.
Binary file added src/assets/insertion/0784.avif
Binary file not shown.
Binary file added src/assets/insertion/0785.avif
Binary file not shown.
Binary file added src/assets/insertion/0786.avif
Binary file not shown.
Binary file added src/assets/insertion/0787.avif
Binary file not shown.
Binary file added src/assets/insertion/0788.avif
Binary file not shown.
Binary file added src/assets/insertion/0789.avif
Binary file not shown.
Binary file added src/assets/insertion/0790.avif
Binary file not shown.
Binary file added src/assets/insertion/0791.avif
Binary file not shown.
Binary file added src/assets/insertion/0792.avif
Binary file not shown.
Binary file added src/assets/insertion/0793.avif
Binary file not shown.
Binary file added src/assets/insertion/0794.avif
Binary file not shown.
Binary file added src/assets/insertion/0795.avif
Binary file not shown.
Binary file added src/assets/insertion/0796.avif
Binary file not shown.
Binary file added src/assets/insertion/0797.avif
Binary file not shown.
Binary file added src/assets/insertion/0798.avif
Binary file not shown.
Binary file added src/assets/insertion/0799.avif
Binary file not shown.
Binary file added src/assets/insertion/0800.avif
Binary file not shown.
Binary file added src/assets/insertion/0801.avif
Binary file not shown.
Binary file added src/assets/insertion/0802.avif
Binary file not shown.
Binary file added src/assets/insertion/0803.avif
Binary file not shown.
Binary file added src/assets/insertion/0804.avif
Binary file not shown.
Binary file added src/assets/insertion/0805.avif
Binary file not shown.
Binary file added src/assets/insertion/0806.avif
Binary file not shown.
Binary file added src/assets/insertion/0807.avif
Binary file not shown.
Binary file added src/assets/insertion/0808.avif
Binary file not shown.
Binary file added src/assets/insertion/0809.avif
Binary file not shown.
Binary file added src/assets/insertion/0810.avif
Binary file not shown.
Binary file added src/assets/insertion/0811.avif
Binary file not shown.
Binary file added src/assets/insertion/0812.avif
Binary file not shown.
Binary file added src/assets/insertion/0813.avif
Binary file not shown.
Binary file added src/assets/insertion/0814.avif
Binary file not shown.
Binary file added src/assets/insertion/0815.avif
Binary file not shown.
Binary file added src/assets/insertion/0816.avif
Binary file not shown.
Binary file added src/assets/insertion/0817.avif
Binary file not shown.
Binary file added src/assets/insertion/0818.avif
Binary file not shown.
Binary file added src/assets/insertion/0819.avif
Binary file not shown.
Binary file added src/assets/insertion/0820.avif
Binary file not shown.
Binary file added src/assets/insertion/0821.avif
Binary file not shown.
Binary file added src/assets/insertion/0822.avif
Binary file not shown.
Binary file added src/assets/insertion/0823.avif
Binary file not shown.
Binary file added src/assets/insertion/0824.avif
Binary file not shown.
Binary file added src/assets/insertion/0825.avif
Binary file not shown.
Binary file added src/assets/insertion/0826.avif
Binary file not shown.
Binary file added src/assets/insertion/0827.avif
Binary file not shown.
Binary file added src/assets/insertion/0828.avif
Binary file not shown.
Binary file added src/assets/insertion/0829.avif
Binary file not shown.
Binary file added src/assets/insertion/0830.avif
Binary file not shown.
Binary file added src/assets/insertion/0831.avif
Binary file not shown.
Binary file added src/assets/insertion/0832.avif
Binary file not shown.
Binary file added src/assets/insertion/0833.avif
Binary file not shown.
Binary file added src/assets/insertion/0834.avif
Binary file not shown.
Binary file added src/assets/insertion/0835.avif
Binary file not shown.
Binary file added src/assets/insertion/0836.avif
Binary file not shown.
Binary file added src/assets/insertion/0837.avif
Binary file not shown.
Binary file added src/assets/insertion/0838.avif
Binary file not shown.
Binary file added src/assets/insertion/0839.avif
Binary file not shown.
Binary file added src/assets/manipulators/mpm-rig.avif
Binary file not shown.
Binary file added src/assets/manipulators/sensapex-rig.avif
Binary file not shown.
53 changes: 28 additions & 25 deletions src/components/Graphics.astro
Original file line number Diff line number Diff line change
@@ -1,50 +1,53 @@
---
import type GraphicsImporter from "../scripts/graphics-importer";
import type { DefaultImageMetadata } from "../scripts/types";
interface Props {
graphicsImporter: GraphicsImporter;
alt: string;
imageMetadatas: Promise<DefaultImageMetadata[]>;
}

const { graphicsImporter, alt } = Astro.props;
const { imageMetadatas } = Astro.props;
---
{graphicsImporter.getImageSrcs().then((srcs) => (
<!--suppress HtmlUnknownTag -->
<graphics-element data-srcs={JSON.stringify(srcs)}>
{
graphicsImporter.getFirstImageMetadata().then(({default: {src, width, height}}) => (
<img id="intro-graphics" class="max-w-full" src={src} width={width} height={height}
alt={alt}/>
{
imageMetadatas.then((metadatas) => (
<!--suppress HtmlUnknownTag -->
<graphics-element data-image-srcs={JSON.stringify(metadatas.map(({default: {src}}) => src))}>
<img class="max-w-full rounded-xl" src={metadatas[0].default.src} width={metadatas[0].default.width}
height={metadatas[0].default.height} alt=""/>
</graphics-element>
))
}
</graphics-element>
))}

<script>
class Graphics extends HTMLElement {
connectedCallback() {
const imageSrcs = JSON.parse(this.dataset.srcs ?? "[]");
// Get components.
const imageSrcs = JSON.parse(this.dataset.imageSrcs ?? "[]");
const numberOfImages = imageSrcs.length;
const outputImage = this.querySelector("img") ?? (() => {
throw new Error("Failed to get output image element");
})();

// Collect components.
const containerBounds =
outputImage.parentElement?.parentElement?.getBoundingClientRect() ??
(() => {
throw new Error("Failed to get canvas containing element and bounds");
})();
const numberOfImages = imageSrcs.length;

// Bind scroll event to draw images.
window.addEventListener("scroll", () => {
// Get the container bounds at this point.
const containerElement = outputImage.parentElement?.parentElement?.parentElement?.parentElement?.parentElement ?? (() => {
throw new Error("Failed to get section element");
})();
const containerBounds = containerElement.getBoundingClientRect();

// Calculate where in the container we are.
const scrollFraction =
(document.documentElement.scrollTop - containerBounds.top) /
(containerBounds.bottom - containerBounds.top);
(document.documentElement.scrollTop - containerElement.offsetTop) /
(containerBounds.height - window.innerHeight);

// Convert to the image index.
const imageIndex = Math.min(
numberOfImages - 1,
Math.ceil(scrollFraction * numberOfImages),
);
requestAnimationFrame(() => outputImage.src = imageSrcs[Math.max(0, Math.min(imageIndex, numberOfImages - 1))]);

// Draw it if we are in bound.
if (imageIndex >= 0 && imageIndex < numberOfImages)
requestAnimationFrame(() => outputImage.src = imageSrcs[imageIndex]);
});
}
}
Expand Down
22 changes: 0 additions & 22 deletions src/components/Hero.astro

This file was deleted.

17 changes: 17 additions & 0 deletions src/components/TwoColumn.astro
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
---
---
<div class="hero">
<div class="hero-content flex-col lg:flex-row-reverse w-full">
<!-- Graphics side. -->
<div class="basis-1/2 self-stretch">
<div class="h-dvh sticky top-0 flex justify-center items-center">
<slot name="graphics"/>
</div>
</div>

<!-- Content side. -->
<div class="basis-1/2">
<slot/>
</div>
</div>
</div>
8 changes: 4 additions & 4 deletions src/layouts/Layout.astro
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
---
interface Props {
imageSrcs: Promise<string[]>;
imageSrcs: Promise<string[]>[];
}

const { imageSrcs } = Astro.props;
Expand All @@ -15,9 +15,9 @@ const { imageSrcs } = Astro.props;
<title>Pinpoint</title>

<!-- Preload images. -->
{imageSrcs.then((srcs) => srcs.map((src) => (
<link rel="preload" href={src} as="image" type="image/avif"/>
)))}
{imageSrcs.map((srcSet) => srcSet.then((srcs) => srcs.map((src) => (
<link rel="preload" href={src} as="image" type="image/avif"/>
))))}
</head>
<body>
<slot/>
Expand Down
Loading