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

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.
Files changed (71) hide show
  1. package/index.css +107 -70
  2. package/index.d.ts +1 -0
  3. package/index.js +9 -2
  4. package/index.js.map +1 -1
  5. package/index.mock.js +1 -0
  6. package/index.mock.js.map +1 -1
  7. package/internal/Counter.d.ts +4 -4
  8. package/internal/Counter.js +3 -2
  9. package/internal/Counter.js.map +1 -1
  10. package/internal/GalleryItemBody.d.ts +3 -1
  11. package/internal/GalleryItemBody.js +30 -75
  12. package/internal/GalleryItemBody.js.map +1 -1
  13. package/internal/PreviewItem.d.ts +1 -1
  14. package/internal/PreviewItem.js +3 -1
  15. package/internal/PreviewItem.js.map +1 -1
  16. package/internal/PreviewItemBody.d.ts +1 -1
  17. package/internal/PreviewItemBody.js +25 -17
  18. package/internal/PreviewItemBody.js.map +1 -1
  19. package/internal/PreviewZoomControl.js +2 -1
  20. package/internal/PreviewZoomControl.js.map +1 -1
  21. package/internal/Slide.d.ts +20 -0
  22. package/internal/Slide.js +79 -0
  23. package/internal/Slide.js.map +1 -0
  24. package/internal/VideoItemBody.d.ts +12 -0
  25. package/internal/VideoItemBody.js +172 -0
  26. package/internal/VideoItemBody.js.map +1 -0
  27. package/internal/context.d.ts +31 -6
  28. package/internal/context.js +21 -3
  29. package/internal/context.js.map +1 -1
  30. package/internal/hooks/useAutoHideTools.d.ts +1 -0
  31. package/internal/hooks/useAutoHideTools.js +6 -42
  32. package/internal/hooks/useAutoHideTools.js.map +1 -1
  33. package/internal/hooks/useGalleryItemController.d.ts +4 -1
  34. package/internal/hooks/useGalleryItemController.js +7 -4
  35. package/internal/hooks/useGalleryItemController.js.map +1 -1
  36. package/internal/hooks/useSwipe.js +2 -1
  37. package/internal/hooks/useSwipe.js.map +1 -1
  38. package/internal/hooks/useSwipeToClose.js +1 -1
  39. package/internal/hooks/useSwipeToClose.js.map +1 -1
  40. package/internal/hooks/useTapToToggleTools.js +1 -9
  41. package/internal/hooks/useTapToToggleTools.js.map +1 -1
  42. package/internal/slides.d.ts +8 -0
  43. package/internal/slides.js +43 -0
  44. package/internal/slides.js.map +1 -0
  45. package/internal/toolsVisibility.d.ts +26 -0
  46. package/internal/toolsVisibility.js +79 -0
  47. package/internal/toolsVisibility.js.map +1 -0
  48. package/media-viewer-BdPXJpJU.js +5 -0
  49. package/media-viewer-BdPXJpJU.js.map +1 -0
  50. package/package.json +5 -4
  51. package/public/Footer.js +19 -3
  52. package/public/Footer.js.map +1 -1
  53. package/public/Gallery.js +15 -5
  54. package/public/Gallery.js.map +1 -1
  55. package/public/GalleryItem.js +4 -2
  56. package/public/GalleryItem.js.map +1 -1
  57. package/public/Header.js +1 -1
  58. package/public/MediaViewer.d.ts +3 -1
  59. package/public/MediaViewer.js +23 -5
  60. package/public/MediaViewer.js.map +1 -1
  61. package/public/Preview.js +25 -4
  62. package/public/Preview.js.map +1 -1
  63. package/public/Toolbar.js +3 -2
  64. package/public/Toolbar.js.map +1 -1
  65. package/public/Tools.js +2 -1
  66. package/public/Tools.js.map +1 -1
  67. package/public/VideoItem.d.ts +3 -0
  68. package/public/VideoItem.js +37 -0
  69. package/public/VideoItem.js.map +1 -0
  70. package/media-viewer-C2yr07Xb.js +0 -5
  71. package/media-viewer-C2yr07Xb.js.map +0 -1
package/index.css CHANGED
@@ -15,11 +15,12 @@
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-3-53{
18
+ .magritte-media-viewer___KnrXP_1-4-0{
19
19
  position:fixed;
20
20
  inset:0;
21
21
  display:grid;
22
- grid-template-rows:auto 1fr auto;
22
+ grid-template-rows:auto 1fr auto auto;
23
+ grid-template-areas:'header' 'gallery' 'footer' 'toolbar';
23
24
  flex-direction:column;
24
25
  touch-action:none;
25
26
  user-select:none;
@@ -27,7 +28,7 @@
27
28
  --media-viewer-background-opacity:calc(1 - var(--magritte-ui-media-viewer-close-progress));
28
29
  --magritte-ui-nav-bar-background-color-override:var(--magritte-color-background-overlay-toolbar-v26-0-2);
29
30
  }
30
- .magritte-media-viewer___KnrXP_1-3-53::before{
31
+ .magritte-media-viewer___KnrXP_1-4-0::before{
31
32
  content:'';
32
33
  position:absolute;
33
34
  inset:0;
@@ -35,13 +36,13 @@
35
36
  opacity:var(--media-viewer-background-opacity);
36
37
  pointer-events:none;
37
38
  }
38
- .magritte-gallery-placeholder___rUoGL_1-3-53{
39
+ .magritte-gallery-placeholder___rUoGL_1-4-0{
39
40
  display:flex;
40
41
  align-items:stretch;
41
- grid-row:2;
42
+ grid-area:gallery;
42
43
  min-height:0;
43
44
  }
44
- .magritte-media-viewer-gallery___P0SnN_1-3-53{
45
+ .magritte-media-viewer-gallery___P0SnN_1-4-0{
45
46
  display:grid;
46
47
  flex-grow:1;
47
48
  contain:layout size;
@@ -50,16 +51,16 @@
50
51
  inset:0;
51
52
  }
52
53
  @media (min-width: 1020px){
53
- body.magritte-old-layout .magritte-media-viewer-gallery___P0SnN_1-3-53{
54
+ body.magritte-old-layout .magritte-media-viewer-gallery___P0SnN_1-4-0{
54
55
  position:relative;
55
56
  }
56
57
  }
57
58
  @media (min-width: 1024px){
58
- body:not(.magritte-old-layout) .magritte-media-viewer-gallery___P0SnN_1-3-53{
59
+ body:not(.magritte-old-layout) .magritte-media-viewer-gallery___P0SnN_1-4-0{
59
60
  position:relative;
60
61
  }
61
62
  }
62
- .magritte-gallery-item___Js0Z5_1-3-53{
63
+ .magritte-gallery-item___Js0Z5_1-4-0{
63
64
  position:relative;
64
65
  grid-area:1 / 1;
65
66
  contain:size;
@@ -68,7 +69,7 @@
68
69
  overflow-y:visible;
69
70
  opacity:calc(1 - var(--magritte-ui-media-viewer-image-close-progress, 0));
70
71
  }
71
- .magritte-gallery-item-transform-container___N8-sA_1-3-53{
72
+ .magritte-gallery-item-transform-container___N8-sA_1-4-0{
72
73
  position:absolute;
73
74
  top:50%;
74
75
  left:50%;
@@ -76,37 +77,37 @@
76
77
  will-change:transform;
77
78
  touch-action:none;
78
79
  }
79
- .magritte-preview-counter___uP2Hc_1-3-53{
80
+ .magritte-preview-counter___uP2Hc_1-4-0{
80
81
  min-width:0;
81
82
  text-align:center;
82
83
  }
83
84
  @media (min-width: 1020px){
84
- body.magritte-old-layout .magritte-preview-counter___uP2Hc_1-3-53{
85
+ body.magritte-old-layout .magritte-preview-counter___uP2Hc_1-4-0{
85
86
  text-align:left;
86
87
  }
87
88
  }
88
89
  @media (min-width: 1024px){
89
- body:not(.magritte-old-layout) .magritte-preview-counter___uP2Hc_1-3-53{
90
+ body:not(.magritte-old-layout) .magritte-preview-counter___uP2Hc_1-4-0{
90
91
  text-align:left;
91
92
  }
92
93
  }
93
- .magritte-preview-counter___uP2Hc_1-3-53.magritte-with-description___-w7ld_1-3-53{
94
+ .magritte-preview-counter___uP2Hc_1-4-0.magritte-with-description___-w7ld_1-4-0{
94
95
  cursor:pointer;
95
96
  }
96
- .magritte-counter-number___gUpMp_1-3-53{
97
+ .magritte-counter-number___gUpMp_1-4-0{
97
98
  display:block;
98
99
  transform:translateY(calc(18px * 0.5));
99
100
  transition:transform var(--magritte-semantic-animation-time-m-duration-v26-0-2) var(--magritte-semantic-animation-ease-base-timing-function-v26-0-2);
100
101
  }
101
- .magritte-with-description___-w7ld_1-3-53 .magritte-counter-number___gUpMp_1-3-53{
102
+ .magritte-with-description___-w7ld_1-4-0 .magritte-counter-number___gUpMp_1-4-0{
102
103
  transform:translateY(0);
103
104
  }
104
- .magritte-no-description-placeholder___qc6h2_1-3-53{
105
+ .magritte-no-description-placeholder___qc6h2_1-4-0{
105
106
  display:block;
106
107
  height:18px;
107
108
  padding:0;
108
109
  }
109
- .magritte-preview-zoom-control___026jA_1-3-53{
110
+ .magritte-preview-zoom-control___026jA_1-4-0{
110
111
  display:flex;
111
112
  flex-direction:row;
112
113
  gap:2px;
@@ -114,27 +115,27 @@
114
115
  justify-self:end;
115
116
  grid-column:3;
116
117
  }
117
- .magritte-preview-container___nwjNY_1-3-53{
118
+ .magritte-preview-container___nwjNY_1-4-0{
118
119
  display:grid;
119
120
  grid-template-columns:1fr auto 1fr;
120
121
  gap:16px;
121
122
  padding:4px 16px;
122
123
  background:var(--magritte-color-background-overlay-toolbar-v26-0-2);
123
124
  align-items:center;
124
- grid-row:3;
125
+ grid-area:footer;
125
126
  z-index:10;
126
127
  }
127
128
  @media (min-width: 1020px){
128
- body.magritte-old-layout .magritte-preview-container___nwjNY_1-3-53{
129
+ body.magritte-old-layout .magritte-preview-container___nwjNY_1-4-0{
129
130
  padding:16px 24px;
130
131
  }
131
132
  }
132
133
  @media (min-width: 1024px){
133
- body:not(.magritte-old-layout) .magritte-preview-container___nwjNY_1-3-53{
134
+ body:not(.magritte-old-layout) .magritte-preview-container___nwjNY_1-4-0{
134
135
  padding:16px 24px;
135
136
  }
136
137
  }
137
- .magritte-preview___0Ge4C_1-3-53{
138
+ .magritte-preview___0Ge4C_1-4-0{
138
139
  display:flex;
139
140
  flex-direction:row;
140
141
  touch-action:none;
@@ -142,18 +143,18 @@
142
143
  min-width:0;
143
144
  }
144
145
  @media (min-width: 1020px){
145
- body.magritte-old-layout .magritte-preview___0Ge4C_1-3-53{
146
+ body.magritte-old-layout .magritte-preview___0Ge4C_1-4-0{
146
147
  max-width:calc(((40 + 8) * (var(--media-viewer-max-visible-items) - 1) + 80) * 1px);
147
148
  overflow:hidden;
148
149
  }
149
150
  }
150
151
  @media (min-width: 1024px){
151
- body:not(.magritte-old-layout) .magritte-preview___0Ge4C_1-3-53{
152
+ body:not(.magritte-old-layout) .magritte-preview___0Ge4C_1-4-0{
152
153
  max-width:calc(((40 + 8) * (var(--media-viewer-max-visible-items) - 1) + 80) * 1px);
153
154
  overflow:hidden;
154
155
  }
155
156
  }
156
- .magritte-preview-list___SAXLZ_1-3-53{
157
+ .magritte-preview-list___SAXLZ_1-4-0{
157
158
  margin-left:50%;
158
159
  contain:layout paint;
159
160
  display:flex;
@@ -163,18 +164,18 @@
163
164
  flex:0 0 auto;
164
165
  }
165
166
  @media (min-width: 1020px){
166
- body.magritte-old-layout .magritte-preview-list___SAXLZ_1-3-53{
167
+ body.magritte-old-layout .magritte-preview-list___SAXLZ_1-4-0{
167
168
  margin:0;
168
169
  gap:8px;
169
170
  }
170
171
  }
171
172
  @media (min-width: 1024px){
172
- body:not(.magritte-old-layout) .magritte-preview-list___SAXLZ_1-3-53{
173
+ body:not(.magritte-old-layout) .magritte-preview-list___SAXLZ_1-4-0{
173
174
  margin:0;
174
175
  gap:8px;
175
176
  }
176
177
  }
177
- .magritte-preview-item___gz5f2_1-3-53{
178
+ .magritte-preview-item___gz5f2_1-4-0{
178
179
  contain:layout paint size;
179
180
  position:relative;
180
181
  flex-shrink:0;
@@ -188,33 +189,33 @@
188
189
  background-color:var(--magritte-color-component-skeleton-background-content-v26-0-2);
189
190
  }
190
191
  @media (min-width: 1020px){
191
- body.magritte-old-layout .magritte-preview-item___gz5f2_1-3-53{
192
+ body.magritte-old-layout .magritte-preview-item___gz5f2_1-4-0{
192
193
  height:80px;
193
194
  border-radius:8px;
194
195
  }
195
196
  }
196
197
  @media (min-width: 1024px){
197
- body:not(.magritte-old-layout) .magritte-preview-item___gz5f2_1-3-53{
198
+ body:not(.magritte-old-layout) .magritte-preview-item___gz5f2_1-4-0{
198
199
  height:80px;
199
200
  border-radius:8px;
200
201
  }
201
202
  }
202
- .magritte-preview-item-container___JDVsk_1-3-53{
203
+ .magritte-preview-item-container___JDVsk_1-4-0{
203
204
  contain:layout paint size;
204
205
  overflow:hidden;
205
206
  scale:1;
206
207
  }
207
208
  @media (min-width: 1020px){
208
- body.magritte-old-layout .magritte-preview-item-container___JDVsk_1-3-53{
209
+ body.magritte-old-layout .magritte-preview-item-container___JDVsk_1-4-0{
209
210
  scale:1.66666667;
210
211
  }
211
212
  }
212
213
  @media (min-width: 1024px){
213
- body:not(.magritte-old-layout) .magritte-preview-item-container___JDVsk_1-3-53{
214
+ body:not(.magritte-old-layout) .magritte-preview-item-container___JDVsk_1-4-0{
214
215
  scale:1.66666667;
215
216
  }
216
217
  }
217
- .magritte-preview-item-container___JDVsk_1-3-53 *{
218
+ .magritte-preview-item-container___JDVsk_1-4-0 *{
218
219
  touch-action:none;
219
220
  position:absolute;
220
221
  top:0;
@@ -224,7 +225,7 @@
224
225
  height:100%;
225
226
  user-select:none;
226
227
  }
227
- .magritte-media-viewer-toolbar___2C8nr_1-3-53{
228
+ .magritte-media-viewer-toolbar___2C8nr_1-4-0{
228
229
  background:var(--magritte-color-background-overlay-toolbar-v26-0-2);
229
230
  padding:0 8px;
230
231
  display:grid;
@@ -232,33 +233,33 @@
232
233
  align-items:center;
233
234
  height:48px;
234
235
  gap:8px;
235
- grid-row:4;
236
+ grid-area:toolbar;
236
237
  z-index:10;
237
238
  }
238
- .magritte-media-viewer-toolbar___2C8nr_1-3-53.magritte-no-description___NebrT_1-3-53{
239
+ .magritte-media-viewer-toolbar___2C8nr_1-4-0.magritte-no-description___NebrT_1-4-0{
239
240
  display:flex;
240
241
  justify-content:space-between;
241
242
  }
242
243
  @media (min-width: 1020px){
243
- body.magritte-old-layout .magritte-media-viewer-toolbar___2C8nr_1-3-53{
244
+ body.magritte-old-layout .magritte-media-viewer-toolbar___2C8nr_1-4-0{
244
245
  display:none;
245
246
  }
246
247
  }
247
248
  @media (min-width: 1024px){
248
- body:not(.magritte-old-layout) .magritte-media-viewer-toolbar___2C8nr_1-3-53{
249
+ body:not(.magritte-old-layout) .magritte-media-viewer-toolbar___2C8nr_1-4-0{
249
250
  display:none;
250
251
  }
251
252
  }
252
- .magritte-media-viewer-toolbar-left___YzkJt_1-3-53,
253
- .magritte-media-viewer-toolbar-right___kBER9_1-3-53{
253
+ .magritte-media-viewer-toolbar-left___YzkJt_1-4-0,
254
+ .magritte-media-viewer-toolbar-right___kBER9_1-4-0{
254
255
  display:flex;
255
256
  gap:4px;
256
257
  }
257
- .magritte-media-viewer-toolbar-right___kBER9_1-3-53{
258
+ .magritte-media-viewer-toolbar-right___kBER9_1-4-0{
258
259
  justify-content:end;
259
260
  }
260
- .magritte-prev-button___WMYjR_1-3-53,
261
- .magritte-next-button___f8hJT_1-3-53{
261
+ .magritte-prev-button___WMYjR_1-4-0,
262
+ .magritte-next-button___f8hJT_1-4-0{
262
263
  cursor:pointer;
263
264
  position:absolute;
264
265
  top:0;
@@ -266,40 +267,40 @@
266
267
  width:48px;
267
268
  opacity:var(--media-viewer-background-opacity);
268
269
  }
269
- .magritte-prev-button___WMYjR_1-3-53:active,
270
- .magritte-next-button___f8hJT_1-3-53:active{
270
+ .magritte-prev-button___WMYjR_1-4-0:active,
271
+ .magritte-next-button___f8hJT_1-4-0:active{
271
272
  background:linear-gradient(90deg, var(--magritte-gradient-component-media-viewer-background-fade-v26-0-2));
272
273
  }
273
274
  @media (min-width: 1020px){
274
- body.magritte-old-layout .magritte-prev-button___WMYjR_1-3-53,
275
- body.magritte-old-layout .magritte-next-button___f8hJT_1-3-53{
275
+ body.magritte-old-layout .magritte-prev-button___WMYjR_1-4-0,
276
+ body.magritte-old-layout .magritte-next-button___f8hJT_1-4-0{
276
277
  width:88px;
277
278
  }
278
- body.magritte-old-layout .magritte-prev-button___WMYjR_1-3-53:active,
279
- body.magritte-old-layout .magritte-next-button___f8hJT_1-3-53:active{
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{
280
281
  background:none;
281
282
  }
282
283
  }
283
284
  @media (min-width: 1024px){
284
- body:not(.magritte-old-layout) .magritte-prev-button___WMYjR_1-3-53,
285
- body:not(.magritte-old-layout) .magritte-next-button___f8hJT_1-3-53{
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{
286
287
  width:88px;
287
288
  }
288
- body:not(.magritte-old-layout) .magritte-prev-button___WMYjR_1-3-53:active,
289
- body:not(.magritte-old-layout) .magritte-next-button___f8hJT_1-3-53:active{
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{
290
291
  background:none;
291
292
  }
292
293
  }
293
- .magritte-prev-button___WMYjR_1-3-53{
294
+ .magritte-prev-button___WMYjR_1-4-0{
294
295
  left:0;
295
296
  }
296
- .magritte-prev-button___WMYjR_1-3-53:active{
297
+ .magritte-prev-button___WMYjR_1-4-0:active{
297
298
  background:linear-gradient(270deg, var(--magritte-gradient-component-media-viewer-background-fade-v26-0-2));
298
299
  }
299
- .magritte-next-button___f8hJT_1-3-53{
300
+ .magritte-next-button___f8hJT_1-4-0{
300
301
  right:0;
301
302
  }
302
- .magritte-slide-button___sY8LB_1-3-53{
303
+ .magritte-slide-button___sY8LB_1-4-0{
303
304
  display:flex;
304
305
  background:none;
305
306
  padding:0;
@@ -309,7 +310,7 @@
309
310
  position:absolute;
310
311
  inset:0;
311
312
  }
312
- .magritte-preview-placeholder___yuhW1_1-3-53{
313
+ .magritte-preview-placeholder___yuhW1_1-4-0{
313
314
  --magritte-media-viewer-preview-width:24px;
314
315
  --magritte-media-viewer-preview-gap:2px;
315
316
  flex:0 0 auto;
@@ -318,24 +319,24 @@
318
319
  flex-grow:0;
319
320
  }
320
321
  @media (min-width: 1020px){
321
- body.magritte-old-layout .magritte-preview-placeholder___yuhW1_1-3-53{
322
+ body.magritte-old-layout .magritte-preview-placeholder___yuhW1_1-4-0{
322
323
  --magritte-media-viewer-preview-width:40px;
323
324
  --magritte-media-viewer-preview-gap:8px;
324
325
  }
325
326
  }
326
327
  @media (min-width: 1024px){
327
- body:not(.magritte-old-layout) .magritte-preview-placeholder___yuhW1_1-3-53{
328
+ body:not(.magritte-old-layout) .magritte-preview-placeholder___yuhW1_1-4-0{
328
329
  --magritte-media-viewer-preview-width:40px;
329
330
  --magritte-media-viewer-preview-gap:8px;
330
331
  }
331
332
  }
332
- .magritte-gallery-item-loader___70TDe_1-3-53{
333
+ .magritte-gallery-item-loader___70TDe_1-4-0{
333
334
  position:absolute;
334
335
  top:50%;
335
336
  left:50%;
336
337
  transform:translate(-50%, -50%);
337
338
  }
338
- .magritte-gallery-item-error-container___Z-HyZ_1-3-53{
339
+ .magritte-gallery-item-error-container___Z-HyZ_1-4-0{
339
340
  display:flex;
340
341
  flex-direction:column;
341
342
  align-items:center;
@@ -349,24 +350,60 @@
349
350
  width:100%;
350
351
  box-sizing:border-box;
351
352
  }
352
- .magritte-description-bottom-sheet-content___swnEV_1-3-53{
353
+ .magritte-description-bottom-sheet-content___swnEV_1-4-0{
353
354
  padding:8px 0;
354
355
  }
355
- .magritte-header___egZXt_1-3-53{
356
- grid-row:1;
356
+ .magritte-header___egZXt_1-4-0{
357
+ grid-area:header;
357
358
  z-index:2;
358
359
  opacity:var(--media-viewer-toolbars-opacity);
359
360
  transform:translateY(calc(var(--magritte-ui-media-viewer-hide-tools-progress) * -100%));
360
361
  --magritte-ui-nav-bar-title-color-override:var(--magritte-color-text-constant-v26-0-2);
361
362
  --magritte-ui-nav-bar-subtitle-color-override:var(--magritte-color-text-constant-secondary-v26-0-2);
362
363
  }
363
- .magritte-footer___rOH-M_1-3-53{
364
- grid-row:3;
364
+ .magritte-video-indicator-slot___FX0nD_1-4-0{
365
+ position:relative;
366
+ grid-area:header;
367
+ z-index:1;
368
+ opacity:var(--media-viewer-background-opacity);
369
+ transform:translateY(calc(var(--magritte-ui-media-viewer-hide-tools-progress) * -100%));
370
+ pointer-events:none;
371
+ }
372
+ .magritte-video-indicator-slot-content___kir3R_1-4-0{
373
+ position:absolute;
374
+ top:100%;
375
+ right:0;
376
+ left:0;
377
+ }
378
+ .magritte-video-item-fill___SKpC3_1-4-0{
379
+ position:absolute;
380
+ inset:0;
381
+ }
382
+ .magritte-video-item-controls___oe99H_1-4-0{
383
+ position:absolute;
384
+ right:0;
385
+ bottom:0;
386
+ left:0;
387
+ pointer-events:none;
388
+ opacity:var(--media-viewer-background-opacity);
389
+ }
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{
392
+ padding:0 88px;
393
+ }
394
+ }
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{
397
+ padding:0 88px;
398
+ }
399
+ }
400
+ .magritte-footer___rOH-M_1-4-0{
401
+ grid-area:footer;
365
402
  z-index:2;
366
403
  opacity:var(--media-viewer-toolbars-opacity);
367
404
  transform:translateY(calc(var(--magritte-ui-media-viewer-hide-tools-progress) * 100%));
368
405
  }
369
- .magritte-description___dYc-E_1-3-53{
406
+ .magritte-description___dYc-E_1-4-0{
370
407
  display:inline-block;
371
408
  max-width:100%;
372
409
  }
package/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export { type GalleryItemProps } from './internal/GalleryItemBody';
2
+ export { type VideoItemProps } from './internal/VideoItemBody';
2
3
  export { MediaViewer } from './public/MediaViewer';
3
4
  export { type PreviewProps } from './public/Preview';
4
5
  export { type ToolbarProps } from './public/Toolbar';
package/index.js CHANGED
@@ -18,26 +18,32 @@ 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-C2yr07Xb.js';
21
+ import './media-viewer-BdPXJpJU.js';
22
22
  import './public/Gallery.js';
23
23
  import '@hh.ru/magritte-common-resize';
24
24
  import '@hh.ru/magritte-ui-icon/icon';
25
25
  import './internal/hooks/useSwipe.js';
26
+ import './internal/slides.js';
26
27
  import './public/GalleryItem.js';
27
28
  import './internal/GalleryItemBody.js';
28
29
  import '@hh.ru/magritte-ui-loader';
30
+ import './internal/Slide.js';
29
31
  import './internal/hooks/useDoubleTapScale.js';
30
32
  import './internal/hooks/useGalleryItemController.js';
31
33
  import './internal/hooks/usePan.js';
32
34
  import './internal/hooks/usePinchToZoom.js';
33
35
  import './internal/hooks/useWheelToZoom.js';
34
36
  import '@hh.ru/magritte-ui-typography';
37
+ import './public/VideoItem.js';
38
+ import './internal/VideoItemBody.js';
39
+ import 'classnames';
40
+ import '@hh.ru/magritte-ui-video';
41
+ import '@hh.ru/magritte-ui-video/internal/context';
35
42
  import './public/Header.js';
36
43
  import './public/headerDefaults.js';
37
44
  import '@hh.ru/magritte-ui-nav-bar';
38
45
  import './public/Preview.js';
39
46
  import './internal/Counter.js';
40
- import 'classnames';
41
47
  import '@hh.ru/magritte-ui-bottom-sheet';
42
48
  import '@hh.ru/magritte-ui-tooltip';
43
49
  import './internal/PreviewItem.js';
@@ -47,4 +53,5 @@ import './public/Toolbar.js';
47
53
  import '@hh.ru/magritte-ui-icon';
48
54
  import './public/Tools.js';
49
55
  import './internal/ImagesLoader.js';
56
+ import './internal/toolsVisibility.js';
50
57
  //# sourceMappingURL=index.js.map
package/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
package/index.mock.js CHANGED
@@ -10,6 +10,7 @@ const MediaViewer = mockComponent(
10
10
  GalleryItem: mockComponent("GalleryItem", void 0, {
11
11
  withChildren: true
12
12
  }),
13
+ VideoItem: mockComponent("VideoItem"),
13
14
  Preview: mockComponent("Preview", void 0, {
14
15
  withChildren: true
15
16
  }),
package/index.mock.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.mock.js","sources":["src/index.mock.ts"],"sourcesContent":["import { mockComponent } from '@hh.ru/magritte-ui-mock-component';\n\nexport const MediaViewer = mockComponent(\n 'MediaViewer',\n {\n Gallery: mockComponent('Gallery', undefined, {\n withChildren: true,\n }),\n GalleryItem: mockComponent('GalleryItem', undefined, {\n withChildren: true,\n }),\n Preview: mockComponent('Preview', undefined, {\n withChildren: true,\n }),\n Toolbar: mockComponent('Toolbar', undefined, {\n withChildren: true,\n }),\n Header: mockComponent('Header', undefined, {\n withChildren: true,\n }),\n Footer: mockComponent('Footer', undefined, {\n withChildren: true,\n }),\n DesktopTool: mockComponent('DesktopTool', undefined, {\n withChildren: true,\n }),\n MobileTool: mockComponent('MobileTool', undefined, {\n withChildren: true,\n }),\n RotateTool: mockComponent('RotateTool', undefined, {\n withChildren: true,\n }),\n CloseTool: mockComponent('CloseTool', undefined, {\n withChildren: true,\n }),\n FullWidthTool: mockComponent('FullWidthTool', undefined, {\n withChildren: true,\n }),\n },\n {\n withChildren: true,\n }\n);\n\nexport const useMediaViewerControls = (): {\n goToSlideIndex: (index: number) => void;\n close: VoidFunction;\n} => {\n return {\n goToSlideIndex: () => {},\n close: () => {},\n };\n};\n\nexport const useMediaViewerInfo = (): {\n currentSlideIndex: number;\n totalSlides: number;\n} => {\n return {\n currentSlideIndex: 0,\n totalSlides: 1,\n };\n};\n"],"names":[],"mappings":";;AAEO,MAAM,WAAc,GAAA,aAAA;AAAA,EACvB,aAAA;AAAA,EACA;AAAA,IACI,OAAA,EAAS,aAAc,CAAA,SAAA,EAAW,KAAW,CAAA,EAAA;AAAA,MACzC,YAAc,EAAA,IAAA;AAAA,KACjB,CAAA;AAAA,IACD,WAAA,EAAa,aAAc,CAAA,aAAA,EAAe,KAAW,CAAA,EAAA;AAAA,MACjD,YAAc,EAAA,IAAA;AAAA,KACjB,CAAA;AAAA,IACD,OAAA,EAAS,aAAc,CAAA,SAAA,EAAW,KAAW,CAAA,EAAA;AAAA,MACzC,YAAc,EAAA,IAAA;AAAA,KACjB,CAAA;AAAA,IACD,OAAA,EAAS,aAAc,CAAA,SAAA,EAAW,KAAW,CAAA,EAAA;AAAA,MACzC,YAAc,EAAA,IAAA;AAAA,KACjB,CAAA;AAAA,IACD,MAAA,EAAQ,aAAc,CAAA,QAAA,EAAU,KAAW,CAAA,EAAA;AAAA,MACvC,YAAc,EAAA,IAAA;AAAA,KACjB,CAAA;AAAA,IACD,MAAA,EAAQ,aAAc,CAAA,QAAA,EAAU,KAAW,CAAA,EAAA;AAAA,MACvC,YAAc,EAAA,IAAA;AAAA,KACjB,CAAA;AAAA,IACD,WAAA,EAAa,aAAc,CAAA,aAAA,EAAe,KAAW,CAAA,EAAA;AAAA,MACjD,YAAc,EAAA,IAAA;AAAA,KACjB,CAAA;AAAA,IACD,UAAA,EAAY,aAAc,CAAA,YAAA,EAAc,KAAW,CAAA,EAAA;AAAA,MAC/C,YAAc,EAAA,IAAA;AAAA,KACjB,CAAA;AAAA,IACD,UAAA,EAAY,aAAc,CAAA,YAAA,EAAc,KAAW,CAAA,EAAA;AAAA,MAC/C,YAAc,EAAA,IAAA;AAAA,KACjB,CAAA;AAAA,IACD,SAAA,EAAW,aAAc,CAAA,WAAA,EAAa,KAAW,CAAA,EAAA;AAAA,MAC7C,YAAc,EAAA,IAAA;AAAA,KACjB,CAAA;AAAA,IACD,aAAA,EAAe,aAAc,CAAA,eAAA,EAAiB,KAAW,CAAA,EAAA;AAAA,MACrD,YAAc,EAAA,IAAA;AAAA,KACjB,CAAA;AAAA,GACL;AAAA,EACA;AAAA,IACI,YAAc,EAAA,IAAA;AAAA,GAClB;AACJ,EAAA;AAEO,MAAM,yBAAyB,MAGjC;AACD,EAAO,OAAA;AAAA,IACH,gBAAgB,MAAM;AAAA,KAAC;AAAA,IACvB,OAAO,MAAM;AAAA,KAAC;AAAA,GAClB,CAAA;AACJ,EAAA;AAEO,MAAM,qBAAqB,MAG7B;AACD,EAAO,OAAA;AAAA,IACH,iBAAmB,EAAA,CAAA;AAAA,IACnB,WAAa,EAAA,CAAA;AAAA,GACjB,CAAA;AACJ;;;;"}
1
+ {"version":3,"file":"index.mock.js","sources":["src/index.mock.ts"],"sourcesContent":["import { mockComponent } from '@hh.ru/magritte-ui-mock-component';\n\nexport const MediaViewer = mockComponent(\n 'MediaViewer',\n {\n Gallery: mockComponent('Gallery', undefined, {\n withChildren: true,\n }),\n GalleryItem: mockComponent('GalleryItem', undefined, {\n withChildren: true,\n }),\n VideoItem: mockComponent('VideoItem'),\n Preview: mockComponent('Preview', undefined, {\n withChildren: true,\n }),\n Toolbar: mockComponent('Toolbar', undefined, {\n withChildren: true,\n }),\n Header: mockComponent('Header', undefined, {\n withChildren: true,\n }),\n Footer: mockComponent('Footer', undefined, {\n withChildren: true,\n }),\n DesktopTool: mockComponent('DesktopTool', undefined, {\n withChildren: true,\n }),\n MobileTool: mockComponent('MobileTool', undefined, {\n withChildren: true,\n }),\n RotateTool: mockComponent('RotateTool', undefined, {\n withChildren: true,\n }),\n CloseTool: mockComponent('CloseTool', undefined, {\n withChildren: true,\n }),\n FullWidthTool: mockComponent('FullWidthTool', undefined, {\n withChildren: true,\n }),\n },\n {\n withChildren: true,\n }\n);\n\nexport const useMediaViewerControls = (): {\n goToSlideIndex: (index: number) => void;\n close: VoidFunction;\n} => {\n return {\n goToSlideIndex: () => {},\n close: () => {},\n };\n};\n\nexport const useMediaViewerInfo = (): {\n currentSlideIndex: number;\n totalSlides: number;\n} => {\n return {\n currentSlideIndex: 0,\n totalSlides: 1,\n };\n};\n"],"names":[],"mappings":";;AAEO,MAAM,WAAc,GAAA,aAAA;AAAA,EACvB,aAAA;AAAA,EACA;AAAA,IACI,OAAA,EAAS,aAAc,CAAA,SAAA,EAAW,KAAW,CAAA,EAAA;AAAA,MACzC,YAAc,EAAA,IAAA;AAAA,KACjB,CAAA;AAAA,IACD,WAAA,EAAa,aAAc,CAAA,aAAA,EAAe,KAAW,CAAA,EAAA;AAAA,MACjD,YAAc,EAAA,IAAA;AAAA,KACjB,CAAA;AAAA,IACD,SAAA,EAAW,cAAc,WAAW,CAAA;AAAA,IACpC,OAAA,EAAS,aAAc,CAAA,SAAA,EAAW,KAAW,CAAA,EAAA;AAAA,MACzC,YAAc,EAAA,IAAA;AAAA,KACjB,CAAA;AAAA,IACD,OAAA,EAAS,aAAc,CAAA,SAAA,EAAW,KAAW,CAAA,EAAA;AAAA,MACzC,YAAc,EAAA,IAAA;AAAA,KACjB,CAAA;AAAA,IACD,MAAA,EAAQ,aAAc,CAAA,QAAA,EAAU,KAAW,CAAA,EAAA;AAAA,MACvC,YAAc,EAAA,IAAA;AAAA,KACjB,CAAA;AAAA,IACD,MAAA,EAAQ,aAAc,CAAA,QAAA,EAAU,KAAW,CAAA,EAAA;AAAA,MACvC,YAAc,EAAA,IAAA;AAAA,KACjB,CAAA;AAAA,IACD,WAAA,EAAa,aAAc,CAAA,aAAA,EAAe,KAAW,CAAA,EAAA;AAAA,MACjD,YAAc,EAAA,IAAA;AAAA,KACjB,CAAA;AAAA,IACD,UAAA,EAAY,aAAc,CAAA,YAAA,EAAc,KAAW,CAAA,EAAA;AAAA,MAC/C,YAAc,EAAA,IAAA;AAAA,KACjB,CAAA;AAAA,IACD,UAAA,EAAY,aAAc,CAAA,YAAA,EAAc,KAAW,CAAA,EAAA;AAAA,MAC/C,YAAc,EAAA,IAAA;AAAA,KACjB,CAAA;AAAA,IACD,SAAA,EAAW,aAAc,CAAA,WAAA,EAAa,KAAW,CAAA,EAAA;AAAA,MAC7C,YAAc,EAAA,IAAA;AAAA,KACjB,CAAA;AAAA,IACD,aAAA,EAAe,aAAc,CAAA,eAAA,EAAiB,KAAW,CAAA,EAAA;AAAA,MACrD,YAAc,EAAA,IAAA;AAAA,KACjB,CAAA;AAAA,GACL;AAAA,EACA;AAAA,IACI,YAAc,EAAA,IAAA;AAAA,GAClB;AACJ,EAAA;AAEO,MAAM,yBAAyB,MAGjC;AACD,EAAO,OAAA;AAAA,IACH,gBAAgB,MAAM;AAAA,KAAC;AAAA,IACvB,OAAO,MAAM;AAAA,KAAC;AAAA,GAClB,CAAA;AACJ,EAAA;AAEO,MAAM,qBAAqB,MAG7B;AACD,EAAO,OAAA;AAAA,IACH,iBAAmB,EAAA,CAAA;AAAA,IACnB,WAAa,EAAA,CAAA;AAAA,GACjB,CAAA;AACJ;;;;"}
@@ -1,6 +1,6 @@
1
- import { type FC, type ReactElement } from 'react';
2
- import type { GalleryItemProps } from '../internal/GalleryItemBody';
3
- export declare const hasCounterContent: (items: ReactElement<GalleryItemProps>[]) => boolean;
1
+ import { type FC } from 'react';
2
+ import type { SlideElement } from '../internal/slides';
3
+ export declare const hasCounterContent: (items: SlideElement[]) => boolean;
4
4
  export declare const Counter: FC<{
5
- items: ReactElement<GalleryItemProps>[];
5
+ items: SlideElement[];
6
6
  }>;
@@ -8,11 +8,12 @@ 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-C2yr07Xb.js';
11
+ import { s as styles } from '../media-viewer-BdPXJpJU.js';
12
12
  import './ImagesLoader.js';
13
- import './utils.js';
13
+ import './toolsVisibility.js';
14
14
  import '@hh.ru/magritte-design-tokens/core-tokens';
15
15
  import './animations.js';
16
+ import './utils.js';
16
17
 
17
18
  const hasCounterContent = (items) => items.length > 1 || items.some((item) => !!item.props.description);
18
19
  const Counter = ({ items }) => {
@@ -1 +1 @@
1
- {"version":3,"file":"Counter.js","sources":["src/internal/Counter.tsx"],"sourcesContent":["import { type FC, type ReactElement, useRef, useState } from 'react';\nimport classNames from 'classnames';\nimport { useMotionValueEvent } from 'motion/react';\n\nimport { useTranslation } from '@hh.ru/magritte-common-use-translation';\nimport { BottomSheet } from '@hh.ru/magritte-ui-bottom-sheet';\nimport type { GalleryItemProps } from '@hh.ru/magritte-ui-media-viewer/internal/GalleryItemBody';\nimport { useMediaViewerContext } from '@hh.ru/magritte-ui-media-viewer/internal/context';\nimport { TooltipHover } from '@hh.ru/magritte-ui-tooltip';\nimport { Text } from '@hh.ru/magritte-ui-typography';\n\nimport styles from '../public/media-viewer.less';\n\nexport const hasCounterContent = (items: ReactElement<GalleryItemProps>[]): boolean =>\n items.length > 1 || items.some((item) => !!item.props.description);\n\nexport const Counter: FC<{ items: ReactElement<GalleryItemProps>[] }> = ({ items }) => {\n const globalContext = useMediaViewerContext();\n const [currentItemIndex, setCurrentItemIndex] = useState(Math.round(globalContext.currentSlideIndex.get()));\n const [showDescription, setShowDescription] = useState(false);\n const description = items[currentItemIndex]?.props.description;\n const elementRef = useRef<HTMLDivElement>(null);\n\n useMotionValueEvent(globalContext.currentSlideIndex, 'change', (newIndex) => {\n setShowDescription(false);\n setCurrentItemIndex(Math.round(newIndex));\n });\n\n const ofTrl = useTranslation('MediaViewer', 'of');\n\n if (!hasCounterContent(items)) {\n return null;\n }\n\n const showCounterNumber = items.length > 1;\n\n return (\n <div\n className={classNames(styles.previewCounter, { [styles.withDescription]: !!description })}\n onClick={() => {\n setShowDescription(!!description);\n }}\n >\n {showCounterNumber && (\n <span className={styles.counterNumber} aria-atomic=\"true\" aria-live=\"polite\">\n <Text\n style=\"constant\"\n typography=\"subtitle-1-semibold\"\n ellipsis\n >{`${currentItemIndex + 1} ${ofTrl} ${items.length}`}</Text>\n </span>\n )}\n {!!description && (\n <>\n <span ref={elementRef} className={styles.description}>\n <Text style=\"constant-secondary\" typography=\"label-4-regular\" ellipsis>\n {description}\n </Text>\n </span>\n <TooltipHover\n placement={'top-center'}\n activatorRef={elementRef}\n size=\"small\"\n onClose={() => setShowDescription(false)}\n ignoreIntersections={false}\n >\n {description}\n </TooltipHover>\n <BottomSheet visible={showDescription} onClose={() => setShowDescription(false)}>\n <div className={styles.descriptionBottomSheetContent}>\n <Text style=\"primary\" typography=\"paragraph-2-regular\">\n {description}\n </Text>\n </div>\n </BottomSheet>\n </>\n )}\n {!description && <span className={styles.noDescriptionPlaceholder}></span>}\n </div>\n );\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Counter.js","sources":["src/internal/Counter.tsx"],"sourcesContent":["import { type FC, useRef, useState } from 'react';\nimport classNames from 'classnames';\nimport { useMotionValueEvent } from 'motion/react';\n\nimport { useTranslation } from '@hh.ru/magritte-common-use-translation';\nimport { BottomSheet } from '@hh.ru/magritte-ui-bottom-sheet';\nimport { useMediaViewerContext } from '@hh.ru/magritte-ui-media-viewer/internal/context';\nimport type { SlideElement } from '@hh.ru/magritte-ui-media-viewer/internal/slides';\nimport { TooltipHover } from '@hh.ru/magritte-ui-tooltip';\nimport { Text } from '@hh.ru/magritte-ui-typography';\n\nimport styles from '../public/media-viewer.less';\n\nexport const hasCounterContent = (items: SlideElement[]): boolean =>\n items.length > 1 || items.some((item) => !!item.props.description);\n\nexport const Counter: FC<{ items: SlideElement[] }> = ({ items }) => {\n const globalContext = useMediaViewerContext();\n const [currentItemIndex, setCurrentItemIndex] = useState(Math.round(globalContext.currentSlideIndex.get()));\n const [showDescription, setShowDescription] = useState(false);\n const description = items[currentItemIndex]?.props.description;\n const elementRef = useRef<HTMLDivElement>(null);\n\n useMotionValueEvent(globalContext.currentSlideIndex, 'change', (newIndex) => {\n setShowDescription(false);\n setCurrentItemIndex(Math.round(newIndex));\n });\n\n const ofTrl = useTranslation('MediaViewer', 'of');\n\n if (!hasCounterContent(items)) {\n return null;\n }\n\n const showCounterNumber = items.length > 1;\n\n return (\n <div\n className={classNames(styles.previewCounter, { [styles.withDescription]: !!description })}\n onClick={() => {\n setShowDescription(!!description);\n }}\n >\n {showCounterNumber && (\n <span className={styles.counterNumber} aria-atomic=\"true\" aria-live=\"polite\">\n <Text\n style=\"constant\"\n typography=\"subtitle-1-semibold\"\n ellipsis\n >{`${currentItemIndex + 1} ${ofTrl} ${items.length}`}</Text>\n </span>\n )}\n {!!description && (\n <>\n <span ref={elementRef} className={styles.description}>\n <Text style=\"constant-secondary\" typography=\"label-4-regular\" ellipsis>\n {description}\n </Text>\n </span>\n <TooltipHover\n placement={'top-center'}\n activatorRef={elementRef}\n size=\"small\"\n onClose={() => setShowDescription(false)}\n ignoreIntersections={false}\n >\n {description}\n </TooltipHover>\n <BottomSheet visible={showDescription} onClose={() => setShowDescription(false)}>\n <div className={styles.descriptionBottomSheetContent}>\n <Text style=\"primary\" typography=\"paragraph-2-regular\">\n {description}\n </Text>\n </div>\n </BottomSheet>\n </>\n )}\n {!description && <span className={styles.noDescriptionPlaceholder}></span>}\n </div>\n );\n};\n"],"names":[],"mappings":"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"}
@@ -5,7 +5,9 @@ export interface GalleryItemProps {
5
5
  description?: string;
6
6
  /** URL изображения */
7
7
  src: string;
8
- /** URL превью изображения */
8
+ /** URL превью изображения для ленты миниатюр. Если не передан, используется `src` */
9
+ preview?: string;
10
+ /** @deprecated Используйте `preview` */
9
11
  previewSrc?: string;
10
12
  }
11
13
  /** Внутренние пропсы GalleryItem — включают index, инжектируемый Gallery */