summaryrefslogtreecommitdiff
path: root/smoke/astro.build-main/src/scripts/animations.ts
diff options
context:
space:
mode:
Diffstat (limited to 'smoke/astro.build-main/src/scripts/animations.ts')
-rw-r--r--smoke/astro.build-main/src/scripts/animations.ts21
1 files changed, 21 insertions, 0 deletions
diff --git a/smoke/astro.build-main/src/scripts/animations.ts b/smoke/astro.build-main/src/scripts/animations.ts
new file mode 100644
index 000000000..2171ebc38
--- /dev/null
+++ b/smoke/astro.build-main/src/scripts/animations.ts
@@ -0,0 +1,21 @@
+async function loop(element: Element) {
+ const animations = element.getAnimations({ subtree: true });
+ await Promise.all(animations.map(anim => anim.finished));
+ // reset the animation after 3.5 seconds
+ setTimeout(() => {
+ const clone = element.cloneNode(true)
+ element.replaceWith(clone);
+ loop(clone as Element);
+ }, 3500)
+}
+
+function setup() {
+ const illustrations = Array.from(document.querySelectorAll('.illustration'));
+ const hydrate = illustrations.find(el => (el as HTMLElement).dataset.name === 'hydration');
+ loop(hydrate);
+}
+setup();
+
+window.addEventListener('astro:navchange', () => {
+ setup();
+});