From 520ede4d632ad5062c76630a672073987281176d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=8B=E3=81=A3=E3=81=93=E3=81=8B=E3=82=8A?= <67428053+kakkokari-gtyih@users.noreply.github.com> Date: Sun, 12 Jul 2026 00:05:40 +0900 Subject: [PATCH] Improve image viewer (#17696) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * wip * fix * fix * :art: * fix * fix: Video要素をpropsで渡すのをやめる * :art: * fix * wip * fix * fix: 画面外にドラッグできるのを修正 * fix lint * fix * fix * fix * refactor * add comment * fix: 画像を新しいタブで開くが機能しなくなっていた問題を修正 * fix * clean up * attempt to fix * fix * enhance: ブラウザの戻るボタンで閉じる * Revert "fix: 画面外にドラッグできるのを修正" This reverts commit ea2ddc2620fec182e74350d7c3bccf2d9fc67514. * Reapply "fix: 画面外にドラッグできるのを修正" This reverts commit 87171980a7aca85a96e88b309609a7f54e6bb4bd. * fix * fix: 存在しない要素がsourceElementのときに閉じると画像が飛んでいく問題を修正 * fix: clampに余白を追加 * fix duplicated condition * fix * fix typo --- packages/frontend/src/boot/common.ts | 5 + .../frontend/src/components/MkBlurhash.vue | 183 ++++++ .../MkImageGallery.item.fileinfo.vue | 39 ++ .../src/components/MkImageGallery.item.vue | 520 +++++++++++++++--- .../src/components/MkImageGallery.vue | 54 +- .../src/components/MkImgWithBlurhash.vue | 165 +----- .../frontend/src/components/MkMediaAudio.vue | 70 +-- .../frontend/src/components/MkMediaImage.vue | 87 +-- .../frontend/src/components/MkMediaList.vue | 36 +- .../frontend/src/components/MkMediaVideo.vue | 109 ++-- .../{MkVideoContol.vue => MkVideoControl.vue} | 93 ++-- packages/frontend/src/di.ts | 1 + .../src/utility/get-drive-file-menu.ts | 1 + .../frontend/src/utility/get-file-menu.ts | 83 +++ .../frontend/src/utility/sensitive-file.ts | 4 +- 15 files changed, 969 insertions(+), 481 deletions(-) create mode 100644 packages/frontend/src/components/MkBlurhash.vue create mode 100644 packages/frontend/src/components/MkImageGallery.item.fileinfo.vue rename packages/frontend/src/components/{MkVideoContol.vue => MkVideoControl.vue} (71%) create mode 100644 packages/frontend/src/utility/get-file-menu.ts diff --git a/packages/frontend/src/boot/common.ts b/packages/frontend/src/boot/common.ts index 4c670a44f1..4c5e601dae 100644 --- a/packages/frontend/src/boot/common.ts +++ b/packages/frontend/src/boot/common.ts @@ -99,6 +99,11 @@ export async function common(createVue: () => Promise>) { // タッチデバイスでCSSの:hoverを機能させる window.document.addEventListener('touchend', () => {}, { passive: true }); + // URLに#pswpを含む場合は取り除く + if (window.location.hash === '#pswp') { + window.history.replaceState(null, '', window.location.href.replace('#pswp', '')); + } + // 一斉リロード reloadChannel.addEventListener('message', path => { if (path !== null) window.location.href = path; diff --git a/packages/frontend/src/components/MkBlurhash.vue b/packages/frontend/src/components/MkBlurhash.vue new file mode 100644 index 0000000000..5000fe111b --- /dev/null +++ b/packages/frontend/src/components/MkBlurhash.vue @@ -0,0 +1,183 @@ + + + + + + + diff --git a/packages/frontend/src/components/MkImageGallery.item.fileinfo.vue b/packages/frontend/src/components/MkImageGallery.item.fileinfo.vue new file mode 100644 index 0000000000..7bf38194a0 --- /dev/null +++ b/packages/frontend/src/components/MkImageGallery.item.fileinfo.vue @@ -0,0 +1,39 @@ + + + + + + + diff --git a/packages/frontend/src/components/MkImageGallery.item.vue b/packages/frontend/src/components/MkImageGallery.item.vue index d4969e75f8..202184eae6 100644 --- a/packages/frontend/src/components/MkImageGallery.item.vue +++ b/packages/frontend/src/components/MkImageGallery.item.vue @@ -20,48 +20,89 @@ SPDX-License-Identifier: AGPL-3.0-only @touchcancel.passive="cancelPointerGesture" @contextmenu="cancelPointerGesture" @wheel="onWheel" - @click="onCLick" + @click="onClick" >
- - - - -
- +
+ + +
+
+
+ {{ i18n.ts.sensitive }} + {{ content.type === 'image' ? i18n.ts.image : i18n.ts.video }} + {{ i18n.ts.clickToShow }} +
+
+
+
@@ -69,22 +110,25 @@ SPDX-License-Identifier: AGPL-3.0-only
-
- {{ content.comment ?? content.filename }} +
+ {{ content.filename }}
-
- +
+
diff --git a/packages/frontend/src/components/MkVideoContol.vue b/packages/frontend/src/components/MkVideoControl.vue similarity index 71% rename from packages/frontend/src/components/MkVideoContol.vue rename to packages/frontend/src/components/MkVideoControl.vue index 2046b1c18b..24d9fecb91 100644 --- a/packages/frontend/src/components/MkVideoContol.vue +++ b/packages/frontend/src/components/MkVideoControl.vue @@ -39,20 +39,16 @@ SPDX-License-Identifier: AGPL-3.0-only