@@ -8,6 +8,7 @@ import { useKeyPath } from '~~/composables/keys'
8
8
const route = useRoute ()
9
9
10
10
const imageRef = ref ()
11
+ const previewRef = ref ()
11
12
const mode = ref <' scale' | ' real' >(' scale' )
12
13
const config = inject <any >(' mediaViewerConfig' )
13
14
@@ -19,7 +20,7 @@ const isImage = computed(() => previewState?.stats?.mimetype?.startsWith('image/
19
20
20
21
const dragging = ref (false )
21
22
const offsetX = ref (0 )
22
- const offsetY = ref (0 )
23
+ const offsetY = ref (75 )
23
24
const initialX = ref (0 )
24
25
const initialY = ref (0 )
25
26
@@ -55,16 +56,20 @@ onBeforeUnmount(() => {
55
56
imageRef .value ?.removeEventListener (' mousedown' , onMousedown )
56
57
})
57
58
58
- watch (mode , () => {
59
+ watch ([mode , () => previewState ?.targetWidth ], () => {
60
+ const viewportWidth = previewRef .value ?.clientWidth ?? 0
61
+ const mediaWidth = previewState ?.targetWidth ?? 0
62
+ const centerX = (viewportWidth - mediaWidth ) / 2
63
+
59
64
initialX .value = 0
60
65
initialY .value = 0
61
- offsetX .value = 0
62
- offsetY .value = 0
66
+ offsetX .value = centerX
67
+ offsetY .value = 75
63
68
})
64
69
</script >
65
70
66
71
<template >
67
- <div class =" relative overflow-hidden rounded-l n-border-base border-r preview flex items-center justify-center" >
72
+ <div ref = " previewRef " class =" relative overflow-hidden rounded-l n-border-base border-r preview flex items-center justify-center" >
68
73
<div v-if =" !isImage" class =" rounded flex flex-col justify-center border select-none pointer-events-none n-border-base w-[150px] h-[150px] n-bg-base object-scale-down" >
69
74
<div class =" truncate w-full text-center" >
70
75
{{ previewState?.stats?.name }}
@@ -92,13 +97,13 @@ watch(mode, () => {
92
97
class =" prevent-drag block object-scale-down w-full max-w-full max-h-full"
93
98
tabindex =" 0"
94
99
>
95
- <div class =" absolute left-4 right -4 top-4 flex justify-between gap-2" >
100
+ <div class =" absolute actions w-full px -4 top-4 flex justify-between gap-2" >
96
101
<NButton
97
102
to =" /"
98
- icon =" carbon:arrow-left"
99
103
class =" n-bg-base"
100
104
>
101
- <span >Back</span >
105
+ <NIcon icon =" carbon:arrow-left" />
106
+ <span class =" hide-small ml-1" >Back <kbd class =" text-xs" >esc</kbd ></span >
102
107
</NButton >
103
108
<div >
104
109
<NButton
@@ -119,7 +124,7 @@ watch(mode, () => {
119
124
:disabled =" !isImage"
120
125
@click =" mode = 'real'"
121
126
>
122
- Real-size preview
127
+ Snippet preview
123
128
</NButton >
124
129
</div >
125
130
@@ -128,7 +133,8 @@ watch(mode, () => {
128
133
target =" _blank"
129
134
class =" n-bg-base"
130
135
>
131
- Open in new tab
136
+ <span class =" hide-small mr-1" >Open</span >
137
+ <NIcon icon =" carbon:image-reference" />
132
138
</NButton >
133
139
</div >
134
140
</div >
@@ -150,4 +156,23 @@ watch(mode, () => {
150
156
-o-user-drag : none ;
151
157
user-drag : none ;
152
158
}
159
+
160
+ .actions {
161
+ container-type : inline-size;
162
+ container-name : actions;
163
+ }
164
+ .hide-small {
165
+ display : initial ;
166
+ }
167
+ .only-small {
168
+ display : none ;
169
+ }
170
+ @container actions (max-width: 600px) {
171
+ .hide-small {
172
+ display : none ;
173
+ }
174
+ .only-small {
175
+ display : initial ;
176
+ }
177
+ }
153
178
</style >
0 commit comments