mirror of https://github.com/VERT-sh/VERT.git
refactor: remove jepgify
This commit is contained in:
parent
677ec9250e
commit
f88a9a6ec3
|
|
@ -17,8 +17,7 @@
|
|||
"subtitle": "Die Verarbeitung aller Bild-, Audio- und Dokumentdateien findet auf deinem Gerät statt. Videos werden auf unseren blitzschnellen Servern konvertiert. Kein Dateigrößenlimit, keine Werbung und vollständig Open-Source.",
|
||||
"uploader": {
|
||||
"text": "Dateien hier ablegen oder klicken zum {action}",
|
||||
"convert": "Konvertieren",
|
||||
"jpegify": "Jpegifizieren"
|
||||
"convert": "Konvertieren"
|
||||
},
|
||||
"cards": {
|
||||
"title": "VERT unterstützt...",
|
||||
|
|
@ -190,7 +189,7 @@
|
|||
"notable_contributors": "Besonders erwähnenswerte Mitwirkende",
|
||||
"notable_description": "Wir möchten diesen Personen für ihre wichtigen Beiträge zu VERT danken.",
|
||||
"github_contributors": "GitHub-Mitwirkende",
|
||||
"github_description": "Ein großes [jpegify_link]Dankeschön[/jpegify_link] an all diese Leute für ihre Hilfe! [github_link]Möchtest du auch helfen?[/github_link]",
|
||||
"github_description": "Ein großes Dankeschön an all diese Leute für ihre Hilfe! [github_link]Möchtest du auch helfen?[/github_link]",
|
||||
"no_contributors": "Scheint, als hätte noch niemand beigetragen... [contribute_link]sei der Erste, der beiträgt![/contribute_link]",
|
||||
"libraries": "Bibliotheken",
|
||||
"libraries_description": "Ein großes Dankeschön an FFmpeg (Audio, Video), ImageMagick (Bilder) und Pandoc (Dokumente) für die Pflege solch exzellenter Bibliotheken über so viele Jahre. VERT verlässt sich auf sie, um dir deine Konvertierungen zu ermöglichen.",
|
||||
|
|
@ -215,12 +214,5 @@
|
|||
"no_audio": "Kein Audiostream gefunden.",
|
||||
"invalid_rate": "Ungültige Abtastrate angegeben: {rate}Hz"
|
||||
}
|
||||
},
|
||||
"jpegify": {
|
||||
"title": "GEHEIMES JPEGIFIZIEREN!!!",
|
||||
"subtitle": "(psst... sag es niemandem!)",
|
||||
"button": "JPEGIFIZIEREN {compression}%!!!",
|
||||
"download": "Herunterladen",
|
||||
"delete": "Löschen"
|
||||
}
|
||||
}
|
||||
|
|
@ -17,8 +17,7 @@
|
|||
"subtitle": "Όλη η επεξεργασία εικόνων, ήχου και εγγράφων γίνεται στη συσκευή σας. Τα βίντεο μετατρέπονται στους κεραυνοβόλα γρήγορους διακομιστές μας. Χωρίς όριο μεγέθους αρχείου, χωρίς διαφημίσεις και εντελώς ανοιχτού κώδικα.",
|
||||
"uploader": {
|
||||
"text": "Σύρετε ή κάντε κλικ για {action}",
|
||||
"convert": "μετατροπή",
|
||||
"jpegify": "μετατροπή σε jpeg"
|
||||
"convert": "μετατροπή"
|
||||
},
|
||||
"cards": {
|
||||
"title": "Το VERT υποστηρίζει...",
|
||||
|
|
@ -216,7 +215,7 @@
|
|||
"notable_contributors": "Αξιόλογοι συνεισφέροντες",
|
||||
"notable_description": "Θα θέλαμε να ευχαριστήσουμε αυτά τα άτομα για τις σημαντικές συνεισφορές τους στο VERT.",
|
||||
"github_contributors": "Συνεισφέροντες στο GitHub",
|
||||
"github_description": "Μεγάλες [jpegify_link]ευχαριστίες[/jpegify_link] σε όλα αυτά τα άτομα που βοήθησαν! [github_link]Θέλετε να βοηθήσετε κι εσείς;[/github_link]",
|
||||
"github_description": "Μεγάλες ευχαριστίες σε όλα αυτά τα άτομα που βοήθησαν! [github_link]Θέλετε να βοηθήσετε κι εσείς;[/github_link]",
|
||||
"no_contributors": "Φαίνεται ότι κανείς δεν έχει συνεισφέρει ακόμα... [contribute_link]γίνετε ο πρώτος που θα συνεισφέρει![/contribute_link]",
|
||||
"libraries": "Βιβλιοθήκες",
|
||||
"libraries_description": "Μεγάλες ευχαριστίες στα FFmpeg (ήχος, βίντεο), ImageMagick (εικόνες) και Pandoc (έγγραφα) που διατηρούν τέτοιες εξαιρετικές βιβλιοθήκες για τόσα χρόνια. Το VERT βασίζεται σε αυτές για να σας παρέχει τις μετατροπές σας.",
|
||||
|
|
@ -241,12 +240,5 @@
|
|||
"no_audio": "Δεν βρέθηκε ροή ήχου.",
|
||||
"invalid_rate": "Καθορίστηκε μη έγκυρος ρυθμός δειγματοληψίας: {rate}Hz"
|
||||
}
|
||||
},
|
||||
"jpegify": {
|
||||
"title": "ΜΥΣΤΙΚΟ JPEGIFY!!!",
|
||||
"subtitle": "(σσσ... μην το πεις σε κανέναν!)",
|
||||
"button": "JPEGIFY {compression}%!!!",
|
||||
"download": "Λήψη",
|
||||
"delete": "Διαγραφή"
|
||||
}
|
||||
}
|
||||
|
|
@ -18,8 +18,7 @@
|
|||
"subtitle": "All image, audio, and document processing is done on your device. Videos are converted on our lightning-fast servers. No file size limit, no ads, and completely open source.",
|
||||
"uploader": {
|
||||
"text": "Drop or click to {action}",
|
||||
"convert": "convert",
|
||||
"jpegify": "jpegify"
|
||||
"convert": "convert"
|
||||
},
|
||||
"cards": {
|
||||
"title": "VERT supports...",
|
||||
|
|
@ -225,7 +224,7 @@
|
|||
"notable_contributors": "Notable contributors",
|
||||
"notable_description": "We'd like to thank these people for their major contributions to VERT.",
|
||||
"github_contributors": "GitHub contributors",
|
||||
"github_description": "Big [jpegify_link]thanks[/jpegify_link] to all these people for helping out! [github_link]Want to help too?[/github_link]",
|
||||
"github_description": "Big thanks to all these people for helping out! [github_link]Want to help too?[/github_link]",
|
||||
"no_contributors": "Seems like no one has contributed yet... [contribute_link]be the first to contribute![/contribute_link]",
|
||||
"libraries": "Libraries",
|
||||
"libraries_description": "A big thanks to FFmpeg (audio, video), ImageMagick (images) and Pandoc (documents) for maintaining such excellent libraries for so many years. VERT relies on them to provide you with your conversions.",
|
||||
|
|
@ -251,13 +250,6 @@
|
|||
"invalid_rate": "Invalid sample rate specified: {rate}Hz"
|
||||
}
|
||||
},
|
||||
"jpegify": {
|
||||
"title": "SECRET JPEGIFY!!!",
|
||||
"subtitle": "(shh... don't tell anyone!)",
|
||||
"button": "JPEGIFY {compression}%!!!",
|
||||
"download": "Download",
|
||||
"delete": "Delete"
|
||||
},
|
||||
"privacy": {
|
||||
"title": "Privacy Policy"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,8 +17,7 @@
|
|||
"subtitle": "Todo el procesamiento de imágenes, audio y documentos es hecho en tu dispositivo. Los vídeos son convertidos en nuestros servidores ultra rápidos. Sin límite de tamaño de archivo, sin anuncios y de código abierto.",
|
||||
"uploader": {
|
||||
"text": "Arrastra o haz clic para {action}",
|
||||
"convert": "convertir",
|
||||
"jpegify": "jpegificar"
|
||||
"convert": "convertir"
|
||||
},
|
||||
"cards": {
|
||||
"title": "VERT soporta...",
|
||||
|
|
@ -210,7 +209,7 @@
|
|||
"notable_contributors": "Colaboradores destacados",
|
||||
"notable_description": "Queremos dar las gracias a las siguientes personas por sus importantes contribuciones a VERT.",
|
||||
"github_contributors": "Contribuidores de GitHub",
|
||||
"github_description": "¡Muchas [jpegify_link]gracias[/jpegify_link] a todos los que han contribuido! [github_link]¿Quieres contribuir también?[/github_link]",
|
||||
"github_description": "¡Muchas gracias a todos los que han contribuido! [github_link]¿Quieres contribuir también?[/github_link]",
|
||||
"no_contributors": "Parece que nadie ha contribuido todavía... [contribute_link]¡Sé el primero en hacerlo![/contribute_link]",
|
||||
"libraries": "Librerías",
|
||||
"libraries_description": "Muchas gracias a FFmpeg (audio, vídeo), ImageMagick (imágenes) y Pandoc (documentos) por mantener librerías excelentes por tantos años. VERT depende de ellas para proporcionar tus conversiones.",
|
||||
|
|
@ -235,12 +234,5 @@
|
|||
"no_audio": "No se encontró una pista de audio.",
|
||||
"invalid_rate": "La tasa de muestreo especificada no es válida: {rate}Hz"
|
||||
}
|
||||
},
|
||||
"jpegify": {
|
||||
"title": "¡¡¡JPEGIFICADOR SECRETO!!!",
|
||||
"subtitle": "(shh... ¡no se lo digas a nadie!)",
|
||||
"button": "¡¡¡JPEGIFICAR {compression}%!!!",
|
||||
"download": "Descargar",
|
||||
"delete": "Eliminar"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,8 +17,7 @@
|
|||
"subtitle": "Tout le traitement des images, des fichiers audio et des documents s'effectue sur votre appareil. Les vidéos sont converties sur nos serveurs ultra-rapides. Aucune limite de taille de fichier, aucune publicité et entièrement open source.",
|
||||
"uploader": {
|
||||
"text": "Déposer ou cliquer pour {action}",
|
||||
"convert": "convertir",
|
||||
"jpegify": "jpegify"
|
||||
"convert": "convertir"
|
||||
},
|
||||
"cards": {
|
||||
"title": "VERT supports...",
|
||||
|
|
@ -190,7 +189,7 @@
|
|||
"notable_contributors": "Contributeurs notables",
|
||||
"notable_description": "Nous tenons à remercier ces personnes pour leurs contributions majeures à VERT.",
|
||||
"github_contributors": "Les contributeurs de GitHub",
|
||||
"github_description": "Un grand [jpegify_link]merci[/jpegify_link] à toutes ces personnes pour leur aide ! [github_link]Vous voulez aussi aider ?[/github_link]",
|
||||
"github_description": "Un grand merci à toutes ces personnes pour leur aide ! [github_link]Vous voulez aussi aider ?[/github_link]",
|
||||
"no_contributors": "Il semble que personne n'ait encore contribué... [contribute_link]soyez le premier à contribuer ![/contribute_link]",
|
||||
"libraries": "Bibliothèques",
|
||||
"libraries_description": "un grand merci à FFmpeg (audio, video), ImageMagick (images) et Pandoc (documents) pour avoir maintenu d'aussi excellentes bibliothèques pendant tant d'années, VERT compte sur eux pour vous fournir vos conversions.",
|
||||
|
|
@ -215,12 +214,5 @@
|
|||
"no_audio": "Aucun flux audio détécté.",
|
||||
"invalid_rate": "Taux d'échantillonnage spécifié non valide: {rate}Hz"
|
||||
}
|
||||
},
|
||||
"jpegify": {
|
||||
"title": "SECRET JPEGIFY!!!",
|
||||
"subtitle": "(chut... ne le dis à personne !)",
|
||||
"button": "JPEGIFY {compression}%!!!",
|
||||
"download": "Télécharger",
|
||||
"delete": "Supprimer"
|
||||
}
|
||||
}
|
||||
|
|
@ -17,8 +17,7 @@
|
|||
"subtitle": "Cijelokupna obrada slika, zvuka i dokumenata se odvija na vašem uređaju. Videozapisi se pretvaraju na našim izrazito brzim serverima. Nema nikakvih ograničenja veličine niti reklama i potpuno je open source.",
|
||||
"uploader": {
|
||||
"text": "Ubaci ili klikni da {action}",
|
||||
"convert": "pretvori",
|
||||
"jpegify": "jpegiraj"
|
||||
"convert": "pretvori"
|
||||
},
|
||||
"cards": {
|
||||
"title": "VERT podržava...",
|
||||
|
|
@ -190,7 +189,7 @@
|
|||
"notable_contributors": "Značajni suradnici",
|
||||
"notable_description": "Želimo zahvaliti ovim ljudima za njihove ogromne doprinose VERTu.",
|
||||
"github_contributors": "GitHub suradnici",
|
||||
"github_description": "Velike [jpegify_link]zahvale[/jpegify_link] svim ovim ljudima koji su nam pomogli! [github_link]Želiš nam i ti pomoći?[/github_link]",
|
||||
"github_description": "Velike zahvale svim ovim ljudima koji su nam pomogli! [github_link]Želiš nam i ti pomoći?[/github_link]",
|
||||
"no_contributors": "Čini se kako nitko nije još doprinio... [contribute_link]budite prvi koji će doprinjeti![/contribute_link]",
|
||||
"libraries": "Biblioteke",
|
||||
"libraries_description": "Velike zahvale prema FFmpeg (audio, video), ImageMagick (slike) i Pandoc (dokumenti) što su održavali tako odlične biblioteke svih ovih godina. VERT se oslanja na njih da bi Vam pružili pretvorbu.",
|
||||
|
|
@ -214,12 +213,5 @@
|
|||
"no_audio": "Nije pronađen audio.",
|
||||
"invalid_rate": "Upisan nevažeći sample rate: {rate}Hz!"
|
||||
}
|
||||
},
|
||||
"jpegify": {
|
||||
"title": "TAJNI JPEGIFY!!!",
|
||||
"subtitle": "(shhhh... nemoj reći nikome!)",
|
||||
"button": "JPEGIRAJ {compression}%!!!",
|
||||
"download": "Preuzmi",
|
||||
"delete": "Obriši"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,8 +17,7 @@
|
|||
"subtitle": "Tutta l'elaborazione di immagini, audio e documenti avviene sul tuo dispositivo. I video sono convertiti sui nostri server velocissimi. Nessun limite di dimensione, nessuna pubblicità e completamente open source.",
|
||||
"uploader": {
|
||||
"text": "Trascina o clicca per {action}",
|
||||
"convert": "convertire",
|
||||
"jpegify": "jpegificare"
|
||||
"convert": "convertire"
|
||||
},
|
||||
"cards": {
|
||||
"title": "VERT supporta...",
|
||||
|
|
@ -216,7 +215,7 @@
|
|||
"notable_contributors": "Contributori di rilievo",
|
||||
"notable_description": "Vorremmo ringraziare queste persone per i loro importanti contributi a VERT.",
|
||||
"github_contributors": "Contributori GitHub",
|
||||
"github_description": "Un grande [jpegify_link]grazie[/jpegify_link] a tutte queste persone per aver dato una mano! [github_link]Vuoi aiutare anche tu?[/github_link]",
|
||||
"github_description": "Un grande grazie a tutte queste persone per aver dato una mano! [github_link]Vuoi aiutare anche tu?[/github_link]",
|
||||
"no_contributors": "Sembra che nessuno abbia ancora contribuito... [contribute_link]sii il primo a contribuire![/contribute_link]",
|
||||
"libraries": "Librerie",
|
||||
"libraries_description": "Un grande ringraziamento a FFmpeg (audio, video), ImageMagick (immagini) e Pandoc (documenti) per aver mantenuto librerie così eccellenti per così tanti anni. VERT si affida a loro per fornirti le tue conversioni.",
|
||||
|
|
@ -241,12 +240,5 @@
|
|||
"no_audio": "Nessuno *stream* audio trovato.",
|
||||
"invalid_rate": "Frequenza di campionamento specificata non valida: {rate}Hz"
|
||||
}
|
||||
},
|
||||
"jpegify": {
|
||||
"title": "JPEGIFY SEGRETO!!!",
|
||||
"subtitle": "(shh... non dirlo a nessuno!)",
|
||||
"button": "JPEGIFY {compression}%!!!",
|
||||
"download": "Scarica",
|
||||
"delete": "Elimina"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,8 +17,7 @@
|
|||
"subtitle": "すべての画像・音声・ドキュメント処理はデバイス上で行われます。動画は超高速サーバーで変換されます。ファイルサイズ制限なし、広告なし、完全オープンソース。",
|
||||
"uploader": {
|
||||
"text": "ドロップまたはクリックして{action}",
|
||||
"convert": "変換",
|
||||
"jpegify": "JPEG化"
|
||||
"convert": "変換"
|
||||
},
|
||||
"cards": {
|
||||
"title": "VERTがサポートしている形式",
|
||||
|
|
@ -210,7 +209,7 @@
|
|||
"notable_contributors": "特筆すべき貢献者",
|
||||
"notable_description": "VERTに大きく貢献してくださった方々に感謝します。",
|
||||
"github_contributors": "GitHubの貢献者",
|
||||
"github_description": "多くの方々に[jpegify_link]感謝[/jpegify_link]します![github_link]あなたも参加してみませんか?[/github_link]",
|
||||
"github_description": "多くの方々に感謝します![github_link]あなたも参加してみませんか?[/github_link]",
|
||||
"no_contributors": "まだ誰も貢献していないようです… [contribute_link]最初の貢献者になりましょう![/contribute_link]",
|
||||
"libraries": "ライブラリ",
|
||||
"libraries_description": "長年にわたり優れたライブラリを提供してくれているFFmpeg(音声・動画)、ImageMagick(画像)、Pandoc(ドキュメント)に感謝します。VERTはこれらに依存して動作しています。",
|
||||
|
|
@ -235,12 +234,5 @@
|
|||
"no_audio": "音声ストリームが見つかりません。",
|
||||
"invalid_rate": "無効なサンプリングレートが指定されました: {rate}Hz"
|
||||
}
|
||||
},
|
||||
"jpegify": {
|
||||
"title": "秘密のJPEGIFY!!!",
|
||||
"subtitle": "(しっ…誰にも言わないで!)",
|
||||
"button": "JPEGIFY {compression}%!!!",
|
||||
"download": "ダウンロード",
|
||||
"delete": "削除"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,8 +17,7 @@
|
|||
"subtitle": "Tüm görüntü, ses ve belge işlemleri cihazınızda gerçekleştirilir. Videolar, ışık hızındaki sunucularımızda dönüştürülür. Dosya boyutu sınırı ve reklam yoktur. Tamamen açık kaynaklıdır.",
|
||||
"uploader": {
|
||||
"text": "{action} için sürükleyip bırakın veya dosya seçin",
|
||||
"convert": "dönüştürmek",
|
||||
"jpegify": "jpegify"
|
||||
"convert": "dönüştürmek"
|
||||
},
|
||||
"cards": {
|
||||
"title": "VERT'in desteklediği formatlar...",
|
||||
|
|
@ -211,7 +210,7 @@
|
|||
"notable_contributors": "Önemli katılımcılar",
|
||||
"notable_description": "VERT'e sağladıkları büyük katkılardan dolayı bu kişilere teşekkür ederiz.",
|
||||
"github_contributors": "GitHub katılımcıları",
|
||||
"github_description": "Yardımcı olan herkese çok [jpegify_link]teşekkürler[/jpegify_link]! [github_link]Sen de yardım etmek ister misin?[/github_link]",
|
||||
"github_description": "Yardımcı olan herkese çok teşekkürler! [github_link]Sen de yardım etmek ister misin?[/github_link]",
|
||||
"no_contributors": "Henüz kimse katkıda bulunmamış gibi görünüyor... [contribute_link]ilk katkıda bulunan sen ol![/contribute_link]",
|
||||
"libraries": "Kütüphaneler",
|
||||
"libraries_description": "Bu mükemmel kütüphaneleri yıllardır geliştirdikleri için FFmpeg (ses, video), ImageMagick (görseller) ve Pandoc (belgeler)'a çok teşekkür ederiz. VERT, dönüştürme işlemleri için bu kütüphaneleri kullanmaktadır.",
|
||||
|
|
@ -236,12 +235,5 @@
|
|||
"no_audio": "Ses akışı bulunamadı.",
|
||||
"invalid_rate": "Geçersiz örnekleme hızı: {hız}Hz"
|
||||
}
|
||||
},
|
||||
"jpegify": {
|
||||
"title": "GİZLİ JPEGIFY!!!",
|
||||
"subtitle": "(şşş... kimseye söyleme!)",
|
||||
"button": "JPEGIFY {compression}%!!!",
|
||||
"download": "İndir",
|
||||
"delete": "Sil"
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,10 +11,9 @@
|
|||
|
||||
type Props = {
|
||||
class?: string;
|
||||
jpegify?: boolean;
|
||||
};
|
||||
|
||||
const { class: classList, jpegify }: Props = $props();
|
||||
const { class: classList }: Props = $props();
|
||||
|
||||
let uploaderButton = $state<HTMLButtonElement>();
|
||||
let fileInput = $state<HTMLInputElement>();
|
||||
|
|
@ -43,13 +42,9 @@
|
|||
|
||||
const handleFileChange = (e: Event) => {
|
||||
if (!fileInput) return;
|
||||
if (page.url.pathname !== "/jpegify/") {
|
||||
const oldLength = files.files.length;
|
||||
files.add(fileInput.files);
|
||||
if (oldLength !== files.files.length) goto("/convert");
|
||||
} else {
|
||||
files.add(fileInput.files);
|
||||
}
|
||||
const oldLength = files.files.length;
|
||||
files.add(fileInput.files);
|
||||
if (oldLength !== files.files.length) goto("/convert");
|
||||
};
|
||||
|
||||
onMount(() => {
|
||||
|
|
@ -100,9 +95,7 @@
|
|||
</div>
|
||||
<h2 class="text-center text-2xl font-semibold mt-4">
|
||||
{m["upload.uploader.text"]({
|
||||
action: jpegify
|
||||
? m["upload.uploader.jpegify"]()
|
||||
: m["upload.uploader.convert"](),
|
||||
action: m["upload.uploader.convert"]()
|
||||
})}
|
||||
</h2>
|
||||
</Panel>
|
||||
|
|
|
|||
|
|
@ -36,11 +36,6 @@
|
|||
color: "var(--bg-gradient-from)",
|
||||
at: 25,
|
||||
},
|
||||
{
|
||||
matcher: (path) => path === "/jpegify/",
|
||||
color: "var(--bg-gradient-red-from)",
|
||||
at: 100,
|
||||
},
|
||||
{
|
||||
matcher: (path) => path === "/privacy/",
|
||||
color: "var(--bg-gradient-red-from)",
|
||||
|
|
|
|||
|
|
@ -94,30 +94,34 @@
|
|||
<div class="flex flex-col gap-1">
|
||||
<h2 class="text-base font-bold">
|
||||
{m["about.credits.github_contributors"]()}
|
||||
</h2>
|
||||
</h2>
|
||||
{#if ghContribs && ghContribs.length > 0}
|
||||
<p class="text-base text-muted font-normal">
|
||||
{@html sanitize(
|
||||
link(
|
||||
"github_link",
|
||||
m["about.credits.github_description"](),
|
||||
GITHUB_URL_VERT,
|
||||
true,
|
||||
"text-blue-500 font-normal hover:underline",
|
||||
),
|
||||
)}
|
||||
</p>
|
||||
{:else}
|
||||
<p class="text-base text-muted font-normal italic">
|
||||
{@html sanitize(
|
||||
link(
|
||||
"contribute_link",
|
||||
m["about.credits.no_contributors"](),
|
||||
GITHUB_URL_VERT,
|
||||
true,
|
||||
"text-blue-500 font-normal hover:underline",
|
||||
),
|
||||
)}
|
||||
</p>
|
||||
{/if}
|
||||
</div>
|
||||
{#if ghContribs && ghContribs.length > 0}
|
||||
<p class="text-base text-muted font-normal">
|
||||
{@html sanitize(link(
|
||||
["jpegify_link", "github_link"],
|
||||
m["about.credits.github_description"](),
|
||||
["/jpegify", GITHUB_URL_VERT],
|
||||
[false, true],
|
||||
[
|
||||
"text-black dynadark:text-white",
|
||||
"text-blue-500 font-normal hover:underline",
|
||||
],
|
||||
))}
|
||||
</p>
|
||||
{:else}
|
||||
<p class="text-base text-muted font-normal italic">
|
||||
{@html sanitize(link(
|
||||
"contribute_link",
|
||||
m["about.credits.no_contributors"](),
|
||||
GITHUB_URL_VERT,
|
||||
))}
|
||||
</p>
|
||||
{/if}
|
||||
</div> {#if ghContribs && ghContribs.length > 0}
|
||||
<div class="flex flex-row flex-wrap gap-2">
|
||||
{#each ghContribs as contrib}
|
||||
{@const { name, github, avatar } = contrib}
|
||||
|
|
|
|||
|
|
@ -46,13 +46,9 @@
|
|||
const dropFiles = (e: DragEvent) => {
|
||||
e.preventDefault();
|
||||
dropping.set(false);
|
||||
if (page.url.pathname !== "/jpegify/") {
|
||||
const oldLength = files.files.length;
|
||||
files.add(e.dataTransfer?.files);
|
||||
if (oldLength !== files.files.length) goto("/convert");
|
||||
} else {
|
||||
files.add(e.dataTransfer?.files);
|
||||
}
|
||||
const oldLength = files.files.length;
|
||||
files.add(e.dataTransfer?.files);
|
||||
if (oldLength !== files.files.length) goto("/convert");
|
||||
};
|
||||
|
||||
const handleDrag = (e: DragEvent, drag: boolean) => {
|
||||
|
|
@ -64,14 +60,9 @@
|
|||
const clipboardData = e.clipboardData;
|
||||
if (!clipboardData || !clipboardData.files.length) return;
|
||||
e.preventDefault();
|
||||
|
||||
if (page.url.pathname !== "/jpegify/") {
|
||||
const oldLength = files.files.length;
|
||||
files.add(clipboardData.files);
|
||||
if (oldLength !== files.files.length) goto("/convert");
|
||||
} else {
|
||||
files.add(clipboardData.files);
|
||||
}
|
||||
const oldLength = files.files.length;
|
||||
files.add(clipboardData.files);
|
||||
if (oldLength !== files.files.length) goto("/convert");
|
||||
};
|
||||
|
||||
onMount(() => {
|
||||
|
|
@ -128,7 +119,7 @@
|
|||
name="description"
|
||||
content="With VERT you can quickly convert any image, video and audio file. No ads, no tracking, open source, and all processing (other than video) is done on your device."
|
||||
/>
|
||||
<meta property="og:url" content="https://vert.sh">
|
||||
<meta property="og:url" content="https://vert.sh" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta
|
||||
property="og:title"
|
||||
|
|
@ -139,9 +130,9 @@
|
|||
content="With VERT you can quickly convert any image, video and audio file. No ads, no tracking, open source, and all processing (other than video) is done on your device."
|
||||
/>
|
||||
<meta property="og:image" content={featuredImage} />
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta property="twitter:domain" content="vert.sh">
|
||||
<meta property="twitter:url" content="https://vert.sh">
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta property="twitter:domain" content="vert.sh" />
|
||||
<meta property="twitter:url" content="https://vert.sh" />
|
||||
<meta
|
||||
property="twitter:title"
|
||||
content="{VERT_NAME} — Free, fast, and awesome file converter"
|
||||
|
|
|
|||
|
|
@ -1,118 +0,0 @@
|
|||
<script lang="ts">
|
||||
import { flip } from "$lib/animation";
|
||||
import Uploader from "$lib/components/functional/Uploader.svelte";
|
||||
import Panel from "$lib/components/visual/Panel.svelte";
|
||||
import { files } from "$lib/store/index.svelte";
|
||||
import { quintOut } from "svelte/easing";
|
||||
import { blur } from "svelte/transition";
|
||||
import { m } from "$lib/paraglide/messages";
|
||||
|
||||
const images = $derived(
|
||||
files.files.filter((f) =>
|
||||
f.converters.map((c) => c.name).includes("imagemagick"),
|
||||
),
|
||||
);
|
||||
|
||||
let forcedBlobURLs = $state<Map<string, string>>(new Map());
|
||||
|
||||
const jpegify = () => {
|
||||
const imgs = [...images];
|
||||
imgs.map(async (f, i) => {
|
||||
f.to = ".jpeg";
|
||||
const result = await f.convert(compression);
|
||||
if (!result) return;
|
||||
forcedBlobURLs.set(f.id, URL.createObjectURL(result.file));
|
||||
forcedBlobURLs = new Map([...forcedBlobURLs]);
|
||||
});
|
||||
};
|
||||
|
||||
let compressionInverted = $state(10);
|
||||
const compression = $derived(100 - compressionInverted);
|
||||
const processing = $derived(images.map((f) => f.processing).includes(true));
|
||||
</script>
|
||||
|
||||
<svelte:head>
|
||||
<meta name="robots" content="noindex" />
|
||||
</svelte:head>
|
||||
|
||||
<div class="mx-auto w-full max-w-[778px] flex flex-col gap-8">
|
||||
<h1 class="text-5xl text-center">{m["jpegify.title"]()}</h1>
|
||||
<p class="text-muted text-center -mt-4 font-normal italic">
|
||||
{m["jpegify.subtitle"]()}
|
||||
</p>
|
||||
<Uploader class="w-full h-64" jpegify={true} />
|
||||
<input
|
||||
type="range"
|
||||
min="1"
|
||||
max="100"
|
||||
step="1"
|
||||
class="w-full h-2 bg-panel rounded-lg appearance-none cursor-pointer"
|
||||
bind:value={compressionInverted}
|
||||
disabled={processing}
|
||||
/>
|
||||
<button
|
||||
onclick={jpegify}
|
||||
disabled={processing}
|
||||
class="btn bg-accent text-black rounded-2xl text-2xl w-full mx-auto"
|
||||
>{m["jpegify.button"]({ compression: compressionInverted })}</button
|
||||
>
|
||||
<div class="flex flex-wrap flex-row justify-center gap-4">
|
||||
{#each images as file, i (file.id)}
|
||||
<div
|
||||
class="max-w-full w-full h-96"
|
||||
animate:flip={{ duration: 400, easing: quintOut }}
|
||||
transition:blur={{
|
||||
duration: 400,
|
||||
amount: 8,
|
||||
easing: quintOut,
|
||||
}}
|
||||
>
|
||||
<Panel class="w-full h-full flex flex-col gap-4 relative z-0">
|
||||
<div
|
||||
class="relative rounded-xl flex-grow overflow-hidden flex items-center justify-center"
|
||||
>
|
||||
<img
|
||||
src={forcedBlobURLs.get(file.id) ||
|
||||
file.result?.blobUrl ||
|
||||
file.blobUrl}
|
||||
alt={file.name}
|
||||
class="h-full relative"
|
||||
/>
|
||||
<img
|
||||
src={forcedBlobURLs.get(file.id) ||
|
||||
file.result?.blobUrl ||
|
||||
file.blobUrl}
|
||||
alt={file.name}
|
||||
class="h-full absolute top-0 left-0 w-full object-cover blur-2xl -z-10"
|
||||
/>
|
||||
</div>
|
||||
<div class="flex-shrink-0 flex items-center gap-4 w-full">
|
||||
<button
|
||||
onclick={() => {
|
||||
file?.download();
|
||||
}}
|
||||
disabled={!!!file.result}
|
||||
class="btn bg-accent text-black rounded-2xl text-2xl w-full mx-auto"
|
||||
>
|
||||
{m["jpegify.download"]()}
|
||||
</button>
|
||||
<button
|
||||
onclick={() => {
|
||||
URL.revokeObjectURL(
|
||||
forcedBlobURLs.get(file.id) || "",
|
||||
);
|
||||
forcedBlobURLs.delete(file.id);
|
||||
files.files = files.files.filter(
|
||||
(f) => f.id !== file.id,
|
||||
);
|
||||
}}
|
||||
class="btn border-accent-red border-2 bg-transparent text-black dynadark:text-white rounded-2xl text-2xl w-full mx-auto"
|
||||
>
|
||||
{m["jpegify.delete"]()}
|
||||
</button>
|
||||
</div>
|
||||
</Panel>
|
||||
</div>
|
||||
{/each}
|
||||
</div>
|
||||
</div>
|
||||
Loading…
Reference in New Issue