From 0727e32438d227372835176ffe3771fdb1d7e31c Mon Sep 17 00:00:00 2001 From: Maya Date: Sat, 26 Jul 2025 11:02:22 +0300 Subject: [PATCH] fix: oops --- src/lib/sections/about/Credits.svelte | 2 +- src/lib/sections/about/Sponsors.svelte | 2 +- src/lib/sections/settings/Privacy.svelte | 2 +- src/lib/sections/settings/Vertd.svelte | 2 +- src/lib/store/index.svelte.ts | 30 ++++++++++++++++++++++++ src/routes/+page.svelte | 2 +- 6 files changed, 35 insertions(+), 5 deletions(-) diff --git a/src/lib/sections/about/Credits.svelte b/src/lib/sections/about/Credits.svelte index bbf8ab8..e95af6a 100644 --- a/src/lib/sections/about/Credits.svelte +++ b/src/lib/sections/about/Credits.svelte @@ -3,7 +3,7 @@ import { HeartHandshakeIcon } from "lucide-svelte"; import { GITHUB_URL_VERT } from "$lib/consts"; import { m } from "$lib/paraglide/messages"; - import { link } from "$lib/paraglide"; + import { link } from "$lib/store/index.svelte"; let { mainContribs, notableContribs, ghContribs } = $props(); diff --git a/src/lib/sections/about/Sponsors.svelte b/src/lib/sections/about/Sponsors.svelte index 59bc865..86ea317 100644 --- a/src/lib/sections/about/Sponsors.svelte +++ b/src/lib/sections/about/Sponsors.svelte @@ -6,7 +6,7 @@ import { error } from "$lib/logger"; import { addToast } from "$lib/store/ToastProvider"; import { m } from "$lib/paraglide/messages"; - import { link } from "$lib/paraglide"; + import { link } from "$lib/store/index.svelte"; let copied = false; let timeoutId: number | undefined; diff --git a/src/lib/sections/settings/Privacy.svelte b/src/lib/sections/settings/Privacy.svelte index 3da06bb..5748d5b 100644 --- a/src/lib/sections/settings/Privacy.svelte +++ b/src/lib/sections/settings/Privacy.svelte @@ -4,7 +4,7 @@ import type { ISettings } from "./index.svelte"; import { effects } from "$lib/store/index.svelte"; import { m } from "$lib/paraglide/messages"; - import { link } from "$lib/paraglide"; + import { link } from "$lib/store/index.svelte"; const { settings }: { settings: ISettings } = $props(); diff --git a/src/lib/sections/settings/Vertd.svelte b/src/lib/sections/settings/Vertd.svelte index 364820a..d19546b 100644 --- a/src/lib/sections/settings/Vertd.svelte +++ b/src/lib/sections/settings/Vertd.svelte @@ -7,7 +7,7 @@ import Dropdown from "$lib/components/functional/Dropdown.svelte"; import { vertdLoaded } from "$lib/store/index.svelte"; import { m } from "$lib/paraglide/messages"; - import { link } from "$lib/paraglide"; + import { link } from "$lib/store/index.svelte"; let vertdCommit = $state(null); let abortController: AbortController | null = null; diff --git a/src/lib/store/index.svelte.ts b/src/lib/store/index.svelte.ts index ac19c1a..66a0c94 100644 --- a/src/lib/store/index.svelte.ts +++ b/src/lib/store/index.svelte.ts @@ -306,4 +306,34 @@ export function updateLocale(newLocale: string) { setLocale(newLocale, { reload: false }); // @ts-expect-error shush locale.set(newLocale); +} + +export function link( + tag: string | string[], + text: string, + links: string | string[], + newTab?: boolean | boolean[], + className?: string | string[] +) { + if (!text) return ""; + + const tags = Array.isArray(tag) ? tag : [tag]; + const linksArr = Array.isArray(links) ? links : [links]; + const newTabArr = Array.isArray(newTab) ? newTab : [newTab]; + const classArr = Array.isArray(className) ? className : [className]; + + let result = text; + + tags.forEach((t, i) => { + const link = linksArr[i] ?? "#"; + const target = newTabArr[i] ? 'target="_blank" rel="noopener noreferrer"' : ""; + const cls = classArr[i] ? `class="${classArr[i]}"` : ""; + + const regex = new RegExp(`\\[${t}\\](.*?)\\[\\/${t}\\]`, "g"); + result = result.replace(regex, (_, inner) => + `${inner}` + ); + }); + + return result; } \ No newline at end of file diff --git a/src/routes/+page.svelte b/src/routes/+page.svelte index d0e5d96..de8b8e2 100644 --- a/src/routes/+page.svelte +++ b/src/routes/+page.svelte @@ -6,7 +6,7 @@ import clsx from "clsx"; import { AudioLines, BookText, Check, Film, Image } from "lucide-svelte"; import { m } from "$lib/paraglide/messages"; - import { link } from "$lib/paraglide"; + import { link } from "$lib/store/index.svelte"; const getSupportedFormats = (name: string) => converters