From c7cde5b7febe47818e561d046c4ca5c66c46ceef Mon Sep 17 00:00:00 2001 From: Zyrouge Date: Sat, 4 Jan 2025 20:53:07 +0530 Subject: [PATCH] chore: lint --- package-lock.json | 19 +++++++------ package.json | 2 +- src/assets/scripts/article.ts | 24 ++++++++++++---- src/assets/scripts/home.ts | 21 ++++++++++++-- src/assets/scripts/redirect.ts | 4 ++- src/assets/scripts/scroll-to-top.ts | 8 ++++-- src/components/base/Footer.astro | 1 - src/components/base/NavBar.astro | 13 +++++++-- src/components/home/Hero.astro | 14 ++++++--- src/components/home/ProjectItem.astro | 2 +- src/core/urls.ts | 6 ++-- src/core/utils.ts | 41 +++++++++++++++++++++++++++ src/layouts/Base.astro | 3 +- src/pages/redirect/bsky.astro | 6 ++++ 14 files changed, 131 insertions(+), 33 deletions(-) create mode 100644 src/pages/redirect/bsky.astro diff --git a/package-lock.json b/package-lock.json index c4cca66..4fa6120 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,8 +13,8 @@ "@astrojs/rss": "^4.0.10", "@astrojs/sitemap": "^3.2.1", "@astrojs/tailwind": "^5.1.4", - "@iconify-json/fa-brands": "^1.2.1", "@iconify-json/mdi": "^1.2.2", + "@iconify-json/simple-icons": "^1.2.18", "astro": "^5.1.1", "astro-icon": "^1.1.4", "fuse.js": "^7.0.0", @@ -774,14 +774,6 @@ "node": ">=12" } }, - "node_modules/@iconify-json/fa-brands": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@iconify-json/fa-brands/-/fa-brands-1.2.1.tgz", - "integrity": "sha512-v5wVXoWIusAU1n0GGctIY+VyINIFXaD/WWHiwS+TFX74C0pFZrmrwUkqZDDCclu7zxuhlixPO+VLyDqNtoppfA==", - "dependencies": { - "@iconify/types": "*" - } - }, "node_modules/@iconify-json/mdi": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/@iconify-json/mdi/-/mdi-1.2.2.tgz", @@ -790,6 +782,15 @@ "@iconify/types": "*" } }, + "node_modules/@iconify-json/simple-icons": { + "version": "1.2.18", + "resolved": "https://registry.npmjs.org/@iconify-json/simple-icons/-/simple-icons-1.2.18.tgz", + "integrity": "sha512-ae4ig7fxNXME1wl5og7Ocp82TM4jyz6IsOyI8GrteSbvHR9gaPu2Z01Amn5V/xo1Y7A7/+EH/3Ovpy2az/gYbg==", + "license": "CC0-1.0", + "dependencies": { + "@iconify/types": "*" + } + }, "node_modules/@iconify/tools": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/@iconify/tools/-/tools-4.0.7.tgz", diff --git a/package.json b/package.json index ccb1c58..f09aed7 100644 --- a/package.json +++ b/package.json @@ -15,8 +15,8 @@ "@astrojs/rss": "^4.0.10", "@astrojs/sitemap": "^3.2.1", "@astrojs/tailwind": "^5.1.4", - "@iconify-json/fa-brands": "^1.2.1", "@iconify-json/mdi": "^1.2.2", + "@iconify-json/simple-icons": "^1.2.18", "astro": "^5.1.1", "astro-icon": "^1.1.4", "fuse.js": "^7.0.0", diff --git a/src/assets/scripts/article.ts b/src/assets/scripts/article.ts index 4acdea1..a50d402 100644 --- a/src/assets/scripts/article.ts +++ b/src/assets/scripts/article.ts @@ -28,7 +28,9 @@ class ArticleState { return; } const defaultHeadingId = Object.keys(this.headings)[0]; - if (!defaultHeadingId) return; + if (!defaultHeadingId) { + return; + } const defaultHeading = this.headings[defaultHeadingId]!!; this.highlightTocHeading(defaultHeading); } @@ -53,7 +55,9 @@ class ArticleState { } async updateCurrentHeading(heading: ArticleHeading) { - if (this.currentHeading?.id === heading.id) return; + if (this.currentHeading?.id === heading.id) { + return; + } this.highlightContentHeading(heading); heading.content.scrollIntoView({ behavior: "smooth" }); history.replaceState(null, "", `#${heading.id}`); @@ -76,14 +80,18 @@ class ArticleState { clearInterval(onScrollEndInterval ?? undefined); onScrollEndInterval = setTimeout(() => this.emitOnScrollEnd(), 50); const scrollingElement = document.scrollingElement; - if (!scrollingElement) return; + if (!scrollingElement) { + return; + } const visibleHeight = document.documentElement.clientHeight; const scrollBottom = scrollingElement.scrollTop + visibleHeight; if (scrollBottom === document.body.clientHeight) { const headings = Object.values(this.headings); const lastHeading = headings[headings.length - 1] ?? this.currentHeading; - if (!lastHeading) return; + if (!lastHeading) { + return; + } this.highlightTocHeading(lastHeading); return; } @@ -96,7 +104,9 @@ class ArticleState { } visibleHeading = x; } - if (!visibleHeading) return; + if (!visibleHeading) { + return; + } this.highlightTocHeading(visibleHeading); }); } @@ -133,7 +143,9 @@ class ArticleState { const headings: Record = {}; document.querySelectorAll(this.tocHeadingSelector).forEach((x) => { const id = x.getAttribute(this.headingIdAttribute); - if (!id) return; + if (!id) { + return; + } headings[id] = this.getHeading(id); }); return headings; diff --git a/src/assets/scripts/home.ts b/src/assets/scripts/home.ts index 0f8f5e4..9025435 100644 --- a/src/assets/scripts/home.ts +++ b/src/assets/scripts/home.ts @@ -1,3 +1,5 @@ +import { CancellableTimeout, Utils } from "~/core/utils"; + interface HeroElements { container: HTMLElement; enabled: boolean; @@ -54,13 +56,28 @@ const attachHero = () => { }, 200); }; -const onProjectsScroll = ( +let onProjectsScrollScrollTimeout: CancellableTimeout | undefined; + +const onProjectsScroll = async ( projectElement: HTMLElement, projectItemElements: HTMLElement[], scrollingElement: Element, ) => { + if (document.body.clientWidth < Utils.BREAKPOINT_MD) { + return; + } + onProjectsScrollScrollTimeout?.cancel(); + const timeout = new CancellableTimeout(500); + onProjectsScrollScrollTimeout = timeout; + try { + await timeout.start(); + } catch (err) {} + if (timeout.cancelled) { + return; + } + onProjectsScrollScrollTimeout = undefined; const snapIndexAttribute = "data-snapped-index"; - const snapThreshold = scrollingElement.clientHeight * 0.15; + const snapThreshold = scrollingElement.clientHeight * 0.2; const { scrollTop } = scrollingElement; if ( scrollTop < projectItemElements[0]!!.offsetTop - snapThreshold || diff --git a/src/assets/scripts/redirect.ts b/src/assets/scripts/redirect.ts index 60c56c2..d92e466 100644 --- a/src/assets/scripts/redirect.ts +++ b/src/assets/scripts/redirect.ts @@ -2,7 +2,9 @@ document.addEventListener("DOMContentLoaded", () => { const url = document.querySelector( "meta[name='redirect-url']", )?.content; - if (!url) return; + if (!url) { + return; + } location.assign(url); }); diff --git a/src/assets/scripts/scroll-to-top.ts b/src/assets/scripts/scroll-to-top.ts index 2e8d27c..62c606a 100644 --- a/src/assets/scripts/scroll-to-top.ts +++ b/src/assets/scripts/scroll-to-top.ts @@ -28,7 +28,9 @@ class ScrollToTop { onScroll() { const { scrollingElement } = document; - if (!scrollingElement) return; + if (!scrollingElement) { + return; + } const { clientHeight, scrollTop, scrollHeight } = scrollingElement; const clientHeightQuarter = clientHeight * 0.25; this.setVisibility( @@ -40,7 +42,9 @@ class ScrollToTop { } setVisibility(visible: boolean) { - if (this.isVisible === visible) return; + if (this.isVisible === visible) { + return; + } this.isVisible = visible; const element = document.getElementById(this.scrollToTopId); element?.setAttribute(this.activeAttribute, visible ? "true" : ""); diff --git a/src/components/base/Footer.astro b/src/components/base/Footer.astro index aec06fb..dd03f4d 100644 --- a/src/components/base/Footer.astro +++ b/src/components/base/Footer.astro @@ -14,7 +14,6 @@ import FooterSecondaryLink from "~/components/base/FooterSecondaryLink.astro";

Made by {Metadata.title} - with ❤️

diff --git a/src/components/base/NavBar.astro b/src/components/base/NavBar.astro index 1e8da1d..44f1959 100644 --- a/src/components/base/NavBar.astro +++ b/src/components/base/NavBar.astro @@ -1,5 +1,6 @@ --- import { Routes } from "~/core/routes"; +import { StaticAssets } from "~/core/urls"; import NavBarLink from "~/components/base/NavBarLink.astro"; const replaceSlashes = (route: string) => route.replaceAll(/^\/|\/$/g, ""); @@ -8,12 +9,18 @@ const isCurrentPage = (route: string) => ---