@hh.ru/magritte-ui-media-viewer 1.4.4 → 1.4.5

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 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-4{
18
+ .magritte-media-viewer___KnrXP_1-4-5{
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-4::before{
31
+ .magritte-media-viewer___KnrXP_1-4-5::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-4{
39
+ .magritte-gallery-placeholder___rUoGL_1-4-5{
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-4{
45
+ .magritte-media-viewer-gallery___P0SnN_1-4-5{
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-4{
54
+ body.magritte-old-layout .magritte-media-viewer-gallery___P0SnN_1-4-5{
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-4{
59
+ body:not(.magritte-old-layout) .magritte-media-viewer-gallery___P0SnN_1-4-5{
60
60
  position:relative;
61
61
  }
62
62
  }
63
- .magritte-gallery-item___Js0Z5_1-4-4{
63
+ .magritte-gallery-item___Js0Z5_1-4-5{
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-4{
72
+ .magritte-gallery-item-transform-container___N8-sA_1-4-5{
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-4{
80
+ .magritte-preview-counter___uP2Hc_1-4-5{
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-4{
85
+ body.magritte-old-layout .magritte-preview-counter___uP2Hc_1-4-5{
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-4{
90
+ body:not(.magritte-old-layout) .magritte-preview-counter___uP2Hc_1-4-5{
91
91
  text-align:left;
92
92
  }
93
93
  }
94
- .magritte-preview-counter___uP2Hc_1-4-4.magritte-with-description___-w7ld_1-4-4{
94
+ .magritte-preview-counter___uP2Hc_1-4-5.magritte-with-description___-w7ld_1-4-5{
95
95
  cursor:pointer;
96
96
  }
97
- .magritte-counter-number___gUpMp_1-4-4{
97
+ .magritte-counter-number___gUpMp_1-4-5{
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-4 .magritte-counter-number___gUpMp_1-4-4{
102
+ .magritte-with-description___-w7ld_1-4-5 .magritte-counter-number___gUpMp_1-4-5{
103
103
  transform:translateY(0);
104
104
  }
105
- .magritte-no-description-placeholder___qc6h2_1-4-4{
105
+ .magritte-no-description-placeholder___qc6h2_1-4-5{
106
106
  display:block;
107
107
  height:18px;
108
108
  padding:0;
109
109
  }
110
- .magritte-preview-zoom-control___026jA_1-4-4{
110
+ .magritte-preview-zoom-control___026jA_1-4-5{
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-4{
118
+ .magritte-preview-container___nwjNY_1-4-5{
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-4{
129
+ body.magritte-old-layout .magritte-preview-container___nwjNY_1-4-5{
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-4{
134
+ body:not(.magritte-old-layout) .magritte-preview-container___nwjNY_1-4-5{
135
135
  padding:16px 24px;
136
136
  }
137
137
  }
138
- .magritte-preview___0Ge4C_1-4-4{
138
+ .magritte-preview___0Ge4C_1-4-5{
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-4{
146
+ body.magritte-old-layout .magritte-preview___0Ge4C_1-4-5{
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-4{
152
+ body:not(.magritte-old-layout) .magritte-preview___0Ge4C_1-4-5{
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-4{
157
+ .magritte-preview-list___SAXLZ_1-4-5{
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-4{
167
+ body.magritte-old-layout .magritte-preview-list___SAXLZ_1-4-5{
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-4{
173
+ body:not(.magritte-old-layout) .magritte-preview-list___SAXLZ_1-4-5{
174
174
  margin:0;
175
175
  gap:8px;
176
176
  }
177
177
  }
178
- .magritte-preview-item___gz5f2_1-4-4{
178
+ .magritte-preview-item___gz5f2_1-4-5{
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-4{
192
+ body.magritte-old-layout .magritte-preview-item___gz5f2_1-4-5{
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-4{
198
+ body:not(.magritte-old-layout) .magritte-preview-item___gz5f2_1-4-5{
199
199
  height:80px;
200
200
  border-radius:8px;
201
201
  }
202
202
  }
203
- .magritte-preview-item-container___JDVsk_1-4-4{
203
+ .magritte-preview-item-container___JDVsk_1-4-5{
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-4{
209
+ body.magritte-old-layout .magritte-preview-item-container___JDVsk_1-4-5{
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-4{
214
+ body:not(.magritte-old-layout) .magritte-preview-item-container___JDVsk_1-4-5{
215
215
  scale:1.66666667;
216
216
  }
217
217
  }
218
- .magritte-preview-item-container___JDVsk_1-4-4 *{
218
+ .magritte-preview-item-container___JDVsk_1-4-5 *{
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-4{
228
+ .magritte-media-viewer-toolbar___2C8nr_1-4-5{
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-4.magritte-no-description___NebrT_1-4-4{
239
+ .magritte-media-viewer-toolbar___2C8nr_1-4-5.magritte-no-description___NebrT_1-4-5{
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-4{
244
+ body.magritte-old-layout .magritte-media-viewer-toolbar___2C8nr_1-4-5{
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-4{
249
+ body:not(.magritte-old-layout) .magritte-media-viewer-toolbar___2C8nr_1-4-5{
250
250
  display:none;
251
251
  }
252
252
  }
253
- .magritte-media-viewer-toolbar-left___YzkJt_1-4-4,
254
- .magritte-media-viewer-toolbar-right___kBER9_1-4-4{
253
+ .magritte-media-viewer-toolbar-left___YzkJt_1-4-5,
254
+ .magritte-media-viewer-toolbar-right___kBER9_1-4-5{
255
255
  display:flex;
256
256
  gap:4px;
257
257
  }
258
- .magritte-media-viewer-toolbar-right___kBER9_1-4-4{
258
+ .magritte-media-viewer-toolbar-right___kBER9_1-4-5{
259
259
  justify-content:end;
260
260
  }
261
- .magritte-prev-button___WMYjR_1-4-4,
262
- .magritte-next-button___f8hJT_1-4-4{
261
+ .magritte-prev-button___WMYjR_1-4-5,
262
+ .magritte-next-button___f8hJT_1-4-5{
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-4:active,
271
- .magritte-next-button___f8hJT_1-4-4:active{
270
+ .magritte-prev-button___WMYjR_1-4-5:active,
271
+ .magritte-next-button___f8hJT_1-4-5: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-4,
276
- body.magritte-old-layout .magritte-next-button___f8hJT_1-4-4{
275
+ body.magritte-old-layout .magritte-prev-button___WMYjR_1-4-5,
276
+ body.magritte-old-layout .magritte-next-button___f8hJT_1-4-5{
277
277
  width:88px;
278
278
  }
279
- body.magritte-old-layout .magritte-prev-button___WMYjR_1-4-4:active,
280
- body.magritte-old-layout .magritte-next-button___f8hJT_1-4-4:active{
279
+ body.magritte-old-layout .magritte-prev-button___WMYjR_1-4-5:active,
280
+ body.magritte-old-layout .magritte-next-button___f8hJT_1-4-5: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-4,
286
- body:not(.magritte-old-layout) .magritte-next-button___f8hJT_1-4-4{
285
+ body:not(.magritte-old-layout) .magritte-prev-button___WMYjR_1-4-5,
286
+ body:not(.magritte-old-layout) .magritte-next-button___f8hJT_1-4-5{
287
287
  width:88px;
288
288
  }
289
- body:not(.magritte-old-layout) .magritte-prev-button___WMYjR_1-4-4:active,
290
- body:not(.magritte-old-layout) .magritte-next-button___f8hJT_1-4-4:active{
289
+ body:not(.magritte-old-layout) .magritte-prev-button___WMYjR_1-4-5:active,
290
+ body:not(.magritte-old-layout) .magritte-next-button___f8hJT_1-4-5:active{
291
291
  background:none;
292
292
  }
293
293
  }
294
- .magritte-prev-button___WMYjR_1-4-4{
294
+ .magritte-prev-button___WMYjR_1-4-5{
295
295
  left:0;
296
296
  }
297
- .magritte-prev-button___WMYjR_1-4-4:active{
297
+ .magritte-prev-button___WMYjR_1-4-5: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-4{
300
+ .magritte-next-button___f8hJT_1-4-5{
301
301
  right:0;
302
302
  }
303
- .magritte-slide-button___sY8LB_1-4-4{
303
+ .magritte-slide-button___sY8LB_1-4-5{
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-4{
313
+ .magritte-preview-placeholder___yuhW1_1-4-5{
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-4{
322
+ body.magritte-old-layout .magritte-preview-placeholder___yuhW1_1-4-5{
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-4{
328
+ body:not(.magritte-old-layout) .magritte-preview-placeholder___yuhW1_1-4-5{
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-4{
333
+ .magritte-gallery-item-loader___70TDe_1-4-5{
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-4{
339
+ .magritte-gallery-item-error-container___Z-HyZ_1-4-5{
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-4{
353
+ .magritte-description-bottom-sheet-content___swnEV_1-4-5{
354
354
  padding:8px 0;
355
355
  }
356
- .magritte-header___egZXt_1-4-4{
356
+ .magritte-header___egZXt_1-4-5{
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-4{
364
+ .magritte-video-indicator-slot___FX0nD_1-4-5{
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-4{
372
+ .magritte-video-indicator-slot-content___kir3R_1-4-5{
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-4{
378
+ .magritte-video-item-fill___SKpC3_1-4-5{
379
379
  position:absolute;
380
380
  inset:0;
381
381
  }
382
- .magritte-video-item-controls___oe99H_1-4-4{
382
+ .magritte-video-item-controls___oe99H_1-4-5{
383
383
  position:absolute;
384
384
  right:0;
385
385
  bottom:0;
@@ -388,25 +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-4.magritte-video-item-controls-with-arrows___d1JxC_1-4-4{
391
+ body.magritte-old-layout .magritte-video-item-controls___oe99H_1-4-5.magritte-video-item-controls-with-arrows___d1JxC_1-4-5{
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-4.magritte-video-item-controls-with-arrows___d1JxC_1-4-4{
396
+ body:not(.magritte-old-layout) .magritte-video-item-controls___oe99H_1-4-5.magritte-video-item-controls-with-arrows___d1JxC_1-4-5{
397
397
  padding:0 88px;
398
398
  }
399
399
  }
400
- .magritte-footer___rOH-M_1-4-4{
400
+ .magritte-footer___rOH-M_1-4-5{
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-footer-video-controls___CYJnk_1-4-4{
406
+ .magritte-footer-video-controls___CYJnk_1-4-5{
407
407
  background:var(--magritte-color-background-overlay-toolbar-v26-0-2);
408
408
  }
409
- .magritte-description___dYc-E_1-4-4{
409
+ .magritte-description___dYc-E_1-4-5{
410
410
  display:inline-block;
411
411
  max-width:100%;
412
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-DnR6s_Cy.js';
21
+ import './media-viewer-CK6Xlh-B.js';
22
22
  import './public/Gallery.js';
23
23
  import '@hh.ru/magritte-common-resize';
24
24
  import '@hh.ru/magritte-ui-icon/icon';
@@ -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-DnR6s_Cy.js';
11
+ import { s as styles } from '../media-viewer-CK6Xlh-B.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-DnR6s_Cy.js';
11
+ import { s as styles } from '../media-viewer-CK6Xlh-B.js';
12
12
  import '@hh.ru/magritte-design-tokens/core-tokens';
13
13
  import './animations.js';
14
14
  import './hooks/useDoubleTapScale.js';
@@ -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-DnR6s_Cy.js';
13
+ import '../media-viewer-CK6Xlh-B.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-DnR6s_Cy.js';
9
+ import { s as styles } from '../media-viewer-CK6Xlh-B.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-DnR6s_Cy.js';
12
+ import { s as styles } from '../media-viewer-CK6Xlh-B.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-DnR6s_Cy.js';
14
+ import { s as styles } from '../media-viewer-CK6Xlh-B.js';
15
15
  import './ImagesLoader.js';
16
16
  import './toolsVisibility.js';
17
17
  import '@use-gesture/react';
@@ -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-DnR6s_Cy.js';
13
+ import { s as styles } from '../media-viewer-CK6Xlh-B.js';
14
14
  import '@hh.ru/magritte-design-tokens/core-tokens';
15
15
  import './animations.js';
16
16
  import './hooks/useDoubleTapScale.js';
@@ -31,7 +31,8 @@ const VideoSlideContent = ({
31
31
  controller,
32
32
  setContentSize,
33
33
  slideControlsSlot,
34
- showDuration
34
+ showDuration,
35
+ onErrorChange
35
36
  }) => {
36
37
  const globalContext = useMediaViewerContext();
37
38
  const { store } = useVideoContext("MediaViewer.VideoItem");
@@ -39,6 +40,7 @@ const VideoSlideContent = ({
39
40
  const fullscreen = useVideoState(store, (state) => state.fullscreen);
40
41
  const started = useVideoState(store, (state) => state.status !== "idle" && state.status !== "error");
41
42
  const playing = useVideoState(store, (state) => state.status === "playing");
43
+ const error = useVideoState(store, (state) => state.status === "error");
42
44
  const { isMobile } = useBreakpoint();
43
45
  const transformStyle = useSlideTransformStyle(controller);
44
46
  const [active, setActive] = useState(() => Math.round(globalContext.currentSlideIndex.get()) === index);
@@ -46,6 +48,7 @@ const VideoSlideContent = ({
46
48
  const footerSlot = useMotionValueState(globalContext.footerVideoControlsSlot);
47
49
  const indicatorSlot = useMotionValueState(globalContext.videoIndicatorSlot);
48
50
  useEffect(() => setContentSize(size), [size, setContentSize]);
51
+ useEffect(() => onErrorChange(error), [error, onErrorChange]);
49
52
  const inFooter = active && isMobile && !!footerSlot;
50
53
  const container = active ? inFooter && footerSlot || slideControlsSlot : null;
51
54
  useLayoutEffect(() => store.setControlsContainer(container), [store, container]);
@@ -101,7 +104,8 @@ const VideoSlideContent = ({
101
104
  style: transformed ? { ...transformStyle, width: size.width, height: size.height } : { scale: 1, rotate: 0, x: 0, y: 0 },
102
105
  children: video
103
106
  }
104
- )
107
+ ),
108
+ retryButtonProps: { "data-media-viewer-interactive": true }
105
109
  };
106
110
  }, [size, fullscreen, transformStyle]);
107
111
  return /* @__PURE__ */ jsx(VideoPlayerHostContext.Provider, { value: host, children: /* @__PURE__ */ jsx(Video.Player, { showDuration, children: active && /* @__PURE__ */ jsx(Video.Controls, {}) }) });
@@ -112,6 +116,7 @@ const VideoItemBody = ({ index, description, showDuration = false, ...props }) =
112
116
  const [setContentSize, controller] = useGalleryItemController(globalContext, url, index, description, "video");
113
117
  const hasMultipleSlides = useMotionValueState(globalContext.totalSlides) > 1;
114
118
  const [controlsSlot, setControlsSlot] = useState(null);
119
+ const [error, setError] = useState(false);
115
120
  const stopControlsWheel = (event) => {
116
121
  const target = event.target;
117
122
  if (controlsSlot?.contains(target) || !event.currentTarget.contains(target)) {
@@ -127,7 +132,8 @@ const VideoItemBody = ({ index, description, showDuration = false, ...props }) =
127
132
  return () => controlsSlot.removeEventListener("wheel", stopWheel);
128
133
  }, [controlsSlot]);
129
134
  return (
130
- // тапы и клики по видео обрабатывает плеер: вьювер не переключает по ним тулбары
135
+ // тапы и клики по видео обрабатывает плеер: вьювер не переключает по ним тулбары. В ошибке видео нет — тап
136
+ // по экрану ошибки переключает тулбары, как на обычном слайде
131
137
  /* @__PURE__ */ jsxs(
132
138
  Slide,
133
139
  {
@@ -135,7 +141,7 @@ const VideoItemBody = ({ index, description, showDuration = false, ...props }) =
135
141
  controller,
136
142
  doubleTapAndPan: false,
137
143
  onWheelCapture: stopControlsWheel,
138
- "data-media-viewer-interactive": true,
144
+ "data-media-viewer-interactive": !error || void 0,
139
145
  children: [
140
146
  /* @__PURE__ */ jsx(Video, { ...props, children: /* @__PURE__ */ jsx(
141
147
  VideoSlideContent,
@@ -144,7 +150,8 @@ const VideoItemBody = ({ index, description, showDuration = false, ...props }) =
144
150
  index,
145
151
  controller,
146
152
  setContentSize,
147
- slideControlsSlot: controlsSlot
153
+ slideControlsSlot: controlsSlot,
154
+ onErrorChange: setError
148
155
  }
149
156
  ) }),
150
157
  /* @__PURE__ */ jsx(
@@ -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 * Показывать бейдж длительности до начала воспроизведения\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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"}
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 onErrorChange: (error: boolean) => void;\n}\n\n/** Связь стора видео со слайдом и вьювером; живёт внутри `<Video>`, чтобы читать его стор */\nconst VideoSlideContent: FC<VideoSlideContentProps> = ({\n index,\n controller,\n setContentSize,\n slideControlsSlot,\n showDuration,\n onErrorChange,\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 error = useVideoState(store, (state) => state.status === 'error');\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 useEffect(() => onErrorChange(error), [error, onErrorChange]);\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 retryButtonProps: { 'data-media-viewer-interactive': true },\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 const [error, setError] = useState(false);\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 // по экрану ошибки переключает тулбары, как на обычном слайде\n <Slide\n index={index}\n controller={controller}\n doubleTapAndPan={false}\n onWheelCapture={stopControlsWheel}\n data-media-viewer-interactive={!error || undefined}\n >\n <Video {...props}>\n <VideoSlideContent\n showDuration={showDuration}\n index={index}\n controller={controller}\n setContentSize={setContentSize}\n slideControlsSlot={controlsSlot}\n onErrorChange={setError}\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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"}
@@ -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-DnR6s_Cy.js';
23
+ import '../media-viewer-CK6Xlh-B.js';
24
24
  import '@hh.ru/magritte-ui-typography';
25
25
  import './hooks/useVirtualization.js';
26
26
  import './VideoItemBody.js';
@@ -0,0 +1,5 @@
1
+ import './index.css';
2
+ var styles = {"media-viewer":"magritte-media-viewer___KnrXP_1-4-5","mediaViewer":"magritte-media-viewer___KnrXP_1-4-5","gallery-placeholder":"magritte-gallery-placeholder___rUoGL_1-4-5","galleryPlaceholder":"magritte-gallery-placeholder___rUoGL_1-4-5","media-viewer-gallery":"magritte-media-viewer-gallery___P0SnN_1-4-5","mediaViewerGallery":"magritte-media-viewer-gallery___P0SnN_1-4-5","gallery-item":"magritte-gallery-item___Js0Z5_1-4-5","galleryItem":"magritte-gallery-item___Js0Z5_1-4-5","gallery-item-transform-container":"magritte-gallery-item-transform-container___N8-sA_1-4-5","galleryItemTransformContainer":"magritte-gallery-item-transform-container___N8-sA_1-4-5","preview-counter":"magritte-preview-counter___uP2Hc_1-4-5","previewCounter":"magritte-preview-counter___uP2Hc_1-4-5","with-description":"magritte-with-description___-w7ld_1-4-5","withDescription":"magritte-with-description___-w7ld_1-4-5","counter-number":"magritte-counter-number___gUpMp_1-4-5","counterNumber":"magritte-counter-number___gUpMp_1-4-5","no-description-placeholder":"magritte-no-description-placeholder___qc6h2_1-4-5","noDescriptionPlaceholder":"magritte-no-description-placeholder___qc6h2_1-4-5","preview-zoom-control":"magritte-preview-zoom-control___026jA_1-4-5","previewZoomControl":"magritte-preview-zoom-control___026jA_1-4-5","preview-container":"magritte-preview-container___nwjNY_1-4-5","previewContainer":"magritte-preview-container___nwjNY_1-4-5","preview":"magritte-preview___0Ge4C_1-4-5","preview-list":"magritte-preview-list___SAXLZ_1-4-5","previewList":"magritte-preview-list___SAXLZ_1-4-5","preview-item":"magritte-preview-item___gz5f2_1-4-5","previewItem":"magritte-preview-item___gz5f2_1-4-5","preview-item-container":"magritte-preview-item-container___JDVsk_1-4-5","previewItemContainer":"magritte-preview-item-container___JDVsk_1-4-5","media-viewer-toolbar":"magritte-media-viewer-toolbar___2C8nr_1-4-5","mediaViewerToolbar":"magritte-media-viewer-toolbar___2C8nr_1-4-5","no-description":"magritte-no-description___NebrT_1-4-5","noDescription":"magritte-no-description___NebrT_1-4-5","media-viewer-toolbar-left":"magritte-media-viewer-toolbar-left___YzkJt_1-4-5","mediaViewerToolbarLeft":"magritte-media-viewer-toolbar-left___YzkJt_1-4-5","media-viewer-toolbar-right":"magritte-media-viewer-toolbar-right___kBER9_1-4-5","mediaViewerToolbarRight":"magritte-media-viewer-toolbar-right___kBER9_1-4-5","prev-button":"magritte-prev-button___WMYjR_1-4-5","prevButton":"magritte-prev-button___WMYjR_1-4-5","next-button":"magritte-next-button___f8hJT_1-4-5","nextButton":"magritte-next-button___f8hJT_1-4-5","slide-button":"magritte-slide-button___sY8LB_1-4-5","slideButton":"magritte-slide-button___sY8LB_1-4-5","preview-placeholder":"magritte-preview-placeholder___yuhW1_1-4-5","previewPlaceholder":"magritte-preview-placeholder___yuhW1_1-4-5","gallery-item-loader":"magritte-gallery-item-loader___70TDe_1-4-5","galleryItemLoader":"magritte-gallery-item-loader___70TDe_1-4-5","gallery-item-error-container":"magritte-gallery-item-error-container___Z-HyZ_1-4-5","galleryItemErrorContainer":"magritte-gallery-item-error-container___Z-HyZ_1-4-5","description-bottom-sheet-content":"magritte-description-bottom-sheet-content___swnEV_1-4-5","descriptionBottomSheetContent":"magritte-description-bottom-sheet-content___swnEV_1-4-5","header":"magritte-header___egZXt_1-4-5","video-indicator-slot":"magritte-video-indicator-slot___FX0nD_1-4-5","videoIndicatorSlot":"magritte-video-indicator-slot___FX0nD_1-4-5","video-indicator-slot-content":"magritte-video-indicator-slot-content___kir3R_1-4-5","videoIndicatorSlotContent":"magritte-video-indicator-slot-content___kir3R_1-4-5","video-item-fill":"magritte-video-item-fill___SKpC3_1-4-5","videoItemFill":"magritte-video-item-fill___SKpC3_1-4-5","video-item-controls":"magritte-video-item-controls___oe99H_1-4-5","videoItemControls":"magritte-video-item-controls___oe99H_1-4-5","video-item-controls-with-arrows":"magritte-video-item-controls-with-arrows___d1JxC_1-4-5","videoItemControlsWithArrows":"magritte-video-item-controls-with-arrows___d1JxC_1-4-5","footer":"magritte-footer___rOH-M_1-4-5","footer-video-controls":"magritte-footer-video-controls___CYJnk_1-4-5","footerVideoControls":"magritte-footer-video-controls___CYJnk_1-4-5","description":"magritte-description___dYc-E_1-4-5"};
3
+
4
+ export { styles as s };
5
+ //# sourceMappingURL=media-viewer-CK6Xlh-B.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media-viewer-CK6Xlh-B.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.4",
3
+ "version": "1.4.5",
4
4
  "main": "index.js",
5
5
  "types": "index.d.ts",
6
6
  "sideEffects": [
@@ -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.2",
45
+ "@hh.ru/magritte-ui-video": "1.0.3",
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": "21a8351462a800f192ef8ed94126b96e0ed48e92"
53
+ "gitHead": "17a448d4bbe9f55b342f0b1ba7612bfe7acd76d7"
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-DnR6s_Cy.js';
6
+ import { s as styles } from '../media-viewer-CK6Xlh-B.js';
7
7
  import '../internal/ImagesLoader.js';
8
8
  import '../internal/toolsVisibility.js';
9
9
  import '@hh.ru/magritte-design-tokens/core-tokens';
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-DnR6s_Cy.js';
13
+ import { s as styles } from '../media-viewer-CK6Xlh-B.js';
14
14
  import '../internal/ImagesLoader.js';
15
15
  import '../internal/toolsVisibility.js';
16
16
  import '@hh.ru/magritte-design-tokens/core-tokens';
@@ -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-DnR6s_Cy.js';
20
+ import '../media-viewer-CK6Xlh-B.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-DnR6s_Cy.js';
5
+ import { s as styles } from '../media-viewer-CK6Xlh-B.js';
6
6
 
7
7
  const NAV_BAR_ACTIONS_DEFAULT_PROPS = {
8
8
  verticalAlign: "top"
@@ -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-DnR6s_Cy.js';
26
+ import { s as styles } from '../media-viewer-CK6Xlh-B.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-DnR6s_Cy.js';
16
+ import { s as styles } from '../media-viewer-CK6Xlh-B.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-DnR6s_Cy.js';
7
+ import { s as styles } from '../media-viewer-CK6Xlh-B.js';
8
8
  import 'react';
9
9
  import 'motion/react';
10
10
  import '@hh.ru/magritte-common-use-translation';
@@ -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-DnR6s_Cy.js';
20
+ import '../media-viewer-CK6Xlh-B.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';
@@ -1,5 +0,0 @@
1
- import './index.css';
2
- var styles = {"media-viewer":"magritte-media-viewer___KnrXP_1-4-4","mediaViewer":"magritte-media-viewer___KnrXP_1-4-4","gallery-placeholder":"magritte-gallery-placeholder___rUoGL_1-4-4","galleryPlaceholder":"magritte-gallery-placeholder___rUoGL_1-4-4","media-viewer-gallery":"magritte-media-viewer-gallery___P0SnN_1-4-4","mediaViewerGallery":"magritte-media-viewer-gallery___P0SnN_1-4-4","gallery-item":"magritte-gallery-item___Js0Z5_1-4-4","galleryItem":"magritte-gallery-item___Js0Z5_1-4-4","gallery-item-transform-container":"magritte-gallery-item-transform-container___N8-sA_1-4-4","galleryItemTransformContainer":"magritte-gallery-item-transform-container___N8-sA_1-4-4","preview-counter":"magritte-preview-counter___uP2Hc_1-4-4","previewCounter":"magritte-preview-counter___uP2Hc_1-4-4","with-description":"magritte-with-description___-w7ld_1-4-4","withDescription":"magritte-with-description___-w7ld_1-4-4","counter-number":"magritte-counter-number___gUpMp_1-4-4","counterNumber":"magritte-counter-number___gUpMp_1-4-4","no-description-placeholder":"magritte-no-description-placeholder___qc6h2_1-4-4","noDescriptionPlaceholder":"magritte-no-description-placeholder___qc6h2_1-4-4","preview-zoom-control":"magritte-preview-zoom-control___026jA_1-4-4","previewZoomControl":"magritte-preview-zoom-control___026jA_1-4-4","preview-container":"magritte-preview-container___nwjNY_1-4-4","previewContainer":"magritte-preview-container___nwjNY_1-4-4","preview":"magritte-preview___0Ge4C_1-4-4","preview-list":"magritte-preview-list___SAXLZ_1-4-4","previewList":"magritte-preview-list___SAXLZ_1-4-4","preview-item":"magritte-preview-item___gz5f2_1-4-4","previewItem":"magritte-preview-item___gz5f2_1-4-4","preview-item-container":"magritte-preview-item-container___JDVsk_1-4-4","previewItemContainer":"magritte-preview-item-container___JDVsk_1-4-4","media-viewer-toolbar":"magritte-media-viewer-toolbar___2C8nr_1-4-4","mediaViewerToolbar":"magritte-media-viewer-toolbar___2C8nr_1-4-4","no-description":"magritte-no-description___NebrT_1-4-4","noDescription":"magritte-no-description___NebrT_1-4-4","media-viewer-toolbar-left":"magritte-media-viewer-toolbar-left___YzkJt_1-4-4","mediaViewerToolbarLeft":"magritte-media-viewer-toolbar-left___YzkJt_1-4-4","media-viewer-toolbar-right":"magritte-media-viewer-toolbar-right___kBER9_1-4-4","mediaViewerToolbarRight":"magritte-media-viewer-toolbar-right___kBER9_1-4-4","prev-button":"magritte-prev-button___WMYjR_1-4-4","prevButton":"magritte-prev-button___WMYjR_1-4-4","next-button":"magritte-next-button___f8hJT_1-4-4","nextButton":"magritte-next-button___f8hJT_1-4-4","slide-button":"magritte-slide-button___sY8LB_1-4-4","slideButton":"magritte-slide-button___sY8LB_1-4-4","preview-placeholder":"magritte-preview-placeholder___yuhW1_1-4-4","previewPlaceholder":"magritte-preview-placeholder___yuhW1_1-4-4","gallery-item-loader":"magritte-gallery-item-loader___70TDe_1-4-4","galleryItemLoader":"magritte-gallery-item-loader___70TDe_1-4-4","gallery-item-error-container":"magritte-gallery-item-error-container___Z-HyZ_1-4-4","galleryItemErrorContainer":"magritte-gallery-item-error-container___Z-HyZ_1-4-4","description-bottom-sheet-content":"magritte-description-bottom-sheet-content___swnEV_1-4-4","descriptionBottomSheetContent":"magritte-description-bottom-sheet-content___swnEV_1-4-4","header":"magritte-header___egZXt_1-4-4","video-indicator-slot":"magritte-video-indicator-slot___FX0nD_1-4-4","videoIndicatorSlot":"magritte-video-indicator-slot___FX0nD_1-4-4","video-indicator-slot-content":"magritte-video-indicator-slot-content___kir3R_1-4-4","videoIndicatorSlotContent":"magritte-video-indicator-slot-content___kir3R_1-4-4","video-item-fill":"magritte-video-item-fill___SKpC3_1-4-4","videoItemFill":"magritte-video-item-fill___SKpC3_1-4-4","video-item-controls":"magritte-video-item-controls___oe99H_1-4-4","videoItemControls":"magritte-video-item-controls___oe99H_1-4-4","video-item-controls-with-arrows":"magritte-video-item-controls-with-arrows___d1JxC_1-4-4","videoItemControlsWithArrows":"magritte-video-item-controls-with-arrows___d1JxC_1-4-4","footer":"magritte-footer___rOH-M_1-4-4","footer-video-controls":"magritte-footer-video-controls___CYJnk_1-4-4","footerVideoControls":"magritte-footer-video-controls___CYJnk_1-4-4","description":"magritte-description___dYc-E_1-4-4"};
3
-
4
- export { styles as s };
5
- //# sourceMappingURL=media-viewer-DnR6s_Cy.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"media-viewer-DnR6s_Cy.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}