Skip to content

Commit

Permalink
Merge pull request #9 from maybeanerd/elk-main
Browse files Browse the repository at this point in the history
chore: update to elk 0.11.0
  • Loading branch information
maybeanerd authored Feb 20, 2024
2 parents 3a77ac5 + b9394c2 commit 0f009e0
Show file tree
Hide file tree
Showing 14 changed files with 251 additions and 233 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ You can consult the [PWA documentation](https://docs.elk.zone/pwa) to learn more
- [UnoCSS](https://uno.antfu.me/) - The instant on-demand atomic CSS engine
- [Iconify](https://github.com/iconify/icon-sets#iconify-icon-sets-in-json-format) - Iconify icon sets in JSON format
- [Masto.js](https://neet.github.io/masto.js) - Mastodon API client in TypeScript
- [shikiji](https://shikiji.netlify.app/) - A beautiful and powerful syntax highlighter
- [shiki](https://shiki.style/) - A beautiful yet powerful syntax highlighter
- [vite-plugin-pwa](https://github.com/vite-pwa/vite-plugin-pwa) - Prompt for update, Web Push Notifications and Web Share Target API

## 👨‍💻 Contributors
Expand Down
2 changes: 1 addition & 1 deletion components/publish/PublishEditorTools.vue
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ const { editor } = defineProps<{

<template>
<CommonTooltip placement="top" :content="$t('tooltip.open_editor_tools')">
<VDropdown v-if="editor" placement="top">
<VDropdown v-if="editor" placement="bottom">
<button
btn-action-icon
:aria-label="$t('tooltip.open_editor_tools')"
Expand Down
7 changes: 5 additions & 2 deletions composables/masto/notification.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,10 @@ export function useNotifications() {
async function clearNotifications() {
if (!id || !notifications[id])
return

const lastReadId = notifications[id]![1][0]
notifications[id]![1] = []

if (lastReadId) {
await client.v1.markers.create({
notifications: { lastReadId },
Expand All @@ -30,11 +32,11 @@ export function useNotifications() {
if (!isHydrated.value || !id || notifications[id] !== undefined || !currentUser.value?.token)
return

let resolveStream
let resolveStream: ((value: mastodon.streaming.Subscription | PromiseLike<mastodon.streaming.Subscription>) => void) | undefined
const streamPromise = new Promise<mastodon.streaming.Subscription>(resolve => resolveStream = resolve)
notifications[id] = [streamPromise, []]

await until($$(streamingClient)).toBe(true)
await until($$(streamingClient)).toBeTruthy()

const stream = streamingClient!.user.subscribe()
resolveStream!(stream)
Expand All @@ -43,6 +45,7 @@ export function useNotifications() {

const position = await client.v1.markers.fetch({ timeline: ['notifications'] })
const paginator = client.v1.notifications.list({ limit: 30 })

do {
const result = await paginator.next()
if (!result.done && result.value.length) {
Expand Down
16 changes: 8 additions & 8 deletions composables/shikiji.ts → composables/shiki.ts
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
import { type Highlighter, type BuiltinLanguage as Lang } from 'shikiji'
import type { Highlighter, BuiltinLanguage as Lang } from 'shiki'

const highlighter = ref<Highlighter>()

const registeredLang = ref(new Map<string, boolean>())
let shikijiImport: Promise<void> | undefined
let shikiImport: Promise<void> | undefined

export function useHighlighter(lang: Lang): { promise?: Promise<void>; highlighter?: Highlighter } {
if (!shikijiImport) {
shikijiImport = import('shikiji')
if (!shikiImport) {
shikiImport = import('shiki')
.then(async ({ getHighlighter }) => {
highlighter.value = await getHighlighter({
themes: [
Expand All @@ -22,11 +22,11 @@ export function useHighlighter(lang: Lang): { promise?: Promise<void>; highlight
})
})

return { promise: shikijiImport }
return { promise: shikiImport }
}

if (!highlighter.value)
return { promise: shikijiImport }
return { promise: shikiImport }

if (!registeredLang.value.get(lang)) {
const promise = highlighter.value.loadLanguage(lang)
Expand All @@ -45,7 +45,7 @@ export function useHighlighter(lang: Lang): { promise?: Promise<void>; highlight
return { highlighter: highlighter.value }
}

function useShikijiTheme() {
function useShikiTheme() {
return useColorMode().value === 'dark' ? 'vitesse-dark' : 'vitesse-light'
}

Expand All @@ -68,6 +68,6 @@ export function highlightCode(code: string, lang: Lang) {

return highlighter.codeToHtml(code, {
lang,
theme: useShikijiTheme(),
theme: useShikiTheme(),
})
}
4 changes: 2 additions & 2 deletions composables/tiptap.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ import { Plugin } from 'prosemirror-state'

import type { Ref } from 'vue'
import { TiptapEmojiSuggestion, TiptapHashtagSuggestion, TiptapMentionSuggestion } from './tiptap/suggestion'
import { TiptapPluginCodeBlockShikiji } from './tiptap/shikiji'
import { TiptapPluginCodeBlockShiki } from './tiptap/shiki'
import { TiptapPluginCustomEmoji } from './tiptap/custom-emoji'
import { TiptapPluginEmoji } from './tiptap/emoji'

Expand Down Expand Up @@ -70,7 +70,7 @@ export function useTiptap(options: UseTiptapOptions) {
Placeholder.configure({
placeholder: () => placeholder.value!,
}),
TiptapPluginCodeBlockShikiji,
TiptapPluginCodeBlockShiki,
History.configure({
depth: 10,
}),
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
import { type Parser, createParser } from 'prosemirror-highlight/shikiji'
import type { BuiltinLanguage } from 'shikiji/langs'
import { type Parser, createParser } from 'prosemirror-highlight/shiki'
import type { BuiltinLanguage } from 'shiki'

let parser: Parser | undefined

export const shikijiParser: Parser = (options) => {
export const shikiParser: Parser = (options) => {
const lang = options.language ?? 'text'

// Register the language if it's not yet registered
Expand Down
6 changes: 3 additions & 3 deletions composables/tiptap/shikiji.ts → composables/tiptap/shiki.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,10 @@ import CodeBlock from '@tiptap/extension-code-block'
import { VueNodeViewRenderer } from '@tiptap/vue-3'

import { createHighlightPlugin } from 'prosemirror-highlight'
import { shikijiParser } from './shikiji-parser'
import { shikiParser } from './shiki-parser'
import TiptapCodeBlock from '~/components/tiptap/TiptapCodeBlock.vue'

export const TiptapPluginCodeBlockShikiji = CodeBlock.extend({
export const TiptapPluginCodeBlockShiki = CodeBlock.extend({
addOptions() {
return {
...this.parent?.(),
Expand All @@ -15,7 +15,7 @@ export const TiptapPluginCodeBlockShikiji = CodeBlock.extend({

addProseMirrorPlugins() {
return [
createHighlightPlugin({ parser: shikijiParser, nodeTypes: ['codeBlock'] }),
createHighlightPlugin({ parser: shikiParser, nodeTypes: ['codeBlock'] }),
]
},

Expand Down
10 changes: 6 additions & 4 deletions composables/tiptap/suggestion.ts
Original file line number Diff line number Diff line change
Expand Up @@ -62,13 +62,15 @@ export const TiptapEmojiSuggestion: Partial<SuggestionOptions> = {
if (currentCustomEmojis.value.emojis.length === 0)
await updateCustomEmojis()

const emojis = await import('@emoji-mart/data')
.then(r => r.default as EmojiMartData)
.then(data => Object.values(data.emojis).filter(({ id }) => id.startsWith(query)))
const lowerCaseQuery = query.toLowerCase()

const { data } = await useAsyncData<EmojiMartData>('emoji-data', () => import('@emoji-mart/data').then(r => r.default as EmojiMartData))
const emojis: Emoji[] = Object.values(data.value?.emojis || []).filter(({ id }) => id.toLowerCase().startsWith(lowerCaseQuery))

const customEmojis: CustomEmoji[] = currentCustomEmojis.value.emojis
.filter(emoji => emoji.shortcode.startsWith(query))
.filter(emoji => emoji.shortcode.toLowerCase().startsWith(lowerCaseQuery))
.map(emoji => ({ ...emoji, custom: true }))

return [...emojis, ...customEmojis]
},
command: ({ editor, props, range }) => {
Expand Down
2 changes: 1 addition & 1 deletion docs/content/1.guide/3.contributing.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,5 +49,5 @@ nr test
- [UnoCSS](https://uno.antfu.me/) - The instant on-demand atomic CSS engine
- [Iconify](https://github.com/iconify/icon-sets#iconify-icon-sets-in-json-format) - Iconify icon sets in JSON format
- [Masto.js](https://neet.github.io/masto.js) - Mastodon API client in TypeScript
- [shikiji](https://shikiji.netlify.app/) - A beautiful and powerful syntax highlighter
- [shiki](https://shiki.style/) - A beautiful yet powerful syntax highlighter
- [vite-plugin-pwa](https://github.com/vite-pwa/vite-plugin-pwa) - Prompt for update, Web Push Notifications and Web Share Target API
23 changes: 16 additions & 7 deletions locales/eu-ES.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
"follows_you": "Jarraitzen dizu",
"go_to_profile": "Joan profilera",
"joined": "Batze-data:",
"lock": "Pribatua",
"moved_title": "adierazi du bere kontua aurrerantzean honakoa izango dela:",
"muted_users": "Mutututako erabiltzaileak",
"muting": "Mutututa",
Expand Down Expand Up @@ -120,12 +121,14 @@
"block_account": {
"cancel": "Utzi",
"confirm": "Blokeatu",
"description": "Ziur {0} blokeatu nahi duzula?"
"description": "Ziur {0} blokeatu nahi duzula?",
"title": "Blokeatu kontua"
},
"block_domain": {
"cancel": "Utzi",
"confirm": "Blokeatu",
"description": "Ziur {0} domeinua blokeatu nahi duzula?"
"description": "Ziur {0} domeinua blokeatu nahi duzula?",
"title": "Blokeatu domeinua"
},
"common": {
"cancel": "Ez",
Expand All @@ -134,27 +137,32 @@
"delete_list": {
"cancel": "Utzi",
"confirm": "Ezabatu",
"description": "Ziur \"{0}\" zerrenda ezabatu nahi duzula?"
"description": "Ziur \"{0}\" zerrenda ezabatu nahi duzula?",
"title": "Ezabatu zerrenda"
},
"delete_posts": {
"cancel": "Utzi",
"confirm": "Ezabatu",
"description": "Ziur bidalketa hau ezabatu nahi duzula?"
"description": "Ziur bidalketa hau ezabatu nahi duzula?",
"title": "Ezabatu bidalketa"
},
"mute_account": {
"cancel": "Utzi",
"confirm": "Mututu",
"description": "Ziur {0} mututu nahi duzula?"
"description": "Ziur {0} mututu nahi duzula?",
"title": "Mututu kontua"
},
"show_reblogs": {
"cancel": "Utzi",
"confirm": "Erakutsi",
"description": "Ziur {0}(r)en bultzadak ikusi nahi dituzula?"
"description": "Ziur {0}(r)en bultzadak ikusi nahi dituzula?",
"title": "Erakutsi bultzadak"
},
"unfollow": {
"cancel": "Utzi",
"confirm": "Utzi jarraitzeari",
"description": "Ziur jarraitzeari utzi nahi diozula?"
"description": "Ziur jarraitzeari utzi nahi diozula?",
"title": "Utzi jarraitzeari"
}
},
"conversation": {
Expand Down Expand Up @@ -521,6 +529,7 @@
"hide_username_emojis": "Ezkutatu emojiak erabiltzaile izenetan",
"hide_username_emojis_description": "Denbora-lerroetan erabiltzaile izenetako emojiak ezkutatzen ditu. Emojiak ikusgai egoten jarraituko dute euren profiletan.",
"label": "Hobespenak",
"optimize_for_low_performance_device": "Optimizatu errendimendu baxuko gailuetarako",
"title": "Ezaugarri esperimentalak",
"use_star_favorite_icon": "Erabili izarraren ikonoa gogokoetarako",
"user_picker": "Erabiltzaile hautatzailea",
Expand Down
32 changes: 17 additions & 15 deletions locales/ja-JP.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,8 @@
"follows_you": "フォローされています",
"go_to_profile": "プロフィールに移動",
"joined": "登録日",
"moved_title": "さんの新しいアカウントは現在のこちらです",
"lock": "非公開",
"moved_title": "さんの新しいアカウントは現在こちらです",
"muted_users": "ミュートしたユーザー",
"muting": "ミュート済み",
"mutuals": "相互フォロー",
Expand Down Expand Up @@ -95,7 +96,7 @@
"switch_account": "{0} に切り替える",
"switch_account_desc": "他のアカウントに切り替える",
"toggle_dark_mode": "ダークモードに切り替える",
"toggle_zen_mode": "禅モードを切り替える"
"toggle_zen_mode": "禅モードに切り替える"
},
"common": {
"end_of_list": "リストの最後です",
Expand Down Expand Up @@ -164,7 +165,7 @@
},
"error": {
"account_not_found": "アカウント {0} が見つかりません",
"explore_list_empty": "現在トレンドには何もありません。あとで確認してください",
"explore_list_empty": "現在トレンドには何もありません。またあとで",
"file_size_cannot_exceed_n_mb": "ファイルサイズは{0}MBを超えてはいけません",
"sign_in_error": "サーバーに接続できません。",
"status_not_found": "投稿が見つかりません",
Expand All @@ -173,11 +174,11 @@
"help": {
"build_preview": {
"desc1": "あなたは現在、コミュニティから提供されたプレビュー版のElkを表示しています - {0}。",
"desc2": "まだレビューされていない変更や、害がある変更が含まれている可能性もあります",
"desc2": "まだレビューされていない変更や、有害な変更が含まれている可能性もあります",
"desc3": "実際のアカウントでは決してログインしないでください。",
"title": "プレビューデプロイ"
},
"desc_highlight": "いくつかのバグや足りない機能がいろいろなところにあることが期待されています",
"desc_highlight": "バグや足りない機能があちこちにある想定です",
"desc_para1": "開発中のMastodonウェブクライアントのElkに興味を持って試してくれてありがとうございます!",
"desc_para2": "私たちは時間をかけて開発と改善に努めています。",
"desc_para3": "開発を進めるために、GitHubスポンサーでチームをサポートできます。Elkを楽しんでくれることを願っています!",
Expand Down Expand Up @@ -298,7 +299,7 @@
"zen_mode": "禅モード"
},
"notification": {
"favourited_post": "さんがあなたの投稿お気に入り登録しました",
"favourited_post": "さんがあなたの投稿をお気に入り登録しました",
"followed_you": "さんがあなたをフォローしました",
"followed_you_count": "{0}人のユーザーがあなたをフォローしました",
"missing_type": "MISSING notification.type:",
Expand Down Expand Up @@ -372,11 +373,11 @@
"further_actions": {
"limit": {
"description": "表示するものをコントロールするための選択肢はこちらです。",
"title": "これを見たくないですか"
"title": "これを見たくありませんか"
},
"report": {
"description": "私たちがこの報告をレビューしている間、あなたには以下のことができます。",
"title": "報告をありがとうございます。この報告を確認します"
"title": "報告ありがとうございます。確認します"
}
},
"limiting": "{0} を制限する",
Expand All @@ -389,7 +390,7 @@
"select_posts": "この報告を裏付ける投稿はありますか?",
"select_posts_other": "この報告を裏付ける他の投稿はありますか?",
"spam": "スパムです",
"spam_desc": "害のあるリンク、偽のエンゲージメント、または繰り返しの返信",
"spam_desc": "有害なリンク、偽のエンゲージメント、または繰り返しの返信",
"submit": "報告を送信",
"unfollow_desc": "このユーザーの投稿は今後、ホームフィードには表示されません。他の場所で同じ投稿が表示される可能性はあります。",
"violation": "1つ以上のサーバーのルールを破っています",
Expand Down Expand Up @@ -455,7 +456,7 @@
"title": "どの通知を受け取りますか?"
},
"description": "Elkを使用していないときでも通知を受け取ります。",
"instructions": "@:settings.notifications.push_notifications.save_settings ボタンで設定を保存するのを忘れないよう気をつけてください",
"instructions": "@:settings.notifications.push_notifications.save_settings ボタンで設定を保存するのを忘れないように",
"label": "プッシュ通知の設定",
"policy": {
"all": "誰からでも受け取る",
Expand All @@ -471,7 +472,7 @@
"invalid_vapid_key": "VAPID公開鍵が無効なようです。",
"permission_denied": "パーミッション拒否: ブラウザで通知を有効にしてください。",
"repo_link": "ElkのGitHubリポジトリ",
"request_error": "購読のリクエスト中にエラーが発生しました。再試行してエラーが続くかどうか確認してください。もしエラーが解消しない場合、Elkリポジトリにissueを報告してください。",
"request_error": "購読のリクエスト中にエラーが発生しました。再試行してもエラーが解消しない場合、Elkリポジトリにissueを報告してください。",
"title": "プッシュ通知を購読できませんでした",
"too_many_registrations": "ブラウザーの制限により、Elkは異なるサーバー上の複数アカウントに対してプッシュ通知サービスを使用できません。他のアカウントのプッシュ通知の購読を解除して、再購読する必要があります。",
"vapid_not_supported": "このブラウザはWeb Push通知をサポートしていませんが、VAPIDプロトコルをサポートしているようです。"
Expand Down Expand Up @@ -514,6 +515,7 @@
"hide_username_emojis": "ユーザー名の絵文字を隠す",
"hide_username_emojis_description": "タイムライン上でユーザー名に含まれる絵文字を隠します。プロフィールでは絵文字は引き続き表示されます。",
"label": "環境設定",
"optimize_for_low_performance_device": "処理能力が低いデバイス向けに最適化",
"title": "実験的機能",
"use_star_favorite_icon": "星のお気に入りアイコンを使用する",
"user_picker": "ユーザーピッカー",
Expand Down Expand Up @@ -569,7 +571,7 @@
},
"status": {
"account": {
"suspended_message": "この投稿のアカウントはサスペンドされました",
"suspended_message": "この投稿のアカウントは凍結されました",
"suspended_show": "それでもコンテンツを表示しますか?"
},
"boosted_by": "ブーストしたユーザー",
Expand Down Expand Up @@ -684,9 +686,9 @@
"open_editor_tools": "エディタツール",
"pick_an_icon": "アイコンの選択",
"publish_failed": "投稿の再公開時にエディタ上部のエラーメッセージを閉じる",
"toggle_bold": "太字を切り替える",
"toggle_code_block": "コードブロックを切り替える",
"toggle_italic": "イタリックを切り替える"
"toggle_bold": "太字",
"toggle_code_block": "コードブロック",
"toggle_italic": "斜体"
},
"user": {
"add_existing": "既存のアカウントを追加する",
Expand Down
2 changes: 2 additions & 0 deletions locales/pt.json
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
"follows_you": "Segue-o",
"go_to_profile": "Ir para o perfil",
"joined": "Juntou-se a",
"lock": "Privada",
"moved_title": "Indicou que a sua nova conta é agora:",
"muted_users": "Utilizadores silenciados",
"muting": "Silenciados",
Expand Down Expand Up @@ -528,6 +529,7 @@
"hide_username_emojis": "Esconder emojis do nome de utilizador",
"hide_username_emojis_description": "Esconde os emojis do nome de utilizador nas cronologias. Os Emojis continuarão a ser visíveis nos seus perfis.",
"label": "Preferências",
"optimize_for_low_performance_device": "Otimizar para dispositivos de menor desempenho",
"title": "Funcionalidades Experimentais",
"use_star_favorite_icon": "Utilizar estrela como ícone de favoritos",
"user_picker": "Selecionador de Utilizador",
Expand Down
Loading

0 comments on commit 0f009e0

Please sign in to comment.