@hh.ru/magritte-ui-media-viewer 1.4.1 → 1.4.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.css +73 -70
- package/index.js +1 -1
- package/internal/Counter.js +1 -1
- package/internal/GalleryItemBody.js +1 -1
- package/internal/PreviewItem.js +1 -1
- package/internal/PreviewItemBody.js +1 -1
- package/internal/PreviewZoomControl.js +1 -1
- package/internal/Slide.js +1 -1
- package/internal/VideoItemBody.d.ts +5 -0
- package/internal/VideoItemBody.js +14 -20
- package/internal/VideoItemBody.js.map +1 -1
- package/internal/slides.js +1 -1
- package/internal/toolsVisibility.d.ts +13 -12
- package/internal/toolsVisibility.js +22 -23
- package/internal/toolsVisibility.js.map +1 -1
- package/media-viewer-OWOdMZcE.js +5 -0
- package/media-viewer-OWOdMZcE.js.map +1 -0
- package/package.json +4 -4
- package/public/Footer.js +9 -2
- package/public/Footer.js.map +1 -1
- package/public/Gallery.js +1 -1
- package/public/GalleryItem.js +1 -1
- package/public/Header.js +1 -1
- package/public/MediaViewer.js +1 -1
- package/public/Preview.js +1 -1
- package/public/Toolbar.js +1 -1
- package/public/VideoItem.js +1 -1
- package/media-viewer-BOgoSXlr.js +0 -5
- package/media-viewer-BOgoSXlr.js.map +0 -1
package/index.css
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
.magritte-night-theme{
|
|
16
16
|
--magritte-color-component-skeleton-background-content-v26-0-2:#5e5e5e3d;
|
|
17
17
|
}
|
|
18
|
-
.magritte-media-viewer___KnrXP_1-4-
|
|
18
|
+
.magritte-media-viewer___KnrXP_1-4-3{
|
|
19
19
|
position:fixed;
|
|
20
20
|
inset:0;
|
|
21
21
|
display:grid;
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
--media-viewer-background-opacity:calc(1 - var(--magritte-ui-media-viewer-close-progress));
|
|
29
29
|
--magritte-ui-nav-bar-background-color-override:var(--magritte-color-background-overlay-toolbar-v26-0-2);
|
|
30
30
|
}
|
|
31
|
-
.magritte-media-viewer___KnrXP_1-4-
|
|
31
|
+
.magritte-media-viewer___KnrXP_1-4-3::before{
|
|
32
32
|
content:'';
|
|
33
33
|
position:absolute;
|
|
34
34
|
inset:0;
|
|
@@ -36,13 +36,13 @@
|
|
|
36
36
|
opacity:var(--media-viewer-background-opacity);
|
|
37
37
|
pointer-events:none;
|
|
38
38
|
}
|
|
39
|
-
.magritte-gallery-placeholder___rUoGL_1-4-
|
|
39
|
+
.magritte-gallery-placeholder___rUoGL_1-4-3{
|
|
40
40
|
display:flex;
|
|
41
41
|
align-items:stretch;
|
|
42
42
|
grid-area:gallery;
|
|
43
43
|
min-height:0;
|
|
44
44
|
}
|
|
45
|
-
.magritte-media-viewer-gallery___P0SnN_1-4-
|
|
45
|
+
.magritte-media-viewer-gallery___P0SnN_1-4-3{
|
|
46
46
|
display:grid;
|
|
47
47
|
flex-grow:1;
|
|
48
48
|
contain:layout size;
|
|
@@ -51,16 +51,16 @@
|
|
|
51
51
|
inset:0;
|
|
52
52
|
}
|
|
53
53
|
@media (min-width: 1020px){
|
|
54
|
-
body.magritte-old-layout .magritte-media-viewer-gallery___P0SnN_1-4-
|
|
54
|
+
body.magritte-old-layout .magritte-media-viewer-gallery___P0SnN_1-4-3{
|
|
55
55
|
position:relative;
|
|
56
56
|
}
|
|
57
57
|
}
|
|
58
58
|
@media (min-width: 1024px){
|
|
59
|
-
body:not(.magritte-old-layout) .magritte-media-viewer-gallery___P0SnN_1-4-
|
|
59
|
+
body:not(.magritte-old-layout) .magritte-media-viewer-gallery___P0SnN_1-4-3{
|
|
60
60
|
position:relative;
|
|
61
61
|
}
|
|
62
62
|
}
|
|
63
|
-
.magritte-gallery-item___Js0Z5_1-4-
|
|
63
|
+
.magritte-gallery-item___Js0Z5_1-4-3{
|
|
64
64
|
position:relative;
|
|
65
65
|
grid-area:1 / 1;
|
|
66
66
|
contain:size;
|
|
@@ -69,7 +69,7 @@
|
|
|
69
69
|
overflow-y:visible;
|
|
70
70
|
opacity:calc(1 - var(--magritte-ui-media-viewer-image-close-progress, 0));
|
|
71
71
|
}
|
|
72
|
-
.magritte-gallery-item-transform-container___N8-sA_1-4-
|
|
72
|
+
.magritte-gallery-item-transform-container___N8-sA_1-4-3{
|
|
73
73
|
position:absolute;
|
|
74
74
|
top:50%;
|
|
75
75
|
left:50%;
|
|
@@ -77,37 +77,37 @@
|
|
|
77
77
|
will-change:transform;
|
|
78
78
|
touch-action:none;
|
|
79
79
|
}
|
|
80
|
-
.magritte-preview-counter___uP2Hc_1-4-
|
|
80
|
+
.magritte-preview-counter___uP2Hc_1-4-3{
|
|
81
81
|
min-width:0;
|
|
82
82
|
text-align:center;
|
|
83
83
|
}
|
|
84
84
|
@media (min-width: 1020px){
|
|
85
|
-
body.magritte-old-layout .magritte-preview-counter___uP2Hc_1-4-
|
|
85
|
+
body.magritte-old-layout .magritte-preview-counter___uP2Hc_1-4-3{
|
|
86
86
|
text-align:left;
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
89
|
@media (min-width: 1024px){
|
|
90
|
-
body:not(.magritte-old-layout) .magritte-preview-counter___uP2Hc_1-4-
|
|
90
|
+
body:not(.magritte-old-layout) .magritte-preview-counter___uP2Hc_1-4-3{
|
|
91
91
|
text-align:left;
|
|
92
92
|
}
|
|
93
93
|
}
|
|
94
|
-
.magritte-preview-counter___uP2Hc_1-4-
|
|
94
|
+
.magritte-preview-counter___uP2Hc_1-4-3.magritte-with-description___-w7ld_1-4-3{
|
|
95
95
|
cursor:pointer;
|
|
96
96
|
}
|
|
97
|
-
.magritte-counter-number___gUpMp_1-4-
|
|
97
|
+
.magritte-counter-number___gUpMp_1-4-3{
|
|
98
98
|
display:block;
|
|
99
99
|
transform:translateY(calc(18px * 0.5));
|
|
100
100
|
transition:transform var(--magritte-semantic-animation-time-m-duration-v26-0-2) var(--magritte-semantic-animation-ease-base-timing-function-v26-0-2);
|
|
101
101
|
}
|
|
102
|
-
.magritte-with-description___-w7ld_1-4-
|
|
102
|
+
.magritte-with-description___-w7ld_1-4-3 .magritte-counter-number___gUpMp_1-4-3{
|
|
103
103
|
transform:translateY(0);
|
|
104
104
|
}
|
|
105
|
-
.magritte-no-description-placeholder___qc6h2_1-4-
|
|
105
|
+
.magritte-no-description-placeholder___qc6h2_1-4-3{
|
|
106
106
|
display:block;
|
|
107
107
|
height:18px;
|
|
108
108
|
padding:0;
|
|
109
109
|
}
|
|
110
|
-
.magritte-preview-zoom-control___026jA_1-4-
|
|
110
|
+
.magritte-preview-zoom-control___026jA_1-4-3{
|
|
111
111
|
display:flex;
|
|
112
112
|
flex-direction:row;
|
|
113
113
|
gap:2px;
|
|
@@ -115,7 +115,7 @@
|
|
|
115
115
|
justify-self:end;
|
|
116
116
|
grid-column:3;
|
|
117
117
|
}
|
|
118
|
-
.magritte-preview-container___nwjNY_1-4-
|
|
118
|
+
.magritte-preview-container___nwjNY_1-4-3{
|
|
119
119
|
display:grid;
|
|
120
120
|
grid-template-columns:1fr auto 1fr;
|
|
121
121
|
gap:16px;
|
|
@@ -126,16 +126,16 @@
|
|
|
126
126
|
z-index:10;
|
|
127
127
|
}
|
|
128
128
|
@media (min-width: 1020px){
|
|
129
|
-
body.magritte-old-layout .magritte-preview-container___nwjNY_1-4-
|
|
129
|
+
body.magritte-old-layout .magritte-preview-container___nwjNY_1-4-3{
|
|
130
130
|
padding:16px 24px;
|
|
131
131
|
}
|
|
132
132
|
}
|
|
133
133
|
@media (min-width: 1024px){
|
|
134
|
-
body:not(.magritte-old-layout) .magritte-preview-container___nwjNY_1-4-
|
|
134
|
+
body:not(.magritte-old-layout) .magritte-preview-container___nwjNY_1-4-3{
|
|
135
135
|
padding:16px 24px;
|
|
136
136
|
}
|
|
137
137
|
}
|
|
138
|
-
.magritte-preview___0Ge4C_1-4-
|
|
138
|
+
.magritte-preview___0Ge4C_1-4-3{
|
|
139
139
|
display:flex;
|
|
140
140
|
flex-direction:row;
|
|
141
141
|
touch-action:none;
|
|
@@ -143,18 +143,18 @@
|
|
|
143
143
|
min-width:0;
|
|
144
144
|
}
|
|
145
145
|
@media (min-width: 1020px){
|
|
146
|
-
body.magritte-old-layout .magritte-preview___0Ge4C_1-4-
|
|
146
|
+
body.magritte-old-layout .magritte-preview___0Ge4C_1-4-3{
|
|
147
147
|
max-width:calc(((40 + 8) * (var(--media-viewer-max-visible-items) - 1) + 80) * 1px);
|
|
148
148
|
overflow:hidden;
|
|
149
149
|
}
|
|
150
150
|
}
|
|
151
151
|
@media (min-width: 1024px){
|
|
152
|
-
body:not(.magritte-old-layout) .magritte-preview___0Ge4C_1-4-
|
|
152
|
+
body:not(.magritte-old-layout) .magritte-preview___0Ge4C_1-4-3{
|
|
153
153
|
max-width:calc(((40 + 8) * (var(--media-viewer-max-visible-items) - 1) + 80) * 1px);
|
|
154
154
|
overflow:hidden;
|
|
155
155
|
}
|
|
156
156
|
}
|
|
157
|
-
.magritte-preview-list___SAXLZ_1-4-
|
|
157
|
+
.magritte-preview-list___SAXLZ_1-4-3{
|
|
158
158
|
margin-left:50%;
|
|
159
159
|
contain:layout paint;
|
|
160
160
|
display:flex;
|
|
@@ -164,18 +164,18 @@
|
|
|
164
164
|
flex:0 0 auto;
|
|
165
165
|
}
|
|
166
166
|
@media (min-width: 1020px){
|
|
167
|
-
body.magritte-old-layout .magritte-preview-list___SAXLZ_1-4-
|
|
167
|
+
body.magritte-old-layout .magritte-preview-list___SAXLZ_1-4-3{
|
|
168
168
|
margin:0;
|
|
169
169
|
gap:8px;
|
|
170
170
|
}
|
|
171
171
|
}
|
|
172
172
|
@media (min-width: 1024px){
|
|
173
|
-
body:not(.magritte-old-layout) .magritte-preview-list___SAXLZ_1-4-
|
|
173
|
+
body:not(.magritte-old-layout) .magritte-preview-list___SAXLZ_1-4-3{
|
|
174
174
|
margin:0;
|
|
175
175
|
gap:8px;
|
|
176
176
|
}
|
|
177
177
|
}
|
|
178
|
-
.magritte-preview-item___gz5f2_1-4-
|
|
178
|
+
.magritte-preview-item___gz5f2_1-4-3{
|
|
179
179
|
contain:layout paint size;
|
|
180
180
|
position:relative;
|
|
181
181
|
flex-shrink:0;
|
|
@@ -189,33 +189,33 @@
|
|
|
189
189
|
background-color:var(--magritte-color-component-skeleton-background-content-v26-0-2);
|
|
190
190
|
}
|
|
191
191
|
@media (min-width: 1020px){
|
|
192
|
-
body.magritte-old-layout .magritte-preview-item___gz5f2_1-4-
|
|
192
|
+
body.magritte-old-layout .magritte-preview-item___gz5f2_1-4-3{
|
|
193
193
|
height:80px;
|
|
194
194
|
border-radius:8px;
|
|
195
195
|
}
|
|
196
196
|
}
|
|
197
197
|
@media (min-width: 1024px){
|
|
198
|
-
body:not(.magritte-old-layout) .magritte-preview-item___gz5f2_1-4-
|
|
198
|
+
body:not(.magritte-old-layout) .magritte-preview-item___gz5f2_1-4-3{
|
|
199
199
|
height:80px;
|
|
200
200
|
border-radius:8px;
|
|
201
201
|
}
|
|
202
202
|
}
|
|
203
|
-
.magritte-preview-item-container___JDVsk_1-4-
|
|
203
|
+
.magritte-preview-item-container___JDVsk_1-4-3{
|
|
204
204
|
contain:layout paint size;
|
|
205
205
|
overflow:hidden;
|
|
206
206
|
scale:1;
|
|
207
207
|
}
|
|
208
208
|
@media (min-width: 1020px){
|
|
209
|
-
body.magritte-old-layout .magritte-preview-item-container___JDVsk_1-4-
|
|
209
|
+
body.magritte-old-layout .magritte-preview-item-container___JDVsk_1-4-3{
|
|
210
210
|
scale:1.66666667;
|
|
211
211
|
}
|
|
212
212
|
}
|
|
213
213
|
@media (min-width: 1024px){
|
|
214
|
-
body:not(.magritte-old-layout) .magritte-preview-item-container___JDVsk_1-4-
|
|
214
|
+
body:not(.magritte-old-layout) .magritte-preview-item-container___JDVsk_1-4-3{
|
|
215
215
|
scale:1.66666667;
|
|
216
216
|
}
|
|
217
217
|
}
|
|
218
|
-
.magritte-preview-item-container___JDVsk_1-4-
|
|
218
|
+
.magritte-preview-item-container___JDVsk_1-4-3 *{
|
|
219
219
|
touch-action:none;
|
|
220
220
|
position:absolute;
|
|
221
221
|
top:0;
|
|
@@ -225,7 +225,7 @@
|
|
|
225
225
|
height:100%;
|
|
226
226
|
user-select:none;
|
|
227
227
|
}
|
|
228
|
-
.magritte-media-viewer-toolbar___2C8nr_1-4-
|
|
228
|
+
.magritte-media-viewer-toolbar___2C8nr_1-4-3{
|
|
229
229
|
background:var(--magritte-color-background-overlay-toolbar-v26-0-2);
|
|
230
230
|
padding:0 8px;
|
|
231
231
|
display:grid;
|
|
@@ -236,30 +236,30 @@
|
|
|
236
236
|
grid-area:toolbar;
|
|
237
237
|
z-index:10;
|
|
238
238
|
}
|
|
239
|
-
.magritte-media-viewer-toolbar___2C8nr_1-4-
|
|
239
|
+
.magritte-media-viewer-toolbar___2C8nr_1-4-3.magritte-no-description___NebrT_1-4-3{
|
|
240
240
|
display:flex;
|
|
241
241
|
justify-content:space-between;
|
|
242
242
|
}
|
|
243
243
|
@media (min-width: 1020px){
|
|
244
|
-
body.magritte-old-layout .magritte-media-viewer-toolbar___2C8nr_1-4-
|
|
244
|
+
body.magritte-old-layout .magritte-media-viewer-toolbar___2C8nr_1-4-3{
|
|
245
245
|
display:none;
|
|
246
246
|
}
|
|
247
247
|
}
|
|
248
248
|
@media (min-width: 1024px){
|
|
249
|
-
body:not(.magritte-old-layout) .magritte-media-viewer-toolbar___2C8nr_1-4-
|
|
249
|
+
body:not(.magritte-old-layout) .magritte-media-viewer-toolbar___2C8nr_1-4-3{
|
|
250
250
|
display:none;
|
|
251
251
|
}
|
|
252
252
|
}
|
|
253
|
-
.magritte-media-viewer-toolbar-left___YzkJt_1-4-
|
|
254
|
-
.magritte-media-viewer-toolbar-right___kBER9_1-4-
|
|
253
|
+
.magritte-media-viewer-toolbar-left___YzkJt_1-4-3,
|
|
254
|
+
.magritte-media-viewer-toolbar-right___kBER9_1-4-3{
|
|
255
255
|
display:flex;
|
|
256
256
|
gap:4px;
|
|
257
257
|
}
|
|
258
|
-
.magritte-media-viewer-toolbar-right___kBER9_1-4-
|
|
258
|
+
.magritte-media-viewer-toolbar-right___kBER9_1-4-3{
|
|
259
259
|
justify-content:end;
|
|
260
260
|
}
|
|
261
|
-
.magritte-prev-button___WMYjR_1-4-
|
|
262
|
-
.magritte-next-button___f8hJT_1-4-
|
|
261
|
+
.magritte-prev-button___WMYjR_1-4-3,
|
|
262
|
+
.magritte-next-button___f8hJT_1-4-3{
|
|
263
263
|
cursor:pointer;
|
|
264
264
|
position:absolute;
|
|
265
265
|
top:0;
|
|
@@ -267,40 +267,40 @@
|
|
|
267
267
|
width:48px;
|
|
268
268
|
opacity:var(--media-viewer-background-opacity);
|
|
269
269
|
}
|
|
270
|
-
.magritte-prev-button___WMYjR_1-4-
|
|
271
|
-
.magritte-next-button___f8hJT_1-4-
|
|
270
|
+
.magritte-prev-button___WMYjR_1-4-3:active,
|
|
271
|
+
.magritte-next-button___f8hJT_1-4-3:active{
|
|
272
272
|
background:linear-gradient(90deg, var(--magritte-gradient-component-media-viewer-background-fade-v26-0-2));
|
|
273
273
|
}
|
|
274
274
|
@media (min-width: 1020px){
|
|
275
|
-
body.magritte-old-layout .magritte-prev-button___WMYjR_1-4-
|
|
276
|
-
body.magritte-old-layout .magritte-next-button___f8hJT_1-4-
|
|
275
|
+
body.magritte-old-layout .magritte-prev-button___WMYjR_1-4-3,
|
|
276
|
+
body.magritte-old-layout .magritte-next-button___f8hJT_1-4-3{
|
|
277
277
|
width:88px;
|
|
278
278
|
}
|
|
279
|
-
body.magritte-old-layout .magritte-prev-button___WMYjR_1-4-
|
|
280
|
-
body.magritte-old-layout .magritte-next-button___f8hJT_1-4-
|
|
279
|
+
body.magritte-old-layout .magritte-prev-button___WMYjR_1-4-3:active,
|
|
280
|
+
body.magritte-old-layout .magritte-next-button___f8hJT_1-4-3:active{
|
|
281
281
|
background:none;
|
|
282
282
|
}
|
|
283
283
|
}
|
|
284
284
|
@media (min-width: 1024px){
|
|
285
|
-
body:not(.magritte-old-layout) .magritte-prev-button___WMYjR_1-4-
|
|
286
|
-
body:not(.magritte-old-layout) .magritte-next-button___f8hJT_1-4-
|
|
285
|
+
body:not(.magritte-old-layout) .magritte-prev-button___WMYjR_1-4-3,
|
|
286
|
+
body:not(.magritte-old-layout) .magritte-next-button___f8hJT_1-4-3{
|
|
287
287
|
width:88px;
|
|
288
288
|
}
|
|
289
|
-
body:not(.magritte-old-layout) .magritte-prev-button___WMYjR_1-4-
|
|
290
|
-
body:not(.magritte-old-layout) .magritte-next-button___f8hJT_1-4-
|
|
289
|
+
body:not(.magritte-old-layout) .magritte-prev-button___WMYjR_1-4-3:active,
|
|
290
|
+
body:not(.magritte-old-layout) .magritte-next-button___f8hJT_1-4-3:active{
|
|
291
291
|
background:none;
|
|
292
292
|
}
|
|
293
293
|
}
|
|
294
|
-
.magritte-prev-button___WMYjR_1-4-
|
|
294
|
+
.magritte-prev-button___WMYjR_1-4-3{
|
|
295
295
|
left:0;
|
|
296
296
|
}
|
|
297
|
-
.magritte-prev-button___WMYjR_1-4-
|
|
297
|
+
.magritte-prev-button___WMYjR_1-4-3:active{
|
|
298
298
|
background:linear-gradient(270deg, var(--magritte-gradient-component-media-viewer-background-fade-v26-0-2));
|
|
299
299
|
}
|
|
300
|
-
.magritte-next-button___f8hJT_1-4-
|
|
300
|
+
.magritte-next-button___f8hJT_1-4-3{
|
|
301
301
|
right:0;
|
|
302
302
|
}
|
|
303
|
-
.magritte-slide-button___sY8LB_1-4-
|
|
303
|
+
.magritte-slide-button___sY8LB_1-4-3{
|
|
304
304
|
display:flex;
|
|
305
305
|
background:none;
|
|
306
306
|
padding:0;
|
|
@@ -310,7 +310,7 @@
|
|
|
310
310
|
position:absolute;
|
|
311
311
|
inset:0;
|
|
312
312
|
}
|
|
313
|
-
.magritte-preview-placeholder___yuhW1_1-4-
|
|
313
|
+
.magritte-preview-placeholder___yuhW1_1-4-3{
|
|
314
314
|
--magritte-media-viewer-preview-width:24px;
|
|
315
315
|
--magritte-media-viewer-preview-gap:2px;
|
|
316
316
|
flex:0 0 auto;
|
|
@@ -319,24 +319,24 @@
|
|
|
319
319
|
flex-grow:0;
|
|
320
320
|
}
|
|
321
321
|
@media (min-width: 1020px){
|
|
322
|
-
body.magritte-old-layout .magritte-preview-placeholder___yuhW1_1-4-
|
|
322
|
+
body.magritte-old-layout .magritte-preview-placeholder___yuhW1_1-4-3{
|
|
323
323
|
--magritte-media-viewer-preview-width:40px;
|
|
324
324
|
--magritte-media-viewer-preview-gap:8px;
|
|
325
325
|
}
|
|
326
326
|
}
|
|
327
327
|
@media (min-width: 1024px){
|
|
328
|
-
body:not(.magritte-old-layout) .magritte-preview-placeholder___yuhW1_1-4-
|
|
328
|
+
body:not(.magritte-old-layout) .magritte-preview-placeholder___yuhW1_1-4-3{
|
|
329
329
|
--magritte-media-viewer-preview-width:40px;
|
|
330
330
|
--magritte-media-viewer-preview-gap:8px;
|
|
331
331
|
}
|
|
332
332
|
}
|
|
333
|
-
.magritte-gallery-item-loader___70TDe_1-4-
|
|
333
|
+
.magritte-gallery-item-loader___70TDe_1-4-3{
|
|
334
334
|
position:absolute;
|
|
335
335
|
top:50%;
|
|
336
336
|
left:50%;
|
|
337
337
|
transform:translate(-50%, -50%);
|
|
338
338
|
}
|
|
339
|
-
.magritte-gallery-item-error-container___Z-HyZ_1-4-
|
|
339
|
+
.magritte-gallery-item-error-container___Z-HyZ_1-4-3{
|
|
340
340
|
display:flex;
|
|
341
341
|
flex-direction:column;
|
|
342
342
|
align-items:center;
|
|
@@ -350,10 +350,10 @@
|
|
|
350
350
|
width:100%;
|
|
351
351
|
box-sizing:border-box;
|
|
352
352
|
}
|
|
353
|
-
.magritte-description-bottom-sheet-content___swnEV_1-4-
|
|
353
|
+
.magritte-description-bottom-sheet-content___swnEV_1-4-3{
|
|
354
354
|
padding:8px 0;
|
|
355
355
|
}
|
|
356
|
-
.magritte-header___egZXt_1-4-
|
|
356
|
+
.magritte-header___egZXt_1-4-3{
|
|
357
357
|
grid-area:header;
|
|
358
358
|
z-index:2;
|
|
359
359
|
opacity:var(--media-viewer-toolbars-opacity);
|
|
@@ -361,7 +361,7 @@
|
|
|
361
361
|
--magritte-ui-nav-bar-title-color-override:var(--magritte-color-text-constant-v26-0-2);
|
|
362
362
|
--magritte-ui-nav-bar-subtitle-color-override:var(--magritte-color-text-constant-secondary-v26-0-2);
|
|
363
363
|
}
|
|
364
|
-
.magritte-video-indicator-slot___FX0nD_1-4-
|
|
364
|
+
.magritte-video-indicator-slot___FX0nD_1-4-3{
|
|
365
365
|
position:relative;
|
|
366
366
|
grid-area:header;
|
|
367
367
|
z-index:1;
|
|
@@ -369,17 +369,17 @@
|
|
|
369
369
|
transform:translateY(calc(var(--magritte-ui-media-viewer-hide-tools-progress) * -100%));
|
|
370
370
|
pointer-events:none;
|
|
371
371
|
}
|
|
372
|
-
.magritte-video-indicator-slot-content___kir3R_1-4-
|
|
372
|
+
.magritte-video-indicator-slot-content___kir3R_1-4-3{
|
|
373
373
|
position:absolute;
|
|
374
374
|
top:100%;
|
|
375
375
|
right:0;
|
|
376
376
|
left:0;
|
|
377
377
|
}
|
|
378
|
-
.magritte-video-item-fill___SKpC3_1-4-
|
|
378
|
+
.magritte-video-item-fill___SKpC3_1-4-3{
|
|
379
379
|
position:absolute;
|
|
380
380
|
inset:0;
|
|
381
381
|
}
|
|
382
|
-
.magritte-video-item-controls___oe99H_1-4-
|
|
382
|
+
.magritte-video-item-controls___oe99H_1-4-3{
|
|
383
383
|
position:absolute;
|
|
384
384
|
right:0;
|
|
385
385
|
bottom:0;
|
|
@@ -388,22 +388,25 @@
|
|
|
388
388
|
opacity:var(--media-viewer-background-opacity);
|
|
389
389
|
}
|
|
390
390
|
@media (min-width: 1020px){
|
|
391
|
-
body.magritte-old-layout .magritte-video-item-controls___oe99H_1-4-
|
|
391
|
+
body.magritte-old-layout .magritte-video-item-controls___oe99H_1-4-3.magritte-video-item-controls-with-arrows___d1JxC_1-4-3{
|
|
392
392
|
padding:0 88px;
|
|
393
393
|
}
|
|
394
394
|
}
|
|
395
395
|
@media (min-width: 1024px){
|
|
396
|
-
body:not(.magritte-old-layout) .magritte-video-item-controls___oe99H_1-4-
|
|
396
|
+
body:not(.magritte-old-layout) .magritte-video-item-controls___oe99H_1-4-3.magritte-video-item-controls-with-arrows___d1JxC_1-4-3{
|
|
397
397
|
padding:0 88px;
|
|
398
398
|
}
|
|
399
399
|
}
|
|
400
|
-
.magritte-footer___rOH-M_1-4-
|
|
400
|
+
.magritte-footer___rOH-M_1-4-3{
|
|
401
401
|
grid-area:footer;
|
|
402
402
|
z-index:2;
|
|
403
403
|
opacity:var(--media-viewer-toolbars-opacity);
|
|
404
404
|
transform:translateY(calc(var(--magritte-ui-media-viewer-hide-tools-progress) * 100%));
|
|
405
405
|
}
|
|
406
|
-
.magritte-
|
|
406
|
+
.magritte-footer-video-controls___CYJnk_1-4-3{
|
|
407
|
+
background:var(--magritte-color-background-overlay-toolbar-v26-0-2);
|
|
408
|
+
}
|
|
409
|
+
.magritte-description___dYc-E_1-4-3{
|
|
407
410
|
display:inline-block;
|
|
408
411
|
max-width:100%;
|
|
409
412
|
}
|
package/index.js
CHANGED
|
@@ -18,7 +18,7 @@ import './internal/utils.js';
|
|
|
18
18
|
import './internal/hooks/useTapToToggleTools.js';
|
|
19
19
|
import './internal/hooks/useVirtualization.js';
|
|
20
20
|
import './public/Footer.js';
|
|
21
|
-
import './media-viewer-
|
|
21
|
+
import './media-viewer-OWOdMZcE.js';
|
|
22
22
|
import './public/Gallery.js';
|
|
23
23
|
import '@hh.ru/magritte-common-resize';
|
|
24
24
|
import '@hh.ru/magritte-ui-icon/icon';
|
package/internal/Counter.js
CHANGED
|
@@ -8,7 +8,7 @@ import { BottomSheet } from '@hh.ru/magritte-ui-bottom-sheet';
|
|
|
8
8
|
import { useMediaViewerContext } from './context.js';
|
|
9
9
|
import { TooltipHover } from '@hh.ru/magritte-ui-tooltip';
|
|
10
10
|
import { Text } from '@hh.ru/magritte-ui-typography';
|
|
11
|
-
import { s as styles } from '../media-viewer-
|
|
11
|
+
import { s as styles } from '../media-viewer-OWOdMZcE.js';
|
|
12
12
|
import './ImagesLoader.js';
|
|
13
13
|
import './toolsVisibility.js';
|
|
14
14
|
import '@hh.ru/magritte-design-tokens/core-tokens';
|
|
@@ -8,7 +8,7 @@ import { useSlideTransformStyle, Slide } from './Slide.js';
|
|
|
8
8
|
import { useMediaViewerContext, GalleryItemContext } from './context.js';
|
|
9
9
|
import { useGalleryItemController } from './hooks/useGalleryItemController.js';
|
|
10
10
|
import { Text } from '@hh.ru/magritte-ui-typography';
|
|
11
|
-
import { s as styles } from '../media-viewer-
|
|
11
|
+
import { s as styles } from '../media-viewer-OWOdMZcE.js';
|
|
12
12
|
import '@hh.ru/magritte-design-tokens/core-tokens';
|
|
13
13
|
import './animations.js';
|
|
14
14
|
import './hooks/useDoubleTapScale.js';
|
package/internal/PreviewItem.js
CHANGED
|
@@ -10,7 +10,7 @@ import '@hh.ru/magritte-ui-icon/icon';
|
|
|
10
10
|
import './utils.js';
|
|
11
11
|
import '@hh.ru/magritte-design-tokens/core-tokens';
|
|
12
12
|
import './animations.js';
|
|
13
|
-
import '../media-viewer-
|
|
13
|
+
import '../media-viewer-OWOdMZcE.js';
|
|
14
14
|
import './ImagesLoader.js';
|
|
15
15
|
import './toolsVisibility.js';
|
|
16
16
|
|
|
@@ -6,7 +6,7 @@ import { useBreakpoint } from '@hh.ru/magritte-ui-breakpoint';
|
|
|
6
6
|
import { PlayFilledSize24 } from '@hh.ru/magritte-ui-icon/icon';
|
|
7
7
|
import { useMediaViewerContext, usePreviewContext } from './context.js';
|
|
8
8
|
import { useDetectDiscreteChange, clamp } from './utils.js';
|
|
9
|
-
import { s as styles } from '../media-viewer-
|
|
9
|
+
import { s as styles } from '../media-viewer-OWOdMZcE.js';
|
|
10
10
|
import './ImagesLoader.js';
|
|
11
11
|
import './toolsVisibility.js';
|
|
12
12
|
import '@hh.ru/magritte-design-tokens/core-tokens';
|
|
@@ -9,7 +9,7 @@ import { EASE_BASE } from './animations.js';
|
|
|
9
9
|
import { useMediaViewerContext } from './context.js';
|
|
10
10
|
import { useInitOnce, findNextValue, getDimensionsAfterRotation, clampOffset } from './utils.js';
|
|
11
11
|
import { Text } from '@hh.ru/magritte-ui-typography';
|
|
12
|
-
import { s as styles } from '../media-viewer-
|
|
12
|
+
import { s as styles } from '../media-viewer-OWOdMZcE.js';
|
|
13
13
|
import './ImagesLoader.js';
|
|
14
14
|
import './toolsVisibility.js';
|
|
15
15
|
|
package/internal/Slide.js
CHANGED
|
@@ -11,7 +11,7 @@ import { usePan } from './hooks/usePan.js';
|
|
|
11
11
|
import { usePinchToZoom } from './hooks/usePinchToZoom.js';
|
|
12
12
|
import { useWheelToZoom } from './hooks/useWheelToZoom.js';
|
|
13
13
|
import { lerp, clamp } from './utils.js';
|
|
14
|
-
import { s as styles } from '../media-viewer-
|
|
14
|
+
import { s as styles } from '../media-viewer-OWOdMZcE.js';
|
|
15
15
|
import './ImagesLoader.js';
|
|
16
16
|
import './toolsVisibility.js';
|
|
17
17
|
import '@use-gesture/react';
|
|
@@ -2,6 +2,11 @@ import { type FC } from 'react';
|
|
|
2
2
|
import { type VideoProps } from '@hh.ru/magritte-ui-video/types';
|
|
3
3
|
/** Внешние пропсы VideoItem — то, что передаёт пользователь */
|
|
4
4
|
export interface VideoItemProps extends Pick<VideoProps, 'src' | 'sources' | 'preview' | 'duration' | 'attachMedia' | 'onPlay' | 'onPause' | 'onEnded' | 'onError'> {
|
|
5
|
+
/**
|
|
6
|
+
* Показывать бейдж длительности до начала воспроизведения
|
|
7
|
+
* @default false
|
|
8
|
+
*/
|
|
9
|
+
showDuration?: boolean;
|
|
5
10
|
/** Описание элемента */
|
|
6
11
|
description?: string;
|
|
7
12
|
}
|
|
@@ -10,7 +10,7 @@ import { useGalleryItemController } from './hooks/useGalleryItemController.js';
|
|
|
10
10
|
import { clamp } from './utils.js';
|
|
11
11
|
import { Video } from '@hh.ru/magritte-ui-video';
|
|
12
12
|
import { useVideoContext, useVideoState, VideoPlayerHostContext } from '@hh.ru/magritte-ui-video/internal/context';
|
|
13
|
-
import { s as styles } from '../media-viewer-
|
|
13
|
+
import { s as styles } from '../media-viewer-OWOdMZcE.js';
|
|
14
14
|
import '@hh.ru/magritte-design-tokens/core-tokens';
|
|
15
15
|
import './animations.js';
|
|
16
16
|
import './hooks/useDoubleTapScale.js';
|
|
@@ -26,7 +26,13 @@ const useMotionValueState = (value) => {
|
|
|
26
26
|
useMotionValueEvent(value, "change", (next) => setState(() => next));
|
|
27
27
|
return state;
|
|
28
28
|
};
|
|
29
|
-
const VideoSlideContent = ({
|
|
29
|
+
const VideoSlideContent = ({
|
|
30
|
+
index,
|
|
31
|
+
controller,
|
|
32
|
+
setContentSize,
|
|
33
|
+
slideControlsSlot,
|
|
34
|
+
showDuration
|
|
35
|
+
}) => {
|
|
30
36
|
const globalContext = useMediaViewerContext();
|
|
31
37
|
const { store } = useVideoContext("MediaViewer.VideoItem");
|
|
32
38
|
const size = useVideoState(store, (state) => state.size);
|
|
@@ -77,26 +83,13 @@ const VideoSlideContent = ({ index, controller, setContentSize, slideControlsSlo
|
|
|
77
83
|
globalContext.videoPlaying.set(true);
|
|
78
84
|
return () => globalContext.videoPlaying.set(false);
|
|
79
85
|
}, [lockSlideButtons, globalContext]);
|
|
80
|
-
|
|
81
|
-
if (!active || isMobile) {
|
|
82
|
-
return void 0;
|
|
83
|
-
}
|
|
84
|
-
document.addEventListener("mousemove", store.notifyActivity);
|
|
85
|
-
return () => document.removeEventListener("mousemove", store.notifyActivity);
|
|
86
|
-
}, [active, isMobile, store]);
|
|
87
|
-
const syncTools = active && isMobile && started;
|
|
86
|
+
const syncTools = active && started;
|
|
88
87
|
useEffect(() => {
|
|
89
88
|
if (!syncTools) {
|
|
90
89
|
return void 0;
|
|
91
90
|
}
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
sync();
|
|
95
|
-
const unsubscribe = store.subscribe(sync);
|
|
96
|
-
return () => {
|
|
97
|
-
unsubscribe();
|
|
98
|
-
source.detach();
|
|
99
|
-
};
|
|
91
|
+
store.setControlsVisibilityHost(globalContext.toolsVisibility);
|
|
92
|
+
return () => store.setControlsVisibilityHost(null);
|
|
100
93
|
}, [syncTools, store, globalContext]);
|
|
101
94
|
const host = useMemo(() => {
|
|
102
95
|
const transformed = !!size && !fullscreen;
|
|
@@ -111,9 +104,9 @@ const VideoSlideContent = ({ index, controller, setContentSize, slideControlsSlo
|
|
|
111
104
|
)
|
|
112
105
|
};
|
|
113
106
|
}, [size, fullscreen, transformStyle]);
|
|
114
|
-
return /* @__PURE__ */ jsx(VideoPlayerHostContext.Provider, { value: host, children: /* @__PURE__ */ jsx(Video.Player, { children: active && /* @__PURE__ */ jsx(Video.Controls, {}) }) });
|
|
107
|
+
return /* @__PURE__ */ jsx(VideoPlayerHostContext.Provider, { value: host, children: /* @__PURE__ */ jsx(Video.Player, { showDuration, children: active && /* @__PURE__ */ jsx(Video.Controls, {}) }) });
|
|
115
108
|
};
|
|
116
|
-
const VideoItemBody = ({ index, description, ...props }) => {
|
|
109
|
+
const VideoItemBody = ({ index, description, showDuration = false, ...props }) => {
|
|
117
110
|
const globalContext = useMediaViewerContext();
|
|
118
111
|
const url = props.src ?? props.sources?.[0]?.src ?? "";
|
|
119
112
|
const [setContentSize, controller] = useGalleryItemController(globalContext, url, index, description, "video");
|
|
@@ -147,6 +140,7 @@ const VideoItemBody = ({ index, description, ...props }) => {
|
|
|
147
140
|
/* @__PURE__ */ jsx(Video, { ...props, children: /* @__PURE__ */ jsx(
|
|
148
141
|
VideoSlideContent,
|
|
149
142
|
{
|
|
143
|
+
showDuration,
|
|
150
144
|
index,
|
|
151
145
|
controller,
|
|
152
146
|
setContentSize,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"VideoItemBody.js","sources":["src/internal/VideoItemBody.tsx"],"sourcesContent":["import { type FC, type ReactElement, type WheelEvent, useEffect, useLayoutEffect, useMemo, useState } from 'react';\nimport classnames from 'classnames';\nimport { motion, type MotionValue, useMotionValueEvent } from 'motion/react';\n\nimport { useBreakpoint } from '@hh.ru/magritte-ui-breakpoint';\nimport { Slide, useSlideTransformStyle } from '@hh.ru/magritte-ui-media-viewer/internal/Slide';\nimport { useMediaViewerContext } from '@hh.ru/magritte-ui-media-viewer/internal/context';\nimport {\n type GalleryItemController,\n useGalleryItemController,\n} from '@hh.ru/magritte-ui-media-viewer/internal/hooks/useGalleryItemController';\nimport { clamp } from '@hh.ru/magritte-ui-media-viewer/internal/utils';\nimport { type Size } from '@hh.ru/magritte-ui-media-viewer/public/types';\nimport { Video } from '@hh.ru/magritte-ui-video';\nimport {\n type VideoPlayerHost,\n VideoPlayerHostContext,\n useVideoContext,\n useVideoState,\n} from '@hh.ru/magritte-ui-video/internal/context';\nimport { type VideoProps } from '@hh.ru/magritte-ui-video/types';\n\nimport styles from '../public/media-viewer.less';\n\n/** Внешние пропсы VideoItem — то, что передаёт пользователь */\nexport interface VideoItemProps extends Pick<\n VideoProps,\n 'src' | 'sources' | 'preview' | 'duration' | 'attachMedia' | 'onPlay' | 'onPause' | 'onEnded' | 'onError'\n> {\n /** Описание элемента */\n description?: string;\n}\n\n/** Внутренние пропсы VideoItem — включают index, инжектируемый Gallery */\nexport interface VideoItemInternalProps extends VideoItemProps {\n index: number;\n}\n\nconst useMotionValueState = <T,>(value: MotionValue<T>): T => {\n const [state, setState] = useState<T>(value.get());\n useMotionValueEvent(value, 'change', (next) => setState(() => next));\n return state;\n};\n\ninterface VideoSlideContentProps {\n index: number;\n controller: GalleryItemController;\n setContentSize: (size: Size | null) => void;\n /** Место контролов в самом слайде (desktop и mobile без футера) */\n slideControlsSlot: HTMLElement | null;\n}\n\n/** Связь стора видео со слайдом и вьювером; живёт внутри `<Video>`, чтобы читать его стор */\nconst VideoSlideContent: FC<VideoSlideContentProps> = ({ index, controller, setContentSize, slideControlsSlot }) => {\n const globalContext = useMediaViewerContext();\n const { store } = useVideoContext('MediaViewer.VideoItem');\n const size = useVideoState(store, (state) => state.size);\n const fullscreen = useVideoState(store, (state) => state.fullscreen);\n const started = useVideoState(store, (state) => state.status !== 'idle' && state.status !== 'error');\n const playing = useVideoState(store, (state) => state.status === 'playing');\n const { isMobile } = useBreakpoint();\n const transformStyle = useSlideTransformStyle(controller);\n\n const [active, setActive] = useState(() => Math.round(globalContext.currentSlideIndex.get()) === index);\n useMotionValueEvent(globalContext.currentSlideIndex, 'change', (value) => setActive(Math.round(value) === index));\n const footerSlot = useMotionValueState(globalContext.footerVideoControlsSlot);\n const indicatorSlot = useMotionValueState(globalContext.videoIndicatorSlot);\n\n useEffect(() => setContentSize(size), [size, setContentSize]);\n\n // mobile: контролы — часть тулбара и уезжают вместе с ним; desktop (и mobile без футера): у нижнего края слайда,\n // над тулбаром — едут вместе со слайдом при листании, но не зумятся и не поворачиваются, прячутся сами\n const inFooter = active && isMobile && !!footerSlot;\n const container = active ? (inFooter && footerSlot) || slideControlsSlot : null;\n useLayoutEffect(() => store.setControlsContainer(container), [store, container]);\n useLayoutEffect(() => store.setIndicatorContainer(active ? indicatorSlot : null), [store, active, indicatorSlot]);\n\n useEffect(() => {\n if (!active) {\n store.pause();\n }\n }, [active, store]);\n\n useEffect(() => {\n if (!active) {\n return undefined;\n }\n globalContext.videoFullscreen.set(fullscreen);\n return () => globalContext.videoFullscreen.set(false);\n }, [active, fullscreen, globalContext]);\n\n // mobile: контролы в футере не уезжают со слайдом — при листании они гаснут к середине свайпа, когда активным\n // становится соседний слайд. Так они не пропадают рывком, а контролы соседнего видео так же проявляются\n useEffect(() => {\n if (!inFooter) {\n return undefined;\n }\n const opacity = globalContext.footerVideoControlsOpacity;\n const update = (slideIndex: number) => opacity.set(clamp(1 - 2 * Math.abs(slideIndex - index), 0, 1));\n update(globalContext.currentSlideIndex.get());\n const unsubscribe = globalContext.currentSlideIndex.on('change', update);\n return () => {\n unsubscribe();\n opacity.set(1);\n };\n }, [inFooter, index, globalContext]);\n\n // mobile: двойной тап по краю видео — перемотка, кнопки листания на краях ей мешают — пока видео играет, их нет\n const lockSlideButtons = active && isMobile && playing;\n useEffect(() => {\n if (!lockSlideButtons) {\n return undefined;\n }\n globalContext.videoPlaying.set(true);\n return () => globalContext.videoPlaying.set(false);\n }, [lockSlideButtons, globalContext]);\n\n // desktop: любое движение мыши во вьювере — взаимодействие с видео, контролы показываются\n useEffect(() => {\n if (!active || isMobile) {\n return undefined;\n }\n document.addEventListener('mousemove', store.notifyActivity);\n return () => document.removeEventListener('mousemove', store.notifyActivity);\n }, [active, isMobile, store]);\n\n // mobile: после запуска тулбары показываются и прячутся вместе с контролами (по их таймеру и тапу по видео).\n // Уход со слайда или сброс видео отключает источник — тулбары возвращаются\n const syncTools = active && isMobile && started;\n useEffect(() => {\n if (!syncTools) {\n return undefined;\n }\n const source = globalContext.toolsVisibility.attachSource();\n const sync = () => source.setVisible(store.getState().controlsVisible);\n sync();\n const unsubscribe = store.subscribe(sync);\n return () => {\n unsubscribe();\n source.detach();\n };\n }, [syncTools, store, globalContext]);\n\n // `<video>` получает трансформацию слайда (зум, поворот, смещение), оверлеи плеера — нет. До метаданных\n // и в fullscreen видео просто вписано в плеер. Меняется только стиль обёртки: `<video>` не пересоздаётся\n const host = useMemo<VideoPlayerHost>(() => {\n const transformed = !!size && !fullscreen;\n return {\n renderVideo: (video: ReactElement) => (\n <motion.div\n className={transformed ? styles.galleryItemTransformContainer : styles.videoItemFill}\n style={\n transformed\n ? { ...transformStyle, width: size.width, height: size.height }\n : { scale: 1, rotate: 0, x: 0, y: 0 }\n }\n >\n {video}\n </motion.div>\n ),\n };\n }, [size, fullscreen, transformStyle]);\n\n return (\n <VideoPlayerHostContext.Provider value={host}>\n <Video.Player>{active && <Video.Controls />}</Video.Player>\n </VideoPlayerHostContext.Provider>\n );\n};\n\nexport const VideoItemBody: FC<VideoItemInternalProps> = ({ index, description, ...props }) => {\n const globalContext = useMediaViewerContext();\n const url = props.src ?? props.sources?.[0]?.src ?? '';\n const [setContentSize, controller] = useGalleryItemController(globalContext, url, index, description, 'video');\n const hasMultipleSlides = useMotionValueState(globalContext.totalSlides) > 1;\n const [controlsSlot, setControlsSlot] = useState<HTMLDivElement | null>(null);\n\n // колесо и pinch трекпадом над контролами — не зум видео. Жесты слайда слушают и React-событие (оно из портала\n // всплывает по дереву компонентов, где бы ни лежали контролы), и нативное (pinch) — останавливаем оба\n const stopControlsWheel = (event: WheelEvent<HTMLDivElement>) => {\n const target = event.target as Node;\n if (controlsSlot?.contains(target) || !event.currentTarget.contains(target)) {\n event.stopPropagation();\n }\n };\n useEffect(() => {\n if (!controlsSlot) {\n return undefined;\n }\n const stopWheel = (event: Event) => event.stopPropagation();\n controlsSlot.addEventListener('wheel', stopWheel);\n return () => controlsSlot.removeEventListener('wheel', stopWheel);\n }, [controlsSlot]);\n\n return (\n // тапы и клики по видео обрабатывает плеер: вьювер не переключает по ним тулбары\n <Slide\n index={index}\n controller={controller}\n doubleTapAndPan={false}\n onWheelCapture={stopControlsWheel}\n data-media-viewer-interactive\n >\n <Video {...props}>\n <VideoSlideContent\n index={index}\n controller={controller}\n setContentSize={setContentSize}\n slideControlsSlot={controlsSlot}\n />\n </Video>\n <div\n ref={setControlsSlot}\n className={classnames(styles.videoItemControls, {\n [styles.videoItemControlsWithArrows]: hasMultipleSlides,\n })}\n />\n </Slide>\n );\n};\n"],"names":["classnames"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"VideoItemBody.js","sources":["src/internal/VideoItemBody.tsx"],"sourcesContent":["import { type FC, type ReactElement, type WheelEvent, useEffect, useLayoutEffect, useMemo, useState } from 'react';\nimport classnames from 'classnames';\nimport { motion, type MotionValue, useMotionValueEvent } from 'motion/react';\n\nimport { useBreakpoint } from '@hh.ru/magritte-ui-breakpoint';\nimport { Slide, useSlideTransformStyle } from '@hh.ru/magritte-ui-media-viewer/internal/Slide';\nimport { useMediaViewerContext } from '@hh.ru/magritte-ui-media-viewer/internal/context';\nimport {\n type GalleryItemController,\n useGalleryItemController,\n} from '@hh.ru/magritte-ui-media-viewer/internal/hooks/useGalleryItemController';\nimport { clamp } from '@hh.ru/magritte-ui-media-viewer/internal/utils';\nimport { type Size } from '@hh.ru/magritte-ui-media-viewer/public/types';\nimport { Video } from '@hh.ru/magritte-ui-video';\nimport {\n type VideoPlayerHost,\n VideoPlayerHostContext,\n useVideoContext,\n useVideoState,\n} from '@hh.ru/magritte-ui-video/internal/context';\nimport { type VideoProps } from '@hh.ru/magritte-ui-video/types';\n\nimport styles from '../public/media-viewer.less';\n\n/** Внешние пропсы VideoItem — то, что передаёт пользователь */\nexport interface VideoItemProps extends Pick<\n VideoProps,\n 'src' | 'sources' | 'preview' | 'duration' | 'attachMedia' | 'onPlay' | 'onPause' | 'onEnded' | 'onError'\n> {\n /**\n * Показывать бейдж длительности до начала воспроизведения\n * @default false\n */\n showDuration?: boolean;\n /** Описание элемента */\n description?: string;\n}\n\n/** Внутренние пропсы VideoItem — включают index, инжектируемый Gallery */\nexport interface VideoItemInternalProps extends VideoItemProps {\n index: number;\n}\n\nconst useMotionValueState = <T,>(value: MotionValue<T>): T => {\n const [state, setState] = useState<T>(value.get());\n useMotionValueEvent(value, 'change', (next) => setState(() => next));\n return state;\n};\n\ninterface VideoSlideContentProps {\n index: number;\n controller: GalleryItemController;\n setContentSize: (size: Size | null) => void;\n /** Место контролов в самом слайде (desktop и mobile без футера) */\n slideControlsSlot: HTMLElement | null;\n showDuration: boolean;\n}\n\n/** Связь стора видео со слайдом и вьювером; живёт внутри `<Video>`, чтобы читать его стор */\nconst VideoSlideContent: FC<VideoSlideContentProps> = ({\n index,\n controller,\n setContentSize,\n slideControlsSlot,\n showDuration,\n}) => {\n const globalContext = useMediaViewerContext();\n const { store } = useVideoContext('MediaViewer.VideoItem');\n const size = useVideoState(store, (state) => state.size);\n const fullscreen = useVideoState(store, (state) => state.fullscreen);\n const started = useVideoState(store, (state) => state.status !== 'idle' && state.status !== 'error');\n const playing = useVideoState(store, (state) => state.status === 'playing');\n const { isMobile } = useBreakpoint();\n const transformStyle = useSlideTransformStyle(controller);\n\n const [active, setActive] = useState(() => Math.round(globalContext.currentSlideIndex.get()) === index);\n useMotionValueEvent(globalContext.currentSlideIndex, 'change', (value) => setActive(Math.round(value) === index));\n const footerSlot = useMotionValueState(globalContext.footerVideoControlsSlot);\n const indicatorSlot = useMotionValueState(globalContext.videoIndicatorSlot);\n\n useEffect(() => setContentSize(size), [size, setContentSize]);\n\n // mobile: контролы — часть тулбара и уезжают вместе с ним; desktop (и mobile без футера): у нижнего края слайда,\n // над тулбаром — едут вместе со слайдом при листании, но не зумятся и не поворачиваются, прячутся сами\n const inFooter = active && isMobile && !!footerSlot;\n const container = active ? (inFooter && footerSlot) || slideControlsSlot : null;\n useLayoutEffect(() => store.setControlsContainer(container), [store, container]);\n useLayoutEffect(() => store.setIndicatorContainer(active ? indicatorSlot : null), [store, active, indicatorSlot]);\n\n useEffect(() => {\n if (!active) {\n store.pause();\n }\n }, [active, store]);\n\n useEffect(() => {\n if (!active) {\n return undefined;\n }\n globalContext.videoFullscreen.set(fullscreen);\n return () => globalContext.videoFullscreen.set(false);\n }, [active, fullscreen, globalContext]);\n\n // mobile: контролы в футере не уезжают со слайдом — при листании они гаснут к середине свайпа, когда активным\n // становится соседний слайд. Так они не пропадают рывком, а контролы соседнего видео так же проявляются\n useEffect(() => {\n if (!inFooter) {\n return undefined;\n }\n const opacity = globalContext.footerVideoControlsOpacity;\n const update = (slideIndex: number) => opacity.set(clamp(1 - 2 * Math.abs(slideIndex - index), 0, 1));\n update(globalContext.currentSlideIndex.get());\n const unsubscribe = globalContext.currentSlideIndex.on('change', update);\n return () => {\n unsubscribe();\n opacity.set(1);\n };\n }, [inFooter, index, globalContext]);\n\n // mobile: двойной тап по краю видео — перемотка, кнопки листания на краях ей мешают — пока видео играет, их нет\n const lockSlideButtons = active && isMobile && playing;\n useEffect(() => {\n if (!lockSlideButtons) {\n return undefined;\n }\n globalContext.videoPlaying.set(true);\n return () => globalContext.videoPlaying.set(false);\n }, [lockSlideButtons, globalContext]);\n\n // После запуска контролами управляют тулбары вьювера: контролы показываются и прячутся вместе с ними, по их\n // таймеру и активности; тап по видео (mobile) переключает тулбары. Уход со слайда или сброс видео возвращает\n // контролам собственное управление\n const syncTools = active && started;\n useEffect(() => {\n if (!syncTools) {\n return undefined;\n }\n store.setControlsVisibilityHost(globalContext.toolsVisibility);\n return () => store.setControlsVisibilityHost(null);\n }, [syncTools, store, globalContext]);\n\n // `<video>` получает трансформацию слайда (зум, поворот, смещение), оверлеи плеера — нет. До метаданных\n // и в fullscreen видео просто вписано в плеер. Меняется только стиль обёртки: `<video>` не пересоздаётся\n const host = useMemo<VideoPlayerHost>(() => {\n const transformed = !!size && !fullscreen;\n return {\n renderVideo: (video: ReactElement) => (\n <motion.div\n className={transformed ? styles.galleryItemTransformContainer : styles.videoItemFill}\n style={\n transformed\n ? { ...transformStyle, width: size.width, height: size.height }\n : { scale: 1, rotate: 0, x: 0, y: 0 }\n }\n >\n {video}\n </motion.div>\n ),\n };\n }, [size, fullscreen, transformStyle]);\n\n return (\n <VideoPlayerHostContext.Provider value={host}>\n <Video.Player showDuration={showDuration}>{active && <Video.Controls />}</Video.Player>\n </VideoPlayerHostContext.Provider>\n );\n};\n\nexport const VideoItemBody: FC<VideoItemInternalProps> = ({ index, description, showDuration = false, ...props }) => {\n const globalContext = useMediaViewerContext();\n const url = props.src ?? props.sources?.[0]?.src ?? '';\n const [setContentSize, controller] = useGalleryItemController(globalContext, url, index, description, 'video');\n const hasMultipleSlides = useMotionValueState(globalContext.totalSlides) > 1;\n const [controlsSlot, setControlsSlot] = useState<HTMLDivElement | null>(null);\n\n // колесо и pinch трекпадом над контролами — не зум видео. Жесты слайда слушают и React-событие (оно из портала\n // всплывает по дереву компонентов, где бы ни лежали контролы), и нативное (pinch) — останавливаем оба\n const stopControlsWheel = (event: WheelEvent<HTMLDivElement>) => {\n const target = event.target as Node;\n if (controlsSlot?.contains(target) || !event.currentTarget.contains(target)) {\n event.stopPropagation();\n }\n };\n useEffect(() => {\n if (!controlsSlot) {\n return undefined;\n }\n const stopWheel = (event: Event) => event.stopPropagation();\n controlsSlot.addEventListener('wheel', stopWheel);\n return () => controlsSlot.removeEventListener('wheel', stopWheel);\n }, [controlsSlot]);\n\n return (\n // тапы и клики по видео обрабатывает плеер: вьювер не переключает по ним тулбары\n <Slide\n index={index}\n controller={controller}\n doubleTapAndPan={false}\n onWheelCapture={stopControlsWheel}\n data-media-viewer-interactive\n >\n <Video {...props}>\n <VideoSlideContent\n showDuration={showDuration}\n index={index}\n controller={controller}\n setContentSize={setContentSize}\n slideControlsSlot={controlsSlot}\n />\n </Video>\n <div\n ref={setControlsSlot}\n className={classnames(styles.videoItemControls, {\n [styles.videoItemControlsWithArrows]: hasMultipleSlides,\n })}\n />\n </Slide>\n );\n};\n"],"names":["classnames"],"mappings":"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"}
|
package/internal/slides.js
CHANGED
|
@@ -20,7 +20,7 @@ import './hooks/usePan.js';
|
|
|
20
20
|
import '@use-gesture/react';
|
|
21
21
|
import './hooks/usePinchToZoom.js';
|
|
22
22
|
import './hooks/useWheelToZoom.js';
|
|
23
|
-
import '../media-viewer-
|
|
23
|
+
import '../media-viewer-OWOdMZcE.js';
|
|
24
24
|
import '@hh.ru/magritte-ui-typography';
|
|
25
25
|
import './hooks/useVirtualization.js';
|
|
26
26
|
import './VideoItemBody.js';
|
|
@@ -1,26 +1,27 @@
|
|
|
1
1
|
import { type MotionValue } from 'motion/react';
|
|
2
|
+
import { type VideoControlsPin, type VideoControlsVisibilityHost } from '@hh.ru/magritte-ui-video/internal/store';
|
|
2
3
|
/** Задержка автоскрытия тулбаров без активности (desktop) */
|
|
3
4
|
export declare const HIDE_TOOLS_DELAY_MS = 6000;
|
|
4
|
-
|
|
5
|
-
export interface ToolsVisibilitySource {
|
|
6
|
-
setVisible: (visible: boolean) => void;
|
|
7
|
-
detach: VoidFunction;
|
|
8
|
-
}
|
|
9
|
-
export interface ToolsVisibility {
|
|
5
|
+
export interface ToolsVisibility extends VideoControlsVisibilityHost {
|
|
10
6
|
/** Активность пользователя (движение мыши, клик): показать тулбары и перезапустить автоскрытие */
|
|
11
7
|
notifyActivity: VoidFunction;
|
|
12
|
-
/** Тап по свободной области (mobile): показать или спрятать тулбары */
|
|
8
|
+
/** Тап по свободной области или по видео (mobile): показать или спрятать тулбары */
|
|
13
9
|
toggle: VoidFunction;
|
|
14
10
|
/** Автоскрытие по бездействию: включено на desktop */
|
|
15
11
|
setAutoHide: (enabled: boolean) => void;
|
|
12
|
+
/** Тулбары видны */
|
|
13
|
+
isVisible: () => boolean;
|
|
14
|
+
/** Подписка на видимость: по ней показываются и прячутся контролы видео */
|
|
15
|
+
subscribe: (listener: (visible: boolean) => void) => VoidFunction;
|
|
16
16
|
/**
|
|
17
|
-
*
|
|
18
|
-
*
|
|
17
|
+
* Исключение от видео: `shown` — показать и не прятать (фокус с клавиатуры в контролах, перетаскивание бегунка),
|
|
18
|
+
* `hidden` — спрятать и не показывать от активности (ускорение удержанием на desktop)
|
|
19
19
|
*/
|
|
20
|
-
|
|
20
|
+
setPin: (pin: VideoControlsPin) => void;
|
|
21
21
|
}
|
|
22
22
|
/**
|
|
23
|
-
* Единственный владелец видимости тулбаров (`hideToolsProgress`: 0 — видны, 1 — спрятаны)
|
|
24
|
-
* или прячет тулбары, делают это через него — так источники не перебивают анимации друг
|
|
23
|
+
* Единственный владелец видимости тулбаров (`hideToolsProgress`: 0 — видны, 1 — спрятаны) и контролов видео текущего
|
|
24
|
+
* слайда. Все, кто показывает или прячет тулбары, делают это через него — так источники не перебивают анимации друг
|
|
25
|
+
* друга, а контролы видео показываются и прячутся вместе с тулбарами
|
|
25
26
|
*/
|
|
26
27
|
export declare const createToolsVisibility: (progress: MotionValue<number>) => ToolsVisibility;
|
|
@@ -9,7 +9,8 @@ const createToolsVisibility = (progress) => {
|
|
|
9
9
|
let target = Math.round(progress.get());
|
|
10
10
|
let autoHide = false;
|
|
11
11
|
let timer = null;
|
|
12
|
-
let
|
|
12
|
+
let pin = null;
|
|
13
|
+
const listeners = /* @__PURE__ */ new Set();
|
|
13
14
|
const animateTo = (visible, duration) => {
|
|
14
15
|
const nextTarget = visible ? 0 : 1;
|
|
15
16
|
if (nextTarget === target) {
|
|
@@ -17,6 +18,7 @@ const createToolsVisibility = (progress) => {
|
|
|
17
18
|
}
|
|
18
19
|
target = nextTarget;
|
|
19
20
|
animate(progress, nextTarget, { duration, ease: EASE_BASE });
|
|
21
|
+
listeners.forEach((listener) => listener(visible));
|
|
20
22
|
};
|
|
21
23
|
const clearTimer = () => {
|
|
22
24
|
if (timer !== null) {
|
|
@@ -26,7 +28,7 @@ const createToolsVisibility = (progress) => {
|
|
|
26
28
|
};
|
|
27
29
|
const restartTimer = () => {
|
|
28
30
|
clearTimer();
|
|
29
|
-
if (autoHide &&
|
|
31
|
+
if (autoHide && pin === null) {
|
|
30
32
|
timer = setTimeout(() => {
|
|
31
33
|
timer = null;
|
|
32
34
|
animateTo(false, durationOf("magritte-semantic-animation-time-l"));
|
|
@@ -35,42 +37,39 @@ const createToolsVisibility = (progress) => {
|
|
|
35
37
|
};
|
|
36
38
|
return {
|
|
37
39
|
notifyActivity: () => {
|
|
38
|
-
if (
|
|
40
|
+
if (pin === "hidden") {
|
|
39
41
|
return;
|
|
40
42
|
}
|
|
41
43
|
animateTo(true, durationOf("magritte-semantic-animation-time-l"));
|
|
42
44
|
restartTimer();
|
|
43
45
|
},
|
|
44
46
|
toggle: () => {
|
|
45
|
-
if (
|
|
47
|
+
if (pin === "hidden") {
|
|
46
48
|
return;
|
|
47
49
|
}
|
|
48
|
-
animateTo(target === 1, durationOf("magritte-semantic-animation-time-m"));
|
|
50
|
+
animateTo(pin === "shown" || target === 1, durationOf("magritte-semantic-animation-time-m"));
|
|
49
51
|
restartTimer();
|
|
50
52
|
},
|
|
51
53
|
setAutoHide: (enabled) => {
|
|
52
54
|
autoHide = enabled;
|
|
53
55
|
restartTimer();
|
|
54
56
|
},
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
setVisible: (visible) => {
|
|
61
|
-
if (source === token) {
|
|
62
|
-
animateTo(visible, durationOf("magritte-semantic-animation-time-m"));
|
|
63
|
-
}
|
|
64
|
-
},
|
|
65
|
-
detach: () => {
|
|
66
|
-
if (source !== token) {
|
|
67
|
-
return;
|
|
68
|
-
}
|
|
69
|
-
source = null;
|
|
70
|
-
animateTo(true, durationOf("magritte-semantic-animation-time-m"));
|
|
71
|
-
restartTimer();
|
|
72
|
-
}
|
|
57
|
+
isVisible: () => target === 0,
|
|
58
|
+
subscribe: (listener) => {
|
|
59
|
+
listeners.add(listener);
|
|
60
|
+
return () => {
|
|
61
|
+
listeners.delete(listener);
|
|
73
62
|
};
|
|
63
|
+
},
|
|
64
|
+
setPin: (nextPin) => {
|
|
65
|
+
if (pin === nextPin) {
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
pin = nextPin;
|
|
69
|
+
if (pin !== null) {
|
|
70
|
+
animateTo(pin === "shown", durationOf("magritte-semantic-animation-time-m"));
|
|
71
|
+
}
|
|
72
|
+
restartTimer();
|
|
74
73
|
}
|
|
75
74
|
};
|
|
76
75
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"toolsVisibility.js","sources":["src/internal/toolsVisibility.ts"],"sourcesContent":["import { animate, type MotionValue } from 'motion/react';\n\nimport CoreTokens from '@hh.ru/magritte-design-tokens/core-tokens';\nimport { EASE_BASE } from '@hh.ru/magritte-ui-media-viewer/internal/animations';\n\n/** Задержка автоскрытия тулбаров без активности (desktop) */\nexport const HIDE_TOOLS_DELAY_MS = 6000;\n\
|
|
1
|
+
{"version":3,"file":"toolsVisibility.js","sources":["src/internal/toolsVisibility.ts"],"sourcesContent":["import { animate, type MotionValue } from 'motion/react';\n\nimport CoreTokens from '@hh.ru/magritte-design-tokens/core-tokens';\nimport { EASE_BASE } from '@hh.ru/magritte-ui-media-viewer/internal/animations';\nimport { type VideoControlsPin, type VideoControlsVisibilityHost } from '@hh.ru/magritte-ui-video/internal/store';\n\n/** Задержка автоскрытия тулбаров без активности (desktop) */\nexport const HIDE_TOOLS_DELAY_MS = 6000;\n\nexport interface ToolsVisibility extends VideoControlsVisibilityHost {\n /** Активность пользователя (движение мыши, клик): показать тулбары и перезапустить автоскрытие */\n notifyActivity: VoidFunction;\n /** Тап по свободной области или по видео (mobile): показать или спрятать тулбары */\n toggle: VoidFunction;\n /** Автоскрытие по бездействию: включено на desktop */\n setAutoHide: (enabled: boolean) => void;\n /** Тулбары видны */\n isVisible: () => boolean;\n /** Подписка на видимость: по ней показываются и прячутся контролы видео */\n subscribe: (listener: (visible: boolean) => void) => VoidFunction;\n /**\n * Исключение от видео: `shown` — показать и не прятать (фокус с клавиатуры в контролах, перетаскивание бегунка),\n * `hidden` — спрятать и не показывать от активности (ускорение удержанием на desktop)\n */\n setPin: (pin: VideoControlsPin) => void;\n}\n\nconst durationOf = (token: 'magritte-semantic-animation-time-m' | 'magritte-semantic-animation-time-l'): number =>\n CoreTokens[token].duration / 1000;\n\n/**\n * Единственный владелец видимости тулбаров (`hideToolsProgress`: 0 — видны, 1 — спрятаны) и контролов видео текущего\n * слайда. Все, кто показывает или прячет тулбары, делают это через него — так источники не перебивают анимации друг\n * друга, а контролы видео показываются и прячутся вместе с тулбарами\n */\nexport const createToolsVisibility = (progress: MotionValue<number>): ToolsVisibility => {\n let target = Math.round(progress.get());\n let autoHide = false;\n let timer: ReturnType<typeof setTimeout> | null = null;\n let pin: VideoControlsPin = null;\n const listeners = new Set<(visible: boolean) => void>();\n\n const animateTo = (visible: boolean, duration: number): void => {\n const nextTarget = visible ? 0 : 1;\n if (nextTarget === target) {\n return;\n }\n target = nextTarget;\n animate(progress, nextTarget, { duration, ease: EASE_BASE });\n listeners.forEach((listener) => listener(visible));\n };\n\n const clearTimer = (): void => {\n if (timer !== null) {\n clearTimeout(timer);\n timer = null;\n }\n };\n\n const restartTimer = (): void => {\n clearTimer();\n if (autoHide && pin === null) {\n timer = setTimeout(() => {\n timer = null;\n animateTo(false, durationOf('magritte-semantic-animation-time-l'));\n }, HIDE_TOOLS_DELAY_MS);\n }\n };\n\n return {\n notifyActivity: () => {\n if (pin === 'hidden') {\n return;\n }\n animateTo(true, durationOf('magritte-semantic-animation-time-l'));\n restartTimer();\n },\n toggle: () => {\n if (pin === 'hidden') {\n return;\n }\n animateTo(pin === 'shown' || target === 1, durationOf('magritte-semantic-animation-time-m'));\n restartTimer();\n },\n setAutoHide: (enabled) => {\n autoHide = enabled;\n restartTimer();\n },\n isVisible: () => target === 0,\n subscribe: (listener) => {\n listeners.add(listener);\n return () => {\n listeners.delete(listener);\n };\n },\n setPin: (nextPin) => {\n if (pin === nextPin) {\n return;\n }\n pin = nextPin;\n if (pin !== null) {\n animateTo(pin === 'shown', durationOf('magritte-semantic-animation-time-m'));\n }\n restartTimer();\n },\n };\n};\n"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import './index.css';
|
|
2
|
+
var styles = {"media-viewer":"magritte-media-viewer___KnrXP_1-4-3","mediaViewer":"magritte-media-viewer___KnrXP_1-4-3","gallery-placeholder":"magritte-gallery-placeholder___rUoGL_1-4-3","galleryPlaceholder":"magritte-gallery-placeholder___rUoGL_1-4-3","media-viewer-gallery":"magritte-media-viewer-gallery___P0SnN_1-4-3","mediaViewerGallery":"magritte-media-viewer-gallery___P0SnN_1-4-3","gallery-item":"magritte-gallery-item___Js0Z5_1-4-3","galleryItem":"magritte-gallery-item___Js0Z5_1-4-3","gallery-item-transform-container":"magritte-gallery-item-transform-container___N8-sA_1-4-3","galleryItemTransformContainer":"magritte-gallery-item-transform-container___N8-sA_1-4-3","preview-counter":"magritte-preview-counter___uP2Hc_1-4-3","previewCounter":"magritte-preview-counter___uP2Hc_1-4-3","with-description":"magritte-with-description___-w7ld_1-4-3","withDescription":"magritte-with-description___-w7ld_1-4-3","counter-number":"magritte-counter-number___gUpMp_1-4-3","counterNumber":"magritte-counter-number___gUpMp_1-4-3","no-description-placeholder":"magritte-no-description-placeholder___qc6h2_1-4-3","noDescriptionPlaceholder":"magritte-no-description-placeholder___qc6h2_1-4-3","preview-zoom-control":"magritte-preview-zoom-control___026jA_1-4-3","previewZoomControl":"magritte-preview-zoom-control___026jA_1-4-3","preview-container":"magritte-preview-container___nwjNY_1-4-3","previewContainer":"magritte-preview-container___nwjNY_1-4-3","preview":"magritte-preview___0Ge4C_1-4-3","preview-list":"magritte-preview-list___SAXLZ_1-4-3","previewList":"magritte-preview-list___SAXLZ_1-4-3","preview-item":"magritte-preview-item___gz5f2_1-4-3","previewItem":"magritte-preview-item___gz5f2_1-4-3","preview-item-container":"magritte-preview-item-container___JDVsk_1-4-3","previewItemContainer":"magritte-preview-item-container___JDVsk_1-4-3","media-viewer-toolbar":"magritte-media-viewer-toolbar___2C8nr_1-4-3","mediaViewerToolbar":"magritte-media-viewer-toolbar___2C8nr_1-4-3","no-description":"magritte-no-description___NebrT_1-4-3","noDescription":"magritte-no-description___NebrT_1-4-3","media-viewer-toolbar-left":"magritte-media-viewer-toolbar-left___YzkJt_1-4-3","mediaViewerToolbarLeft":"magritte-media-viewer-toolbar-left___YzkJt_1-4-3","media-viewer-toolbar-right":"magritte-media-viewer-toolbar-right___kBER9_1-4-3","mediaViewerToolbarRight":"magritte-media-viewer-toolbar-right___kBER9_1-4-3","prev-button":"magritte-prev-button___WMYjR_1-4-3","prevButton":"magritte-prev-button___WMYjR_1-4-3","next-button":"magritte-next-button___f8hJT_1-4-3","nextButton":"magritte-next-button___f8hJT_1-4-3","slide-button":"magritte-slide-button___sY8LB_1-4-3","slideButton":"magritte-slide-button___sY8LB_1-4-3","preview-placeholder":"magritte-preview-placeholder___yuhW1_1-4-3","previewPlaceholder":"magritte-preview-placeholder___yuhW1_1-4-3","gallery-item-loader":"magritte-gallery-item-loader___70TDe_1-4-3","galleryItemLoader":"magritte-gallery-item-loader___70TDe_1-4-3","gallery-item-error-container":"magritte-gallery-item-error-container___Z-HyZ_1-4-3","galleryItemErrorContainer":"magritte-gallery-item-error-container___Z-HyZ_1-4-3","description-bottom-sheet-content":"magritte-description-bottom-sheet-content___swnEV_1-4-3","descriptionBottomSheetContent":"magritte-description-bottom-sheet-content___swnEV_1-4-3","header":"magritte-header___egZXt_1-4-3","video-indicator-slot":"magritte-video-indicator-slot___FX0nD_1-4-3","videoIndicatorSlot":"magritte-video-indicator-slot___FX0nD_1-4-3","video-indicator-slot-content":"magritte-video-indicator-slot-content___kir3R_1-4-3","videoIndicatorSlotContent":"magritte-video-indicator-slot-content___kir3R_1-4-3","video-item-fill":"magritte-video-item-fill___SKpC3_1-4-3","videoItemFill":"magritte-video-item-fill___SKpC3_1-4-3","video-item-controls":"magritte-video-item-controls___oe99H_1-4-3","videoItemControls":"magritte-video-item-controls___oe99H_1-4-3","video-item-controls-with-arrows":"magritte-video-item-controls-with-arrows___d1JxC_1-4-3","videoItemControlsWithArrows":"magritte-video-item-controls-with-arrows___d1JxC_1-4-3","footer":"magritte-footer___rOH-M_1-4-3","footer-video-controls":"magritte-footer-video-controls___CYJnk_1-4-3","footerVideoControls":"magritte-footer-video-controls___CYJnk_1-4-3","description":"magritte-description___dYc-E_1-4-3"};
|
|
3
|
+
|
|
4
|
+
export { styles as s };
|
|
5
|
+
//# sourceMappingURL=media-viewer-OWOdMZcE.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media-viewer-OWOdMZcE.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hh.ru/magritte-ui-media-viewer",
|
|
3
|
-
"version": "1.4.
|
|
3
|
+
"version": "1.4.3",
|
|
4
4
|
"main": "index.js",
|
|
5
5
|
"types": "index.d.ts",
|
|
6
6
|
"sideEffects": [
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"@hh.ru/magritte-common-use-translation": "3.8.0",
|
|
34
34
|
"@hh.ru/magritte-design-tokens": "26.0.2",
|
|
35
35
|
"@hh.ru/magritte-internal-accessible-region": "1.0.5",
|
|
36
|
-
"@hh.ru/magritte-ui-bottom-sheet": "9.4.
|
|
36
|
+
"@hh.ru/magritte-ui-bottom-sheet": "9.4.62",
|
|
37
37
|
"@hh.ru/magritte-ui-breakpoint": "6.1.3",
|
|
38
38
|
"@hh.ru/magritte-ui-icon": "15.1.6",
|
|
39
39
|
"@hh.ru/magritte-ui-layer": "3.2.9",
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
"@hh.ru/magritte-ui-nav-bar": "2.0.24",
|
|
43
43
|
"@hh.ru/magritte-ui-tooltip": "11.0.54",
|
|
44
44
|
"@hh.ru/magritte-ui-typography": "5.3.17",
|
|
45
|
-
"@hh.ru/magritte-ui-video": "1.0.
|
|
45
|
+
"@hh.ru/magritte-ui-video": "1.0.2",
|
|
46
46
|
"@use-gesture/react": "10.3.1"
|
|
47
47
|
},
|
|
48
48
|
"peerDependencies": {
|
|
@@ -50,5 +50,5 @@
|
|
|
50
50
|
"motion": "^12.23.12",
|
|
51
51
|
"react": ">=18.2.0"
|
|
52
52
|
},
|
|
53
|
-
"gitHead": "
|
|
53
|
+
"gitHead": "cf2f64cd7ddcc1cdc569e66eb3eb88e54e1df97a"
|
|
54
54
|
}
|
package/public/Footer.js
CHANGED
|
@@ -3,7 +3,7 @@ import { jsxs, jsx } from 'react/jsx-runtime';
|
|
|
3
3
|
import { useCallback } from 'react';
|
|
4
4
|
import { motion } from 'motion/react';
|
|
5
5
|
import { useMediaViewerContext } from '../internal/context.js';
|
|
6
|
-
import { s as styles } from '../media-viewer-
|
|
6
|
+
import { s as styles } from '../media-viewer-OWOdMZcE.js';
|
|
7
7
|
import '../internal/ImagesLoader.js';
|
|
8
8
|
import '../internal/toolsVisibility.js';
|
|
9
9
|
import '@hh.ru/magritte-design-tokens/core-tokens';
|
|
@@ -17,7 +17,14 @@ const Footer = ({ children }) => {
|
|
|
17
17
|
[globalContext]
|
|
18
18
|
);
|
|
19
19
|
return /* @__PURE__ */ jsxs("div", { "data-media-viewer-interactive": "true", className: styles.footer, children: [
|
|
20
|
-
/* @__PURE__ */ jsx(
|
|
20
|
+
/* @__PURE__ */ jsx(
|
|
21
|
+
motion.div,
|
|
22
|
+
{
|
|
23
|
+
ref: setVideoControlsSlot,
|
|
24
|
+
className: styles.footerVideoControls,
|
|
25
|
+
style: { opacity: globalContext.footerVideoControlsOpacity }
|
|
26
|
+
}
|
|
27
|
+
),
|
|
21
28
|
children
|
|
22
29
|
] });
|
|
23
30
|
};
|
package/public/Footer.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Footer.js","sources":["src/public/Footer.tsx"],"sourcesContent":["import { FC, PropsWithChildren, useCallback } from 'react';\nimport { motion } from 'motion/react';\n\nimport { useMediaViewerContext } from '@hh.ru/magritte-ui-media-viewer/internal/context';\n\nimport styles from './media-viewer.less';\n\nexport const Footer: FC<PropsWithChildren> = ({ children }) => {\n const globalContext = useMediaViewerContext();\n // mobile: контролы видео — часть тулбара, двигаются и прячутся вместе с ним\n const setVideoControlsSlot = useCallback(\n (element: HTMLDivElement | null) => globalContext.footerVideoControlsSlot.set(element),\n [globalContext]\n );\n\n return (\n <div data-media-viewer-interactive=\"true\" className={styles.footer}>\n <motion.div
|
|
1
|
+
{"version":3,"file":"Footer.js","sources":["src/public/Footer.tsx"],"sourcesContent":["import { FC, PropsWithChildren, useCallback } from 'react';\nimport { motion } from 'motion/react';\n\nimport { useMediaViewerContext } from '@hh.ru/magritte-ui-media-viewer/internal/context';\n\nimport styles from './media-viewer.less';\n\nexport const Footer: FC<PropsWithChildren> = ({ children }) => {\n const globalContext = useMediaViewerContext();\n // mobile: контролы видео — часть тулбара, двигаются и прячутся вместе с ним\n const setVideoControlsSlot = useCallback(\n (element: HTMLDivElement | null) => globalContext.footerVideoControlsSlot.set(element),\n [globalContext]\n );\n\n return (\n <div data-media-viewer-interactive=\"true\" className={styles.footer}>\n <motion.div\n ref={setVideoControlsSlot}\n className={styles.footerVideoControls}\n style={{ opacity: globalContext.footerVideoControlsOpacity }}\n />\n {children}\n </div>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;AAOO,MAAM,MAAgC,GAAA,CAAC,EAAE,QAAA,EAAe,KAAA;AAC3D,EAAA,MAAM,gBAAgB,qBAAsB,EAAA,CAAA;AAE5C,EAAA,MAAM,oBAAuB,GAAA,WAAA;AAAA,IACzB,CAAC,OAAA,KAAmC,aAAc,CAAA,uBAAA,CAAwB,IAAI,OAAO,CAAA;AAAA,IACrF,CAAC,aAAa,CAAA;AAAA,GAClB,CAAA;AAEA,EAAA,4BACK,KAAI,EAAA,EAAA,+BAAA,EAA8B,MAAO,EAAA,SAAA,EAAW,OAAO,MACxD,EAAA,QAAA,EAAA;AAAA,oBAAA,GAAA;AAAA,MAAC,MAAO,CAAA,GAAA;AAAA,MAAP;AAAA,QACG,GAAK,EAAA,oBAAA;AAAA,QACL,WAAW,MAAO,CAAA,mBAAA;AAAA,QAClB,KAAO,EAAA,EAAE,OAAS,EAAA,aAAA,CAAc,0BAA2B,EAAA;AAAA,OAAA;AAAA,KAC/D;AAAA,IACC,QAAA;AAAA,GACL,EAAA,CAAA,CAAA;AAER;;;;"}
|
package/public/Gallery.js
CHANGED
|
@@ -10,7 +10,7 @@ import { useMediaViewerContext, useGalleryItemsContext } from '../internal/conte
|
|
|
10
10
|
import { useSwipe } from '../internal/hooks/useSwipe.js';
|
|
11
11
|
import { isSlideElement } from '../internal/slides.js';
|
|
12
12
|
import { clamp } from '../internal/utils.js';
|
|
13
|
-
import { s as styles } from '../media-viewer-
|
|
13
|
+
import { s as styles } from '../media-viewer-OWOdMZcE.js';
|
|
14
14
|
import '../internal/ImagesLoader.js';
|
|
15
15
|
import '../internal/toolsVisibility.js';
|
|
16
16
|
import '@hh.ru/magritte-design-tokens/core-tokens';
|
package/public/GalleryItem.js
CHANGED
|
@@ -17,7 +17,7 @@ import '../internal/hooks/usePan.js';
|
|
|
17
17
|
import '@use-gesture/react';
|
|
18
18
|
import '../internal/hooks/usePinchToZoom.js';
|
|
19
19
|
import '../internal/hooks/useWheelToZoom.js';
|
|
20
|
-
import '../media-viewer-
|
|
20
|
+
import '../media-viewer-OWOdMZcE.js';
|
|
21
21
|
import '@hh.ru/magritte-ui-typography';
|
|
22
22
|
import '../internal/ImagesLoader.js';
|
|
23
23
|
import '../internal/toolsVisibility.js';
|
package/public/Header.js
CHANGED
|
@@ -2,7 +2,7 @@ import './../index.css';
|
|
|
2
2
|
import { jsx } from 'react/jsx-runtime';
|
|
3
3
|
import { MEDIA_VIEWER_HEADER_ACTIONS_ICONS_DEFAULTS } from './headerDefaults.js';
|
|
4
4
|
import { NavBarDefaultPropsContext } from '@hh.ru/magritte-ui-nav-bar';
|
|
5
|
-
import { s as styles } from '../media-viewer-
|
|
5
|
+
import { s as styles } from '../media-viewer-OWOdMZcE.js';
|
|
6
6
|
|
|
7
7
|
const NAV_BAR_ACTIONS_DEFAULT_PROPS = {
|
|
8
8
|
verticalAlign: "top"
|
package/public/MediaViewer.js
CHANGED
|
@@ -23,7 +23,7 @@ import { Preview } from './Preview.js';
|
|
|
23
23
|
import { Toolbar } from './Toolbar.js';
|
|
24
24
|
import { DesktopTool, MobileTool, RotateTool, CloseTool, FullWidthTool } from './Tools.js';
|
|
25
25
|
import { VideoItem } from './VideoItem.js';
|
|
26
|
-
import { s as styles } from '../media-viewer-
|
|
26
|
+
import { s as styles } from '../media-viewer-OWOdMZcE.js';
|
|
27
27
|
import '../internal/ImagesLoader.js';
|
|
28
28
|
import '../internal/toolsVisibility.js';
|
|
29
29
|
import '@use-gesture/react';
|
package/public/Preview.js
CHANGED
|
@@ -13,7 +13,7 @@ import { useMediaViewerContext, useGalleryItemsContext, PreviewContext } from '.
|
|
|
13
13
|
import { useVirtualization } from '../internal/hooks/useVirtualization.js';
|
|
14
14
|
import { getSlideThumbnail } from '../internal/slides.js';
|
|
15
15
|
import { useDetectDiscreteChange, useInitOnce, clamp } from '../internal/utils.js';
|
|
16
|
-
import { s as styles } from '../media-viewer-
|
|
16
|
+
import { s as styles } from '../media-viewer-OWOdMZcE.js';
|
|
17
17
|
import 'classnames';
|
|
18
18
|
import '@hh.ru/magritte-common-use-translation';
|
|
19
19
|
import '@hh.ru/magritte-ui-bottom-sheet';
|
package/public/Toolbar.js
CHANGED
|
@@ -4,7 +4,7 @@ import classNames from 'classnames';
|
|
|
4
4
|
import { IconDefaultPropsContext } from '@hh.ru/magritte-ui-icon';
|
|
5
5
|
import { hasCounterContent, Counter } from '../internal/Counter.js';
|
|
6
6
|
import { useGalleryItemsContext } from '../internal/context.js';
|
|
7
|
-
import { s as styles } from '../media-viewer-
|
|
7
|
+
import { s as styles } from '../media-viewer-OWOdMZcE.js';
|
|
8
8
|
import 'react';
|
|
9
9
|
import 'motion/react';
|
|
10
10
|
import '@hh.ru/magritte-common-use-translation';
|
package/public/VideoItem.js
CHANGED
|
@@ -17,7 +17,7 @@ import '../internal/hooks/usePan.js';
|
|
|
17
17
|
import '@use-gesture/react';
|
|
18
18
|
import '../internal/hooks/usePinchToZoom.js';
|
|
19
19
|
import '../internal/hooks/useWheelToZoom.js';
|
|
20
|
-
import '../media-viewer-
|
|
20
|
+
import '../media-viewer-OWOdMZcE.js';
|
|
21
21
|
import '@hh.ru/magritte-ui-video';
|
|
22
22
|
import '@hh.ru/magritte-ui-video/internal/context';
|
|
23
23
|
import '../internal/ImagesLoader.js';
|
package/media-viewer-BOgoSXlr.js
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import './index.css';
|
|
2
|
-
var styles = {"media-viewer":"magritte-media-viewer___KnrXP_1-4-1","mediaViewer":"magritte-media-viewer___KnrXP_1-4-1","gallery-placeholder":"magritte-gallery-placeholder___rUoGL_1-4-1","galleryPlaceholder":"magritte-gallery-placeholder___rUoGL_1-4-1","media-viewer-gallery":"magritte-media-viewer-gallery___P0SnN_1-4-1","mediaViewerGallery":"magritte-media-viewer-gallery___P0SnN_1-4-1","gallery-item":"magritte-gallery-item___Js0Z5_1-4-1","galleryItem":"magritte-gallery-item___Js0Z5_1-4-1","gallery-item-transform-container":"magritte-gallery-item-transform-container___N8-sA_1-4-1","galleryItemTransformContainer":"magritte-gallery-item-transform-container___N8-sA_1-4-1","preview-counter":"magritte-preview-counter___uP2Hc_1-4-1","previewCounter":"magritte-preview-counter___uP2Hc_1-4-1","with-description":"magritte-with-description___-w7ld_1-4-1","withDescription":"magritte-with-description___-w7ld_1-4-1","counter-number":"magritte-counter-number___gUpMp_1-4-1","counterNumber":"magritte-counter-number___gUpMp_1-4-1","no-description-placeholder":"magritte-no-description-placeholder___qc6h2_1-4-1","noDescriptionPlaceholder":"magritte-no-description-placeholder___qc6h2_1-4-1","preview-zoom-control":"magritte-preview-zoom-control___026jA_1-4-1","previewZoomControl":"magritte-preview-zoom-control___026jA_1-4-1","preview-container":"magritte-preview-container___nwjNY_1-4-1","previewContainer":"magritte-preview-container___nwjNY_1-4-1","preview":"magritte-preview___0Ge4C_1-4-1","preview-list":"magritte-preview-list___SAXLZ_1-4-1","previewList":"magritte-preview-list___SAXLZ_1-4-1","preview-item":"magritte-preview-item___gz5f2_1-4-1","previewItem":"magritte-preview-item___gz5f2_1-4-1","preview-item-container":"magritte-preview-item-container___JDVsk_1-4-1","previewItemContainer":"magritte-preview-item-container___JDVsk_1-4-1","media-viewer-toolbar":"magritte-media-viewer-toolbar___2C8nr_1-4-1","mediaViewerToolbar":"magritte-media-viewer-toolbar___2C8nr_1-4-1","no-description":"magritte-no-description___NebrT_1-4-1","noDescription":"magritte-no-description___NebrT_1-4-1","media-viewer-toolbar-left":"magritte-media-viewer-toolbar-left___YzkJt_1-4-1","mediaViewerToolbarLeft":"magritte-media-viewer-toolbar-left___YzkJt_1-4-1","media-viewer-toolbar-right":"magritte-media-viewer-toolbar-right___kBER9_1-4-1","mediaViewerToolbarRight":"magritte-media-viewer-toolbar-right___kBER9_1-4-1","prev-button":"magritte-prev-button___WMYjR_1-4-1","prevButton":"magritte-prev-button___WMYjR_1-4-1","next-button":"magritte-next-button___f8hJT_1-4-1","nextButton":"magritte-next-button___f8hJT_1-4-1","slide-button":"magritte-slide-button___sY8LB_1-4-1","slideButton":"magritte-slide-button___sY8LB_1-4-1","preview-placeholder":"magritte-preview-placeholder___yuhW1_1-4-1","previewPlaceholder":"magritte-preview-placeholder___yuhW1_1-4-1","gallery-item-loader":"magritte-gallery-item-loader___70TDe_1-4-1","galleryItemLoader":"magritte-gallery-item-loader___70TDe_1-4-1","gallery-item-error-container":"magritte-gallery-item-error-container___Z-HyZ_1-4-1","galleryItemErrorContainer":"magritte-gallery-item-error-container___Z-HyZ_1-4-1","description-bottom-sheet-content":"magritte-description-bottom-sheet-content___swnEV_1-4-1","descriptionBottomSheetContent":"magritte-description-bottom-sheet-content___swnEV_1-4-1","header":"magritte-header___egZXt_1-4-1","video-indicator-slot":"magritte-video-indicator-slot___FX0nD_1-4-1","videoIndicatorSlot":"magritte-video-indicator-slot___FX0nD_1-4-1","video-indicator-slot-content":"magritte-video-indicator-slot-content___kir3R_1-4-1","videoIndicatorSlotContent":"magritte-video-indicator-slot-content___kir3R_1-4-1","video-item-fill":"magritte-video-item-fill___SKpC3_1-4-1","videoItemFill":"magritte-video-item-fill___SKpC3_1-4-1","video-item-controls":"magritte-video-item-controls___oe99H_1-4-1","videoItemControls":"magritte-video-item-controls___oe99H_1-4-1","video-item-controls-with-arrows":"magritte-video-item-controls-with-arrows___d1JxC_1-4-1","videoItemControlsWithArrows":"magritte-video-item-controls-with-arrows___d1JxC_1-4-1","footer":"magritte-footer___rOH-M_1-4-1","description":"magritte-description___dYc-E_1-4-1"};
|
|
3
|
-
|
|
4
|
-
export { styles as s };
|
|
5
|
-
//# sourceMappingURL=media-viewer-BOgoSXlr.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"media-viewer-BOgoSXlr.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|