@hh.ru/magritte-ui-media-viewer 1.4.0 → 1.4.2

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-0{
18
+ .magritte-media-viewer___KnrXP_1-4-2{
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-0::before{
31
+ .magritte-media-viewer___KnrXP_1-4-2::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-0{
39
+ .magritte-gallery-placeholder___rUoGL_1-4-2{
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-0{
45
+ .magritte-media-viewer-gallery___P0SnN_1-4-2{
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-0{
54
+ body.magritte-old-layout .magritte-media-viewer-gallery___P0SnN_1-4-2{
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-0{
59
+ body:not(.magritte-old-layout) .magritte-media-viewer-gallery___P0SnN_1-4-2{
60
60
  position:relative;
61
61
  }
62
62
  }
63
- .magritte-gallery-item___Js0Z5_1-4-0{
63
+ .magritte-gallery-item___Js0Z5_1-4-2{
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-0{
72
+ .magritte-gallery-item-transform-container___N8-sA_1-4-2{
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-0{
80
+ .magritte-preview-counter___uP2Hc_1-4-2{
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-0{
85
+ body.magritte-old-layout .magritte-preview-counter___uP2Hc_1-4-2{
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-0{
90
+ body:not(.magritte-old-layout) .magritte-preview-counter___uP2Hc_1-4-2{
91
91
  text-align:left;
92
92
  }
93
93
  }
94
- .magritte-preview-counter___uP2Hc_1-4-0.magritte-with-description___-w7ld_1-4-0{
94
+ .magritte-preview-counter___uP2Hc_1-4-2.magritte-with-description___-w7ld_1-4-2{
95
95
  cursor:pointer;
96
96
  }
97
- .magritte-counter-number___gUpMp_1-4-0{
97
+ .magritte-counter-number___gUpMp_1-4-2{
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-0 .magritte-counter-number___gUpMp_1-4-0{
102
+ .magritte-with-description___-w7ld_1-4-2 .magritte-counter-number___gUpMp_1-4-2{
103
103
  transform:translateY(0);
104
104
  }
105
- .magritte-no-description-placeholder___qc6h2_1-4-0{
105
+ .magritte-no-description-placeholder___qc6h2_1-4-2{
106
106
  display:block;
107
107
  height:18px;
108
108
  padding:0;
109
109
  }
110
- .magritte-preview-zoom-control___026jA_1-4-0{
110
+ .magritte-preview-zoom-control___026jA_1-4-2{
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-0{
118
+ .magritte-preview-container___nwjNY_1-4-2{
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-0{
129
+ body.magritte-old-layout .magritte-preview-container___nwjNY_1-4-2{
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-0{
134
+ body:not(.magritte-old-layout) .magritte-preview-container___nwjNY_1-4-2{
135
135
  padding:16px 24px;
136
136
  }
137
137
  }
138
- .magritte-preview___0Ge4C_1-4-0{
138
+ .magritte-preview___0Ge4C_1-4-2{
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-0{
146
+ body.magritte-old-layout .magritte-preview___0Ge4C_1-4-2{
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-0{
152
+ body:not(.magritte-old-layout) .magritte-preview___0Ge4C_1-4-2{
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-0{
157
+ .magritte-preview-list___SAXLZ_1-4-2{
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-0{
167
+ body.magritte-old-layout .magritte-preview-list___SAXLZ_1-4-2{
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-0{
173
+ body:not(.magritte-old-layout) .magritte-preview-list___SAXLZ_1-4-2{
174
174
  margin:0;
175
175
  gap:8px;
176
176
  }
177
177
  }
178
- .magritte-preview-item___gz5f2_1-4-0{
178
+ .magritte-preview-item___gz5f2_1-4-2{
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-0{
192
+ body.magritte-old-layout .magritte-preview-item___gz5f2_1-4-2{
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-0{
198
+ body:not(.magritte-old-layout) .magritte-preview-item___gz5f2_1-4-2{
199
199
  height:80px;
200
200
  border-radius:8px;
201
201
  }
202
202
  }
203
- .magritte-preview-item-container___JDVsk_1-4-0{
203
+ .magritte-preview-item-container___JDVsk_1-4-2{
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-0{
209
+ body.magritte-old-layout .magritte-preview-item-container___JDVsk_1-4-2{
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-0{
214
+ body:not(.magritte-old-layout) .magritte-preview-item-container___JDVsk_1-4-2{
215
215
  scale:1.66666667;
216
216
  }
217
217
  }
218
- .magritte-preview-item-container___JDVsk_1-4-0 *{
218
+ .magritte-preview-item-container___JDVsk_1-4-2 *{
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-0{
228
+ .magritte-media-viewer-toolbar___2C8nr_1-4-2{
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-0.magritte-no-description___NebrT_1-4-0{
239
+ .magritte-media-viewer-toolbar___2C8nr_1-4-2.magritte-no-description___NebrT_1-4-2{
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-0{
244
+ body.magritte-old-layout .magritte-media-viewer-toolbar___2C8nr_1-4-2{
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-0{
249
+ body:not(.magritte-old-layout) .magritte-media-viewer-toolbar___2C8nr_1-4-2{
250
250
  display:none;
251
251
  }
252
252
  }
253
- .magritte-media-viewer-toolbar-left___YzkJt_1-4-0,
254
- .magritte-media-viewer-toolbar-right___kBER9_1-4-0{
253
+ .magritte-media-viewer-toolbar-left___YzkJt_1-4-2,
254
+ .magritte-media-viewer-toolbar-right___kBER9_1-4-2{
255
255
  display:flex;
256
256
  gap:4px;
257
257
  }
258
- .magritte-media-viewer-toolbar-right___kBER9_1-4-0{
258
+ .magritte-media-viewer-toolbar-right___kBER9_1-4-2{
259
259
  justify-content:end;
260
260
  }
261
- .magritte-prev-button___WMYjR_1-4-0,
262
- .magritte-next-button___f8hJT_1-4-0{
261
+ .magritte-prev-button___WMYjR_1-4-2,
262
+ .magritte-next-button___f8hJT_1-4-2{
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-0:active,
271
- .magritte-next-button___f8hJT_1-4-0:active{
270
+ .magritte-prev-button___WMYjR_1-4-2:active,
271
+ .magritte-next-button___f8hJT_1-4-2: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-0,
276
- body.magritte-old-layout .magritte-next-button___f8hJT_1-4-0{
275
+ body.magritte-old-layout .magritte-prev-button___WMYjR_1-4-2,
276
+ body.magritte-old-layout .magritte-next-button___f8hJT_1-4-2{
277
277
  width:88px;
278
278
  }
279
- body.magritte-old-layout .magritte-prev-button___WMYjR_1-4-0:active,
280
- body.magritte-old-layout .magritte-next-button___f8hJT_1-4-0:active{
279
+ body.magritte-old-layout .magritte-prev-button___WMYjR_1-4-2:active,
280
+ body.magritte-old-layout .magritte-next-button___f8hJT_1-4-2: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-0,
286
- body:not(.magritte-old-layout) .magritte-next-button___f8hJT_1-4-0{
285
+ body:not(.magritte-old-layout) .magritte-prev-button___WMYjR_1-4-2,
286
+ body:not(.magritte-old-layout) .magritte-next-button___f8hJT_1-4-2{
287
287
  width:88px;
288
288
  }
289
- body:not(.magritte-old-layout) .magritte-prev-button___WMYjR_1-4-0:active,
290
- body:not(.magritte-old-layout) .magritte-next-button___f8hJT_1-4-0:active{
289
+ body:not(.magritte-old-layout) .magritte-prev-button___WMYjR_1-4-2:active,
290
+ body:not(.magritte-old-layout) .magritte-next-button___f8hJT_1-4-2:active{
291
291
  background:none;
292
292
  }
293
293
  }
294
- .magritte-prev-button___WMYjR_1-4-0{
294
+ .magritte-prev-button___WMYjR_1-4-2{
295
295
  left:0;
296
296
  }
297
- .magritte-prev-button___WMYjR_1-4-0:active{
297
+ .magritte-prev-button___WMYjR_1-4-2: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-0{
300
+ .magritte-next-button___f8hJT_1-4-2{
301
301
  right:0;
302
302
  }
303
- .magritte-slide-button___sY8LB_1-4-0{
303
+ .magritte-slide-button___sY8LB_1-4-2{
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-0{
313
+ .magritte-preview-placeholder___yuhW1_1-4-2{
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-0{
322
+ body.magritte-old-layout .magritte-preview-placeholder___yuhW1_1-4-2{
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-0{
328
+ body:not(.magritte-old-layout) .magritte-preview-placeholder___yuhW1_1-4-2{
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-0{
333
+ .magritte-gallery-item-loader___70TDe_1-4-2{
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-0{
339
+ .magritte-gallery-item-error-container___Z-HyZ_1-4-2{
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-0{
353
+ .magritte-description-bottom-sheet-content___swnEV_1-4-2{
354
354
  padding:8px 0;
355
355
  }
356
- .magritte-header___egZXt_1-4-0{
356
+ .magritte-header___egZXt_1-4-2{
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-0{
364
+ .magritte-video-indicator-slot___FX0nD_1-4-2{
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-0{
372
+ .magritte-video-indicator-slot-content___kir3R_1-4-2{
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-0{
378
+ .magritte-video-item-fill___SKpC3_1-4-2{
379
379
  position:absolute;
380
380
  inset:0;
381
381
  }
382
- .magritte-video-item-controls___oe99H_1-4-0{
382
+ .magritte-video-item-controls___oe99H_1-4-2{
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-0.magritte-video-item-controls-with-arrows___d1JxC_1-4-0{
391
+ body.magritte-old-layout .magritte-video-item-controls___oe99H_1-4-2.magritte-video-item-controls-with-arrows___d1JxC_1-4-2{
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-0.magritte-video-item-controls-with-arrows___d1JxC_1-4-0{
396
+ body:not(.magritte-old-layout) .magritte-video-item-controls___oe99H_1-4-2.magritte-video-item-controls-with-arrows___d1JxC_1-4-2{
397
397
  padding:0 88px;
398
398
  }
399
399
  }
400
- .magritte-footer___rOH-M_1-4-0{
400
+ .magritte-footer___rOH-M_1-4-2{
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-description___dYc-E_1-4-0{
406
+ .magritte-footer-video-controls___CYJnk_1-4-2{
407
+ background:var(--magritte-color-background-overlay-toolbar-v26-0-2);
408
+ }
409
+ .magritte-description___dYc-E_1-4-2{
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-BdPXJpJU.js';
21
+ import './media-viewer-VETApJBp.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-BdPXJpJU.js';
11
+ import { s as styles } from '../media-viewer-VETApJBp.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-BdPXJpJU.js';
11
+ import { s as styles } from '../media-viewer-VETApJBp.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-BdPXJpJU.js';
13
+ import '../media-viewer-VETApJBp.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-BdPXJpJU.js';
9
+ import { s as styles } from '../media-viewer-VETApJBp.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-BdPXJpJU.js';
12
+ import { s as styles } from '../media-viewer-VETApJBp.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-BdPXJpJU.js';
14
+ import { s as styles } from '../media-viewer-VETApJBp.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-BdPXJpJU.js';
13
+ import { s as styles } from '../media-viewer-VETApJBp.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 = ({ index, controller, setContentSize, slideControlsSlot }) => {
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
- useEffect(() => {
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
- const source = globalContext.toolsVisibility.attachSource();
93
- const sync = () => source.setVisible(store.getState().controlsVisible);
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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"}
@@ -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-BdPXJpJU.js';
23
+ import '../media-viewer-VETApJBp.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
- * Подключить внешний источник видимости (контролы видео на mobile). Пока он подключён, видимость задаёт только
18
- * он: активность, тапы и таймер не действуют. После отключения тулбары показываются, автоскрытие продолжается
17
+ * Исключение от видео: `shown` — показать и не прятать (фокус с клавиатуры в контролах, перетаскивание бегунка),
18
+ * `hidden` — спрятать и не показывать от активности (ускорение удержанием на desktop)
19
19
  */
20
- attachSource: () => ToolsVisibilitySource;
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 source = null;
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 && !source) {
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 (source) {
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 (source) {
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
- attachSource: () => {
56
- const token = {};
57
- source = token;
58
- clearTimer();
59
- return {
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\n/** Внешний источник видимости тулбаров */\nexport interface ToolsVisibilitySource {\n setVisible: (visible: boolean) => void;\n detach: VoidFunction;\n}\n\nexport interface ToolsVisibility {\n /** Активность пользователя (движение мыши, клик): показать тулбары и перезапустить автоскрытие */\n notifyActivity: VoidFunction;\n /** Тап по свободной области (mobile): показать или спрятать тулбары */\n toggle: VoidFunction;\n /** Автоскрытие по бездействию: включено на desktop */\n setAutoHide: (enabled: boolean) => void;\n /**\n * Подключить внешний источник видимости (контролы видео на mobile). Пока он подключён, видимость задаёт только\n * он: активность, тапы и таймер не действуют. После отключения тулбары показываются, автоскрытие продолжается\n */\n attachSource: () => ToolsVisibilitySource;\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 */\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 source: object | null = null;\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 };\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 && !source) {\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 (source) {\n return;\n }\n animateTo(true, durationOf('magritte-semantic-animation-time-l'));\n restartTimer();\n },\n toggle: () => {\n if (source) {\n return;\n }\n animateTo(target === 1, durationOf('magritte-semantic-animation-time-m'));\n restartTimer();\n },\n setAutoHide: (enabled) => {\n autoHide = enabled;\n restartTimer();\n },\n attachSource: () => {\n const token = {};\n source = token;\n clearTimer();\n return {\n setVisible: (visible) => {\n if (source === token) {\n animateTo(visible, durationOf('magritte-semantic-animation-time-m'));\n }\n },\n detach: () => {\n if (source !== token) {\n return;\n }\n source = null;\n animateTo(true, durationOf('magritte-semantic-animation-time-m'));\n restartTimer();\n },\n };\n },\n };\n};\n"],"names":[],"mappings":"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"}
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-2","mediaViewer":"magritte-media-viewer___KnrXP_1-4-2","gallery-placeholder":"magritte-gallery-placeholder___rUoGL_1-4-2","galleryPlaceholder":"magritte-gallery-placeholder___rUoGL_1-4-2","media-viewer-gallery":"magritte-media-viewer-gallery___P0SnN_1-4-2","mediaViewerGallery":"magritte-media-viewer-gallery___P0SnN_1-4-2","gallery-item":"magritte-gallery-item___Js0Z5_1-4-2","galleryItem":"magritte-gallery-item___Js0Z5_1-4-2","gallery-item-transform-container":"magritte-gallery-item-transform-container___N8-sA_1-4-2","galleryItemTransformContainer":"magritte-gallery-item-transform-container___N8-sA_1-4-2","preview-counter":"magritte-preview-counter___uP2Hc_1-4-2","previewCounter":"magritte-preview-counter___uP2Hc_1-4-2","with-description":"magritte-with-description___-w7ld_1-4-2","withDescription":"magritte-with-description___-w7ld_1-4-2","counter-number":"magritte-counter-number___gUpMp_1-4-2","counterNumber":"magritte-counter-number___gUpMp_1-4-2","no-description-placeholder":"magritte-no-description-placeholder___qc6h2_1-4-2","noDescriptionPlaceholder":"magritte-no-description-placeholder___qc6h2_1-4-2","preview-zoom-control":"magritte-preview-zoom-control___026jA_1-4-2","previewZoomControl":"magritte-preview-zoom-control___026jA_1-4-2","preview-container":"magritte-preview-container___nwjNY_1-4-2","previewContainer":"magritte-preview-container___nwjNY_1-4-2","preview":"magritte-preview___0Ge4C_1-4-2","preview-list":"magritte-preview-list___SAXLZ_1-4-2","previewList":"magritte-preview-list___SAXLZ_1-4-2","preview-item":"magritte-preview-item___gz5f2_1-4-2","previewItem":"magritte-preview-item___gz5f2_1-4-2","preview-item-container":"magritte-preview-item-container___JDVsk_1-4-2","previewItemContainer":"magritte-preview-item-container___JDVsk_1-4-2","media-viewer-toolbar":"magritte-media-viewer-toolbar___2C8nr_1-4-2","mediaViewerToolbar":"magritte-media-viewer-toolbar___2C8nr_1-4-2","no-description":"magritte-no-description___NebrT_1-4-2","noDescription":"magritte-no-description___NebrT_1-4-2","media-viewer-toolbar-left":"magritte-media-viewer-toolbar-left___YzkJt_1-4-2","mediaViewerToolbarLeft":"magritte-media-viewer-toolbar-left___YzkJt_1-4-2","media-viewer-toolbar-right":"magritte-media-viewer-toolbar-right___kBER9_1-4-2","mediaViewerToolbarRight":"magritte-media-viewer-toolbar-right___kBER9_1-4-2","prev-button":"magritte-prev-button___WMYjR_1-4-2","prevButton":"magritte-prev-button___WMYjR_1-4-2","next-button":"magritte-next-button___f8hJT_1-4-2","nextButton":"magritte-next-button___f8hJT_1-4-2","slide-button":"magritte-slide-button___sY8LB_1-4-2","slideButton":"magritte-slide-button___sY8LB_1-4-2","preview-placeholder":"magritte-preview-placeholder___yuhW1_1-4-2","previewPlaceholder":"magritte-preview-placeholder___yuhW1_1-4-2","gallery-item-loader":"magritte-gallery-item-loader___70TDe_1-4-2","galleryItemLoader":"magritte-gallery-item-loader___70TDe_1-4-2","gallery-item-error-container":"magritte-gallery-item-error-container___Z-HyZ_1-4-2","galleryItemErrorContainer":"magritte-gallery-item-error-container___Z-HyZ_1-4-2","description-bottom-sheet-content":"magritte-description-bottom-sheet-content___swnEV_1-4-2","descriptionBottomSheetContent":"magritte-description-bottom-sheet-content___swnEV_1-4-2","header":"magritte-header___egZXt_1-4-2","video-indicator-slot":"magritte-video-indicator-slot___FX0nD_1-4-2","videoIndicatorSlot":"magritte-video-indicator-slot___FX0nD_1-4-2","video-indicator-slot-content":"magritte-video-indicator-slot-content___kir3R_1-4-2","videoIndicatorSlotContent":"magritte-video-indicator-slot-content___kir3R_1-4-2","video-item-fill":"magritte-video-item-fill___SKpC3_1-4-2","videoItemFill":"magritte-video-item-fill___SKpC3_1-4-2","video-item-controls":"magritte-video-item-controls___oe99H_1-4-2","videoItemControls":"magritte-video-item-controls___oe99H_1-4-2","video-item-controls-with-arrows":"magritte-video-item-controls-with-arrows___d1JxC_1-4-2","videoItemControlsWithArrows":"magritte-video-item-controls-with-arrows___d1JxC_1-4-2","footer":"magritte-footer___rOH-M_1-4-2","footer-video-controls":"magritte-footer-video-controls___CYJnk_1-4-2","footerVideoControls":"magritte-footer-video-controls___CYJnk_1-4-2","description":"magritte-description___dYc-E_1-4-2"};
3
+
4
+ export { styles as s };
5
+ //# sourceMappingURL=media-viewer-VETApJBp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media-viewer-VETApJBp.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.0",
3
+ "version": "1.4.2",
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.60",
36
+ "@hh.ru/magritte-ui-bottom-sheet": "9.4.61",
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.1",
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": "8698a3192e8b1e240ed711246219b782df00195e"
53
+ "gitHead": "815900ad0a3f7936efeab31da95a22a2f814a1ba"
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-BdPXJpJU.js';
6
+ import { s as styles } from '../media-viewer-VETApJBp.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(motion.div, { ref: setVideoControlsSlot, style: { opacity: globalContext.footerVideoControlsOpacity } }),
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
  };
@@ -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 ref={setVideoControlsSlot} style={{ opacity: globalContext.footerVideoControlsOpacity }} />\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,oBAAC,GAAA,CAAA,MAAA,CAAO,GAAP,EAAA,EAAW,GAAK,EAAA,oBAAA,EAAsB,OAAO,EAAE,OAAA,EAAS,aAAc,CAAA,0BAAA,EAA8B,EAAA,CAAA;AAAA,IACpG,QAAA;AAAA,GACL,EAAA,CAAA,CAAA;AAER;;;;"}
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-BdPXJpJU.js';
13
+ import { s as styles } from '../media-viewer-VETApJBp.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-BdPXJpJU.js';
20
+ import '../media-viewer-VETApJBp.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-BdPXJpJU.js';
5
+ import { s as styles } from '../media-viewer-VETApJBp.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-BdPXJpJU.js';
26
+ import { s as styles } from '../media-viewer-VETApJBp.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-BdPXJpJU.js';
16
+ import { s as styles } from '../media-viewer-VETApJBp.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-BdPXJpJU.js';
7
+ import { s as styles } from '../media-viewer-VETApJBp.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-BdPXJpJU.js';
20
+ import '../media-viewer-VETApJBp.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-0","mediaViewer":"magritte-media-viewer___KnrXP_1-4-0","gallery-placeholder":"magritte-gallery-placeholder___rUoGL_1-4-0","galleryPlaceholder":"magritte-gallery-placeholder___rUoGL_1-4-0","media-viewer-gallery":"magritte-media-viewer-gallery___P0SnN_1-4-0","mediaViewerGallery":"magritte-media-viewer-gallery___P0SnN_1-4-0","gallery-item":"magritte-gallery-item___Js0Z5_1-4-0","galleryItem":"magritte-gallery-item___Js0Z5_1-4-0","gallery-item-transform-container":"magritte-gallery-item-transform-container___N8-sA_1-4-0","galleryItemTransformContainer":"magritte-gallery-item-transform-container___N8-sA_1-4-0","preview-counter":"magritte-preview-counter___uP2Hc_1-4-0","previewCounter":"magritte-preview-counter___uP2Hc_1-4-0","with-description":"magritte-with-description___-w7ld_1-4-0","withDescription":"magritte-with-description___-w7ld_1-4-0","counter-number":"magritte-counter-number___gUpMp_1-4-0","counterNumber":"magritte-counter-number___gUpMp_1-4-0","no-description-placeholder":"magritte-no-description-placeholder___qc6h2_1-4-0","noDescriptionPlaceholder":"magritte-no-description-placeholder___qc6h2_1-4-0","preview-zoom-control":"magritte-preview-zoom-control___026jA_1-4-0","previewZoomControl":"magritte-preview-zoom-control___026jA_1-4-0","preview-container":"magritte-preview-container___nwjNY_1-4-0","previewContainer":"magritte-preview-container___nwjNY_1-4-0","preview":"magritte-preview___0Ge4C_1-4-0","preview-list":"magritte-preview-list___SAXLZ_1-4-0","previewList":"magritte-preview-list___SAXLZ_1-4-0","preview-item":"magritte-preview-item___gz5f2_1-4-0","previewItem":"magritte-preview-item___gz5f2_1-4-0","preview-item-container":"magritte-preview-item-container___JDVsk_1-4-0","previewItemContainer":"magritte-preview-item-container___JDVsk_1-4-0","media-viewer-toolbar":"magritte-media-viewer-toolbar___2C8nr_1-4-0","mediaViewerToolbar":"magritte-media-viewer-toolbar___2C8nr_1-4-0","no-description":"magritte-no-description___NebrT_1-4-0","noDescription":"magritte-no-description___NebrT_1-4-0","media-viewer-toolbar-left":"magritte-media-viewer-toolbar-left___YzkJt_1-4-0","mediaViewerToolbarLeft":"magritte-media-viewer-toolbar-left___YzkJt_1-4-0","media-viewer-toolbar-right":"magritte-media-viewer-toolbar-right___kBER9_1-4-0","mediaViewerToolbarRight":"magritte-media-viewer-toolbar-right___kBER9_1-4-0","prev-button":"magritte-prev-button___WMYjR_1-4-0","prevButton":"magritte-prev-button___WMYjR_1-4-0","next-button":"magritte-next-button___f8hJT_1-4-0","nextButton":"magritte-next-button___f8hJT_1-4-0","slide-button":"magritte-slide-button___sY8LB_1-4-0","slideButton":"magritte-slide-button___sY8LB_1-4-0","preview-placeholder":"magritte-preview-placeholder___yuhW1_1-4-0","previewPlaceholder":"magritte-preview-placeholder___yuhW1_1-4-0","gallery-item-loader":"magritte-gallery-item-loader___70TDe_1-4-0","galleryItemLoader":"magritte-gallery-item-loader___70TDe_1-4-0","gallery-item-error-container":"magritte-gallery-item-error-container___Z-HyZ_1-4-0","galleryItemErrorContainer":"magritte-gallery-item-error-container___Z-HyZ_1-4-0","description-bottom-sheet-content":"magritte-description-bottom-sheet-content___swnEV_1-4-0","descriptionBottomSheetContent":"magritte-description-bottom-sheet-content___swnEV_1-4-0","header":"magritte-header___egZXt_1-4-0","video-indicator-slot":"magritte-video-indicator-slot___FX0nD_1-4-0","videoIndicatorSlot":"magritte-video-indicator-slot___FX0nD_1-4-0","video-indicator-slot-content":"magritte-video-indicator-slot-content___kir3R_1-4-0","videoIndicatorSlotContent":"magritte-video-indicator-slot-content___kir3R_1-4-0","video-item-fill":"magritte-video-item-fill___SKpC3_1-4-0","videoItemFill":"magritte-video-item-fill___SKpC3_1-4-0","video-item-controls":"magritte-video-item-controls___oe99H_1-4-0","videoItemControls":"magritte-video-item-controls___oe99H_1-4-0","video-item-controls-with-arrows":"magritte-video-item-controls-with-arrows___d1JxC_1-4-0","videoItemControlsWithArrows":"magritte-video-item-controls-with-arrows___d1JxC_1-4-0","footer":"magritte-footer___rOH-M_1-4-0","description":"magritte-description___dYc-E_1-4-0"};
3
-
4
- export { styles as s };
5
- //# sourceMappingURL=media-viewer-BdPXJpJU.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"media-viewer-BdPXJpJU.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}