@hh.ru/magritte-ui-media-viewer 1.2.49 → 1.2.51

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
@@ -1,19 +1,21 @@
1
1
  :root{
2
- --magritte-color-background-overlay-viewer-v24-7-0:#000000;
3
- --magritte-color-background-overlay-toolbar-v24-7-0:#000000a3;
4
- --magritte-color-component-skeleton-background-content-v24-7-0:#8293a23d;;
5
- --magritte-gradient-component-media-viewer-background-fade-v24-7-0:#00000000 0%, #00000052 100%;
2
+ --magritte-color-background-overlay-viewer-v24-7-1:#000000;
3
+ --magritte-color-background-overlay-toolbar-v24-7-1:#000000a3;
4
+ --magritte-color-text-constant-v24-7-1:#ffffff;
5
+ --magritte-color-text-constant-secondary-v24-7-1:#B9B9B9;
6
+ --magritte-color-component-skeleton-background-content-v24-7-1:#8293a23d;;
7
+ --magritte-gradient-component-media-viewer-background-fade-v24-7-1:#00000000 0%, #00000052 100%;
6
8
  }
7
9
 
8
10
  :root{
9
- --magritte-semantic-animation-time-m-duration-v24-7-0:400ms;
10
- --magritte-semantic-animation-ease-base-timing-function-v24-7-0:cubic-bezier(0.4, 0.24, 0, 1);
11
+ --magritte-semantic-animation-time-m-duration-v24-7-1:400ms;
12
+ --magritte-semantic-animation-ease-base-timing-function-v24-7-1:cubic-bezier(0.4, 0.24, 0, 1);
11
13
  }
12
14
 
13
15
  .magritte-night-theme{
14
- --magritte-color-component-skeleton-background-content-v24-7-0:#5e5e5e3d;
16
+ --magritte-color-component-skeleton-background-content-v24-7-1:#5e5e5e3d;
15
17
  }
16
- .magritte-media-viewer___KnrXP_1-2-49{
18
+ .magritte-media-viewer___KnrXP_1-2-51{
17
19
  position:fixed;
18
20
  inset:0;
19
21
  display:grid;
@@ -23,23 +25,23 @@
23
25
  user-select:none;
24
26
  --media-viewer-toolbars-opacity:calc(1 - var(--magritte-ui-media-viewer-close-progress) - var(--magritte-ui-media-viewer-hide-tools-progress));
25
27
  --media-viewer-background-opacity:calc(1 - var(--magritte-ui-media-viewer-close-progress));
26
- --magritte-ui-nav-bar-background-color-override:var(--magritte-color-background-overlay-toolbar-v24-7-0);
28
+ --magritte-ui-nav-bar-background-color-override:var(--magritte-color-background-overlay-toolbar-v24-7-1);
27
29
  }
28
- .magritte-media-viewer___KnrXP_1-2-49::before{
30
+ .magritte-media-viewer___KnrXP_1-2-51::before{
29
31
  content:'';
30
32
  position:absolute;
31
33
  inset:0;
32
- background:var(--magritte-color-background-overlay-viewer-v24-7-0);
34
+ background:var(--magritte-color-background-overlay-viewer-v24-7-1);
33
35
  opacity:var(--media-viewer-background-opacity);
34
36
  pointer-events:none;
35
37
  }
36
- .magritte-gallery-placeholder___rUoGL_1-2-49{
38
+ .magritte-gallery-placeholder___rUoGL_1-2-51{
37
39
  display:flex;
38
40
  align-items:stretch;
39
41
  grid-row:2;
40
42
  min-height:0;
41
43
  }
42
- .magritte-media-viewer-gallery___P0SnN_1-2-49{
44
+ .magritte-media-viewer-gallery___P0SnN_1-2-51{
43
45
  display:grid;
44
46
  flex-grow:1;
45
47
  contain:layout size;
@@ -48,16 +50,16 @@
48
50
  inset:0;
49
51
  }
50
52
  @media (min-width: 1020px){
51
- body.magritte-old-layout .magritte-media-viewer-gallery___P0SnN_1-2-49{
53
+ body.magritte-old-layout .magritte-media-viewer-gallery___P0SnN_1-2-51{
52
54
  position:relative;
53
55
  }
54
56
  }
55
57
  @media (min-width: 1024px){
56
- body:not(.magritte-old-layout) .magritte-media-viewer-gallery___P0SnN_1-2-49{
58
+ body:not(.magritte-old-layout) .magritte-media-viewer-gallery___P0SnN_1-2-51{
57
59
  position:relative;
58
60
  }
59
61
  }
60
- .magritte-gallery-item___Js0Z5_1-2-49{
62
+ .magritte-gallery-item___Js0Z5_1-2-51{
61
63
  position:relative;
62
64
  grid-area:1 / 1;
63
65
  contain:size;
@@ -66,7 +68,7 @@
66
68
  overflow-y:visible;
67
69
  opacity:calc(1 - var(--magritte-ui-media-viewer-image-close-progress, 0));
68
70
  }
69
- .magritte-gallery-item-transform-container___N8-sA_1-2-49{
71
+ .magritte-gallery-item-transform-container___N8-sA_1-2-51{
70
72
  position:absolute;
71
73
  top:50%;
72
74
  left:50%;
@@ -74,64 +76,64 @@
74
76
  will-change:transform;
75
77
  touch-action:none;
76
78
  }
77
- .magritte-preview-counter___uP2Hc_1-2-49{
79
+ .magritte-preview-counter___uP2Hc_1-2-51{
78
80
  min-width:0;
79
81
  text-align:center;
80
82
  }
81
83
  @media (min-width: 1020px){
82
- body.magritte-old-layout .magritte-preview-counter___uP2Hc_1-2-49{
84
+ body.magritte-old-layout .magritte-preview-counter___uP2Hc_1-2-51{
83
85
  text-align:left;
84
86
  }
85
87
  }
86
88
  @media (min-width: 1024px){
87
- body:not(.magritte-old-layout) .magritte-preview-counter___uP2Hc_1-2-49{
89
+ body:not(.magritte-old-layout) .magritte-preview-counter___uP2Hc_1-2-51{
88
90
  text-align:left;
89
91
  }
90
92
  }
91
- .magritte-preview-counter___uP2Hc_1-2-49.magritte-with-description___-w7ld_1-2-49{
93
+ .magritte-preview-counter___uP2Hc_1-2-51.magritte-with-description___-w7ld_1-2-51{
92
94
  cursor:pointer;
93
95
  }
94
- .magritte-counter-number___gUpMp_1-2-49{
96
+ .magritte-counter-number___gUpMp_1-2-51{
95
97
  display:block;
96
98
  transform:translateY(calc(18px * 0.5));
97
- transition:transform var(--magritte-semantic-animation-time-m-duration-v24-7-0) var(--magritte-semantic-animation-ease-base-timing-function-v24-7-0);
99
+ transition:transform var(--magritte-semantic-animation-time-m-duration-v24-7-1) var(--magritte-semantic-animation-ease-base-timing-function-v24-7-1);
98
100
  }
99
- .magritte-with-description___-w7ld_1-2-49 .magritte-counter-number___gUpMp_1-2-49{
101
+ .magritte-with-description___-w7ld_1-2-51 .magritte-counter-number___gUpMp_1-2-51{
100
102
  transform:translateY(0);
101
103
  }
102
- .magritte-no-description-placeholder___qc6h2_1-2-49{
104
+ .magritte-no-description-placeholder___qc6h2_1-2-51{
103
105
  display:block;
104
106
  height:18px;
105
107
  padding:0;
106
108
  }
107
- .magritte-preview-zoom-control___026jA_1-2-49{
109
+ .magritte-preview-zoom-control___026jA_1-2-51{
108
110
  display:flex;
109
111
  flex-direction:row;
110
112
  gap:2px;
111
113
  align-items:center;
112
114
  justify-self:end;
113
115
  }
114
- .magritte-preview-container___nwjNY_1-2-49{
116
+ .magritte-preview-container___nwjNY_1-2-51{
115
117
  display:grid;
116
118
  grid-template-columns:1fr auto 1fr;
117
119
  gap:16px;
118
120
  padding:4px 16px;
119
- background:var(--magritte-color-background-overlay-toolbar-v24-7-0);
121
+ background:var(--magritte-color-background-overlay-toolbar-v24-7-1);
120
122
  align-items:center;
121
123
  grid-row:3;
122
124
  z-index:10;
123
125
  }
124
126
  @media (min-width: 1020px){
125
- body.magritte-old-layout .magritte-preview-container___nwjNY_1-2-49{
127
+ body.magritte-old-layout .magritte-preview-container___nwjNY_1-2-51{
126
128
  padding:16px 24px;
127
129
  }
128
130
  }
129
131
  @media (min-width: 1024px){
130
- body:not(.magritte-old-layout) .magritte-preview-container___nwjNY_1-2-49{
132
+ body:not(.magritte-old-layout) .magritte-preview-container___nwjNY_1-2-51{
131
133
  padding:16px 24px;
132
134
  }
133
135
  }
134
- .magritte-preview___0Ge4C_1-2-49{
136
+ .magritte-preview___0Ge4C_1-2-51{
135
137
  display:flex;
136
138
  flex-direction:row;
137
139
  touch-action:none;
@@ -139,18 +141,18 @@
139
141
  min-width:0;
140
142
  }
141
143
  @media (min-width: 1020px){
142
- body.magritte-old-layout .magritte-preview___0Ge4C_1-2-49{
144
+ body.magritte-old-layout .magritte-preview___0Ge4C_1-2-51{
143
145
  max-width:calc(((40 + 8) * (var(--media-viewer-max-visible-items) - 1) + 80) * 1px);
144
146
  overflow:hidden;
145
147
  }
146
148
  }
147
149
  @media (min-width: 1024px){
148
- body:not(.magritte-old-layout) .magritte-preview___0Ge4C_1-2-49{
150
+ body:not(.magritte-old-layout) .magritte-preview___0Ge4C_1-2-51{
149
151
  max-width:calc(((40 + 8) * (var(--media-viewer-max-visible-items) - 1) + 80) * 1px);
150
152
  overflow:hidden;
151
153
  }
152
154
  }
153
- .magritte-preview-list___SAXLZ_1-2-49{
155
+ .magritte-preview-list___SAXLZ_1-2-51{
154
156
  margin-left:50%;
155
157
  contain:layout paint;
156
158
  display:flex;
@@ -160,18 +162,18 @@
160
162
  flex:0 0 auto;
161
163
  }
162
164
  @media (min-width: 1020px){
163
- body.magritte-old-layout .magritte-preview-list___SAXLZ_1-2-49{
165
+ body.magritte-old-layout .magritte-preview-list___SAXLZ_1-2-51{
164
166
  margin:0;
165
167
  gap:8px;
166
168
  }
167
169
  }
168
170
  @media (min-width: 1024px){
169
- body:not(.magritte-old-layout) .magritte-preview-list___SAXLZ_1-2-49{
171
+ body:not(.magritte-old-layout) .magritte-preview-list___SAXLZ_1-2-51{
170
172
  margin:0;
171
173
  gap:8px;
172
174
  }
173
175
  }
174
- .magritte-preview-item___gz5f2_1-2-49{
176
+ .magritte-preview-item___gz5f2_1-2-51{
175
177
  contain:layout paint size;
176
178
  position:relative;
177
179
  flex-shrink:0;
@@ -182,36 +184,36 @@
182
184
  display:flex;
183
185
  align-items:center;
184
186
  justify-content:center;
185
- background-color:var(--magritte-color-component-skeleton-background-content-v24-7-0);
187
+ background-color:var(--magritte-color-component-skeleton-background-content-v24-7-1);
186
188
  }
187
189
  @media (min-width: 1020px){
188
- body.magritte-old-layout .magritte-preview-item___gz5f2_1-2-49{
190
+ body.magritte-old-layout .magritte-preview-item___gz5f2_1-2-51{
189
191
  height:80px;
190
192
  border-radius:8px;
191
193
  }
192
194
  }
193
195
  @media (min-width: 1024px){
194
- body:not(.magritte-old-layout) .magritte-preview-item___gz5f2_1-2-49{
196
+ body:not(.magritte-old-layout) .magritte-preview-item___gz5f2_1-2-51{
195
197
  height:80px;
196
198
  border-radius:8px;
197
199
  }
198
200
  }
199
- .magritte-preview-item-container___JDVsk_1-2-49{
201
+ .magritte-preview-item-container___JDVsk_1-2-51{
200
202
  contain:layout paint size;
201
203
  overflow:hidden;
202
204
  scale:1;
203
205
  }
204
206
  @media (min-width: 1020px){
205
- body.magritte-old-layout .magritte-preview-item-container___JDVsk_1-2-49{
207
+ body.magritte-old-layout .magritte-preview-item-container___JDVsk_1-2-51{
206
208
  scale:1.66666667;
207
209
  }
208
210
  }
209
211
  @media (min-width: 1024px){
210
- body:not(.magritte-old-layout) .magritte-preview-item-container___JDVsk_1-2-49{
212
+ body:not(.magritte-old-layout) .magritte-preview-item-container___JDVsk_1-2-51{
211
213
  scale:1.66666667;
212
214
  }
213
215
  }
214
- .magritte-preview-item-container___JDVsk_1-2-49 *{
216
+ .magritte-preview-item-container___JDVsk_1-2-51 *{
215
217
  touch-action:none;
216
218
  position:absolute;
217
219
  top:0;
@@ -221,8 +223,8 @@
221
223
  height:100%;
222
224
  user-select:none;
223
225
  }
224
- .magritte-media-viewer-toolbar___2C8nr_1-2-49{
225
- background:var(--magritte-color-background-overlay-toolbar-v24-7-0);
226
+ .magritte-media-viewer-toolbar___2C8nr_1-2-51{
227
+ background:var(--magritte-color-background-overlay-toolbar-v24-7-1);
226
228
  padding:0 8px;
227
229
  display:grid;
228
230
  grid-template-columns:1fr auto 1fr;
@@ -232,30 +234,30 @@
232
234
  grid-row:4;
233
235
  z-index:10;
234
236
  }
235
- .magritte-media-viewer-toolbar___2C8nr_1-2-49.magritte-no-description___NebrT_1-2-49{
237
+ .magritte-media-viewer-toolbar___2C8nr_1-2-51.magritte-no-description___NebrT_1-2-51{
236
238
  display:flex;
237
239
  justify-content:space-between;
238
240
  }
239
241
  @media (min-width: 1020px){
240
- body.magritte-old-layout .magritte-media-viewer-toolbar___2C8nr_1-2-49{
242
+ body.magritte-old-layout .magritte-media-viewer-toolbar___2C8nr_1-2-51{
241
243
  display:none;
242
244
  }
243
245
  }
244
246
  @media (min-width: 1024px){
245
- body:not(.magritte-old-layout) .magritte-media-viewer-toolbar___2C8nr_1-2-49{
247
+ body:not(.magritte-old-layout) .magritte-media-viewer-toolbar___2C8nr_1-2-51{
246
248
  display:none;
247
249
  }
248
250
  }
249
- .magritte-media-viewer-toolbar-left___YzkJt_1-2-49,
250
- .magritte-media-viewer-toolbar-right___kBER9_1-2-49{
251
+ .magritte-media-viewer-toolbar-left___YzkJt_1-2-51,
252
+ .magritte-media-viewer-toolbar-right___kBER9_1-2-51{
251
253
  display:flex;
252
254
  gap:4px;
253
255
  }
254
- .magritte-media-viewer-toolbar-right___kBER9_1-2-49{
256
+ .magritte-media-viewer-toolbar-right___kBER9_1-2-51{
255
257
  justify-content:end;
256
258
  }
257
- .magritte-prev-button___WMYjR_1-2-49,
258
- .magritte-next-button___f8hJT_1-2-49{
259
+ .magritte-prev-button___WMYjR_1-2-51,
260
+ .magritte-next-button___f8hJT_1-2-51{
259
261
  cursor:pointer;
260
262
  position:absolute;
261
263
  top:0;
@@ -263,40 +265,40 @@
263
265
  width:48px;
264
266
  opacity:var(--media-viewer-background-opacity);
265
267
  }
266
- .magritte-prev-button___WMYjR_1-2-49:active,
267
- .magritte-next-button___f8hJT_1-2-49:active{
268
- background:linear-gradient(90deg, var(--magritte-gradient-component-media-viewer-background-fade-v24-7-0));
268
+ .magritte-prev-button___WMYjR_1-2-51:active,
269
+ .magritte-next-button___f8hJT_1-2-51:active{
270
+ background:linear-gradient(90deg, var(--magritte-gradient-component-media-viewer-background-fade-v24-7-1));
269
271
  }
270
272
  @media (min-width: 1020px){
271
- body.magritte-old-layout .magritte-prev-button___WMYjR_1-2-49,
272
- body.magritte-old-layout .magritte-next-button___f8hJT_1-2-49{
273
+ body.magritte-old-layout .magritte-prev-button___WMYjR_1-2-51,
274
+ body.magritte-old-layout .magritte-next-button___f8hJT_1-2-51{
273
275
  width:88px;
274
276
  }
275
- body.magritte-old-layout .magritte-prev-button___WMYjR_1-2-49:active,
276
- body.magritte-old-layout .magritte-next-button___f8hJT_1-2-49:active{
277
+ body.magritte-old-layout .magritte-prev-button___WMYjR_1-2-51:active,
278
+ body.magritte-old-layout .magritte-next-button___f8hJT_1-2-51:active{
277
279
  background:none;
278
280
  }
279
281
  }
280
282
  @media (min-width: 1024px){
281
- body:not(.magritte-old-layout) .magritte-prev-button___WMYjR_1-2-49,
282
- body:not(.magritte-old-layout) .magritte-next-button___f8hJT_1-2-49{
283
+ body:not(.magritte-old-layout) .magritte-prev-button___WMYjR_1-2-51,
284
+ body:not(.magritte-old-layout) .magritte-next-button___f8hJT_1-2-51{
283
285
  width:88px;
284
286
  }
285
- body:not(.magritte-old-layout) .magritte-prev-button___WMYjR_1-2-49:active,
286
- body:not(.magritte-old-layout) .magritte-next-button___f8hJT_1-2-49:active{
287
+ body:not(.magritte-old-layout) .magritte-prev-button___WMYjR_1-2-51:active,
288
+ body:not(.magritte-old-layout) .magritte-next-button___f8hJT_1-2-51:active{
287
289
  background:none;
288
290
  }
289
291
  }
290
- .magritte-prev-button___WMYjR_1-2-49{
292
+ .magritte-prev-button___WMYjR_1-2-51{
291
293
  left:0;
292
294
  }
293
- .magritte-prev-button___WMYjR_1-2-49:active{
294
- background:linear-gradient(270deg, var(--magritte-gradient-component-media-viewer-background-fade-v24-7-0));
295
+ .magritte-prev-button___WMYjR_1-2-51:active{
296
+ background:linear-gradient(270deg, var(--magritte-gradient-component-media-viewer-background-fade-v24-7-1));
295
297
  }
296
- .magritte-next-button___f8hJT_1-2-49{
298
+ .magritte-next-button___f8hJT_1-2-51{
297
299
  right:0;
298
300
  }
299
- .magritte-slide-button___sY8LB_1-2-49{
301
+ .magritte-slide-button___sY8LB_1-2-51{
300
302
  display:flex;
301
303
  background:none;
302
304
  padding:0;
@@ -306,7 +308,7 @@
306
308
  position:absolute;
307
309
  inset:0;
308
310
  }
309
- .magritte-preview-placeholder___yuhW1_1-2-49{
311
+ .magritte-preview-placeholder___yuhW1_1-2-51{
310
312
  --magritte-media-viewer-preview-width:24px;
311
313
  --magritte-media-viewer-preview-gap:2px;
312
314
  flex:0 0 auto;
@@ -315,24 +317,24 @@
315
317
  flex-grow:0;
316
318
  }
317
319
  @media (min-width: 1020px){
318
- body.magritte-old-layout .magritte-preview-placeholder___yuhW1_1-2-49{
320
+ body.magritte-old-layout .magritte-preview-placeholder___yuhW1_1-2-51{
319
321
  --magritte-media-viewer-preview-width:40px;
320
322
  --magritte-media-viewer-preview-gap:8px;
321
323
  }
322
324
  }
323
325
  @media (min-width: 1024px){
324
- body:not(.magritte-old-layout) .magritte-preview-placeholder___yuhW1_1-2-49{
326
+ body:not(.magritte-old-layout) .magritte-preview-placeholder___yuhW1_1-2-51{
325
327
  --magritte-media-viewer-preview-width:40px;
326
328
  --magritte-media-viewer-preview-gap:8px;
327
329
  }
328
330
  }
329
- .magritte-gallery-item-loader___70TDe_1-2-49{
331
+ .magritte-gallery-item-loader___70TDe_1-2-51{
330
332
  position:absolute;
331
333
  top:50%;
332
334
  left:50%;
333
335
  transform:translate(-50%, -50%);
334
336
  }
335
- .magritte-gallery-item-error-container___Z-HyZ_1-2-49{
337
+ .magritte-gallery-item-error-container___Z-HyZ_1-2-51{
336
338
  display:flex;
337
339
  flex-direction:column;
338
340
  align-items:center;
@@ -346,22 +348,24 @@
346
348
  width:100%;
347
349
  box-sizing:border-box;
348
350
  }
349
- .magritte-description-bottom-sheet-content___swnEV_1-2-49{
351
+ .magritte-description-bottom-sheet-content___swnEV_1-2-51{
350
352
  padding:8px 0;
351
353
  }
352
- .magritte-header___egZXt_1-2-49{
354
+ .magritte-header___egZXt_1-2-51{
353
355
  grid-row:1;
354
356
  z-index:2;
355
357
  opacity:var(--media-viewer-toolbars-opacity);
356
358
  transform:translateY(calc(var(--magritte-ui-media-viewer-hide-tools-progress) * -100%));
359
+ --magritte-ui-nav-bar-title-color-override:var(--magritte-color-text-constant-v24-7-1);
360
+ --magritte-ui-nav-bar-subtitle-color-override:var(--magritte-color-text-constant-secondary-v24-7-1);
357
361
  }
358
- .magritte-footer___rOH-M_1-2-49{
362
+ .magritte-footer___rOH-M_1-2-51{
359
363
  grid-row:3;
360
364
  z-index:2;
361
365
  opacity:var(--media-viewer-toolbars-opacity);
362
366
  transform:translateY(calc(var(--magritte-ui-media-viewer-hide-tools-progress) * 100%));
363
367
  }
364
- .magritte-description___dYc-E_1-2-49{
368
+ .magritte-description___dYc-E_1-2-51{
365
369
  display:inline-block;
366
370
  max-width:100%;
367
371
  }
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-CChQc8FL.js';
21
+ import './media-viewer-Bktr9x_a.js';
22
22
  import './public/Gallery.js';
23
23
  import '@hh.ru/magritte-common-resize';
24
24
  import '@hh.ru/magritte-ui-icon/icon';
@@ -43,6 +43,7 @@ import './internal/PreviewItem.js';
43
43
  import './internal/PreviewItemBody.js';
44
44
  import './internal/PreviewZoomControl.js';
45
45
  import './public/Toolbar.js';
46
+ import '@hh.ru/magritte-ui-icon';
46
47
  import './public/Tools.js';
47
48
  import './internal/ImagesLoader.js';
48
49
  //# 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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -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-CChQc8FL.js';
11
+ import { s as styles } from '../media-viewer-Bktr9x_a.js';
12
12
  import './ImagesLoader.js';
13
13
  import './utils.js';
14
14
  import '@hh.ru/magritte-design-tokens/types';
@@ -14,7 +14,7 @@ import { usePinchToZoom } from './hooks/usePinchToZoom.js';
14
14
  import { useWheelToZoom } from './hooks/useWheelToZoom.js';
15
15
  import { lerp, clamp } from './utils.js';
16
16
  import { Text } from '@hh.ru/magritte-ui-typography';
17
- import { s as styles } from '../media-viewer-CChQc8FL.js';
17
+ import { s as styles } from '../media-viewer-Bktr9x_a.js';
18
18
  import './ImagesLoader.js';
19
19
  import '@use-gesture/react';
20
20
 
@@ -9,7 +9,7 @@ import '@hh.ru/magritte-ui-breakpoint';
9
9
  import './utils.js';
10
10
  import '@hh.ru/magritte-design-tokens/types';
11
11
  import './animations.js';
12
- import '../media-viewer-CChQc8FL.js';
12
+ import '../media-viewer-Bktr9x_a.js';
13
13
  import './ImagesLoader.js';
14
14
 
15
15
  const PreviewItem = ({ index, ...props }) => {
@@ -5,7 +5,7 @@ import { useMotionValue, useTransform, useMotionValueEvent, animate, motion } fr
5
5
  import { useBreakpoint } from '@hh.ru/magritte-ui-breakpoint';
6
6
  import { useMediaViewerContext, usePreviewContext } from './context.js';
7
7
  import { useDetectDiscreteChange, clamp } from './utils.js';
8
- import { s as styles } from '../media-viewer-CChQc8FL.js';
8
+ import { s as styles } from '../media-viewer-Bktr9x_a.js';
9
9
  import './ImagesLoader.js';
10
10
  import '@hh.ru/magritte-design-tokens/types';
11
11
  import './animations.js';
@@ -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-CChQc8FL.js';
12
+ import { s as styles } from '../media-viewer-Bktr9x_a.js';
13
13
  import './ImagesLoader.js';
14
14
 
15
15
  const getCurrentControllerLimits = (globalContext) => {
@@ -0,0 +1,5 @@
1
+ import './index.css';
2
+ var styles = {"media-viewer":"magritte-media-viewer___KnrXP_1-2-51","mediaViewer":"magritte-media-viewer___KnrXP_1-2-51","gallery-placeholder":"magritte-gallery-placeholder___rUoGL_1-2-51","galleryPlaceholder":"magritte-gallery-placeholder___rUoGL_1-2-51","media-viewer-gallery":"magritte-media-viewer-gallery___P0SnN_1-2-51","mediaViewerGallery":"magritte-media-viewer-gallery___P0SnN_1-2-51","gallery-item":"magritte-gallery-item___Js0Z5_1-2-51","galleryItem":"magritte-gallery-item___Js0Z5_1-2-51","gallery-item-transform-container":"magritte-gallery-item-transform-container___N8-sA_1-2-51","galleryItemTransformContainer":"magritte-gallery-item-transform-container___N8-sA_1-2-51","preview-counter":"magritte-preview-counter___uP2Hc_1-2-51","previewCounter":"magritte-preview-counter___uP2Hc_1-2-51","with-description":"magritte-with-description___-w7ld_1-2-51","withDescription":"magritte-with-description___-w7ld_1-2-51","counter-number":"magritte-counter-number___gUpMp_1-2-51","counterNumber":"magritte-counter-number___gUpMp_1-2-51","no-description-placeholder":"magritte-no-description-placeholder___qc6h2_1-2-51","noDescriptionPlaceholder":"magritte-no-description-placeholder___qc6h2_1-2-51","preview-zoom-control":"magritte-preview-zoom-control___026jA_1-2-51","previewZoomControl":"magritte-preview-zoom-control___026jA_1-2-51","preview-container":"magritte-preview-container___nwjNY_1-2-51","previewContainer":"magritte-preview-container___nwjNY_1-2-51","preview":"magritte-preview___0Ge4C_1-2-51","preview-list":"magritte-preview-list___SAXLZ_1-2-51","previewList":"magritte-preview-list___SAXLZ_1-2-51","preview-item":"magritte-preview-item___gz5f2_1-2-51","previewItem":"magritte-preview-item___gz5f2_1-2-51","preview-item-container":"magritte-preview-item-container___JDVsk_1-2-51","previewItemContainer":"magritte-preview-item-container___JDVsk_1-2-51","media-viewer-toolbar":"magritte-media-viewer-toolbar___2C8nr_1-2-51","mediaViewerToolbar":"magritte-media-viewer-toolbar___2C8nr_1-2-51","no-description":"magritte-no-description___NebrT_1-2-51","noDescription":"magritte-no-description___NebrT_1-2-51","media-viewer-toolbar-left":"magritte-media-viewer-toolbar-left___YzkJt_1-2-51","mediaViewerToolbarLeft":"magritte-media-viewer-toolbar-left___YzkJt_1-2-51","media-viewer-toolbar-right":"magritte-media-viewer-toolbar-right___kBER9_1-2-51","mediaViewerToolbarRight":"magritte-media-viewer-toolbar-right___kBER9_1-2-51","prev-button":"magritte-prev-button___WMYjR_1-2-51","prevButton":"magritte-prev-button___WMYjR_1-2-51","next-button":"magritte-next-button___f8hJT_1-2-51","nextButton":"magritte-next-button___f8hJT_1-2-51","slide-button":"magritte-slide-button___sY8LB_1-2-51","slideButton":"magritte-slide-button___sY8LB_1-2-51","preview-placeholder":"magritte-preview-placeholder___yuhW1_1-2-51","previewPlaceholder":"magritte-preview-placeholder___yuhW1_1-2-51","gallery-item-loader":"magritte-gallery-item-loader___70TDe_1-2-51","galleryItemLoader":"magritte-gallery-item-loader___70TDe_1-2-51","gallery-item-error-container":"magritte-gallery-item-error-container___Z-HyZ_1-2-51","galleryItemErrorContainer":"magritte-gallery-item-error-container___Z-HyZ_1-2-51","description-bottom-sheet-content":"magritte-description-bottom-sheet-content___swnEV_1-2-51","descriptionBottomSheetContent":"magritte-description-bottom-sheet-content___swnEV_1-2-51","header":"magritte-header___egZXt_1-2-51","footer":"magritte-footer___rOH-M_1-2-51","description":"magritte-description___dYc-E_1-2-51"};
3
+
4
+ export { styles as s };
5
+ //# sourceMappingURL=media-viewer-Bktr9x_a.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media-viewer-Bktr9x_a.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.2.49",
3
+ "version": "1.2.51",
4
4
  "main": "index.js",
5
5
  "types": "index.d.ts",
6
6
  "sideEffects": [
@@ -26,17 +26,17 @@
26
26
  "@hh.ru/magritte-common-resize": "0.2.2",
27
27
  "@hh.ru/magritte-common-use-multiple-refs": "1.1.11",
28
28
  "@hh.ru/magritte-common-use-translation": "3.1.0",
29
- "@hh.ru/magritte-design-tokens": "24.7.0",
29
+ "@hh.ru/magritte-design-tokens": "24.7.1",
30
30
  "@hh.ru/magritte-internal-accessible-region": "1.0.1",
31
- "@hh.ru/magritte-ui-bottom-sheet": "9.3.42",
31
+ "@hh.ru/magritte-ui-bottom-sheet": "9.3.44",
32
32
  "@hh.ru/magritte-ui-breakpoint": "6.1.1",
33
- "@hh.ru/magritte-ui-icon": "14.2.9",
34
- "@hh.ru/magritte-ui-layer": "3.2.4",
35
- "@hh.ru/magritte-ui-loader": "3.0.11",
33
+ "@hh.ru/magritte-ui-icon": "14.2.10",
34
+ "@hh.ru/magritte-ui-layer": "3.2.5",
35
+ "@hh.ru/magritte-ui-loader": "3.0.12",
36
36
  "@hh.ru/magritte-ui-mock-component": "1.1.7",
37
- "@hh.ru/magritte-ui-nav-bar": "1.3.29",
38
- "@hh.ru/magritte-ui-tooltip": "11.0.23",
39
- "@hh.ru/magritte-ui-typography": "5.3.3",
37
+ "@hh.ru/magritte-ui-nav-bar": "1.4.0",
38
+ "@hh.ru/magritte-ui-tooltip": "11.0.24",
39
+ "@hh.ru/magritte-ui-typography": "5.3.4",
40
40
  "@use-gesture/react": "10.3.1"
41
41
  },
42
42
  "peerDependencies": {
@@ -44,5 +44,5 @@
44
44
  "motion": "^12.23.12",
45
45
  "react": ">=18.2.0"
46
46
  },
47
- "gitHead": "2e75dbd0238c8eb7f7db95beebee5f0d241e95f3"
47
+ "gitHead": "9f10e45677eb8f50f47c766674fb072a4dc88dc0"
48
48
  }
package/public/Footer.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import './../index.css';
2
2
  import { jsx } from 'react/jsx-runtime';
3
- import { s as styles } from '../media-viewer-CChQc8FL.js';
3
+ import { s as styles } from '../media-viewer-Bktr9x_a.js';
4
4
 
5
5
  const Footer = ({ children }) => {
6
6
  return (jsx("div", { "data-media-viewer-interactive": "true", className: styles.footer, children: children }));
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 { clamp } from '../internal/utils.js';
12
12
  import { GalleryItem } from './GalleryItem.js';
13
- import { s as styles } from '../media-viewer-CChQc8FL.js';
13
+ import { s as styles } from '../media-viewer-Bktr9x_a.js';
14
14
  import '../internal/ImagesLoader.js';
15
15
  import '@use-gesture/react';
16
16
  import '@hh.ru/magritte-design-tokens/types';
@@ -17,7 +17,7 @@ import '@use-gesture/react';
17
17
  import '../internal/hooks/usePinchToZoom.js';
18
18
  import '../internal/hooks/useWheelToZoom.js';
19
19
  import '@hh.ru/magritte-ui-typography';
20
- import '../media-viewer-CChQc8FL.js';
20
+ import '../media-viewer-Bktr9x_a.js';
21
21
  import '../internal/ImagesLoader.js';
22
22
 
23
23
  const GALLERY_ITEM_VIRTUALIZATION_PADDING = 5;
package/public/Header.js CHANGED
@@ -1,11 +1,17 @@
1
1
  import './../index.css';
2
2
  import { jsx } from 'react/jsx-runtime';
3
3
  import { NavBarDefaultPropsContext } from '@hh.ru/magritte-ui-nav-bar';
4
- import { s as styles } from '../media-viewer-CChQc8FL.js';
4
+ import { s as styles } from '../media-viewer-Bktr9x_a.js';
5
5
 
6
6
  const NAV_BAR_ACTIONS_DEFAULT_PROPS = {
7
7
  verticalAlign: 'top',
8
8
  };
9
+ const NAV_BAR_TITLE_DEFAULT_PROPS = {
10
+ style: 'constant',
11
+ };
12
+ const NAV_BAR_SUBTITLE_DEFAULT_PROPS = {
13
+ style: 'constant-secondary',
14
+ };
9
15
  const NAV_BAR_ACTIONS_ICONS_DEFAULT_PROPS = {
10
16
  borderRadius: 'halfHeight',
11
17
  padding: 8,
@@ -13,7 +19,7 @@ const NAV_BAR_ACTIONS_ICONS_DEFAULT_PROPS = {
13
19
  initialColor: 'constant',
14
20
  };
15
21
  const Header = ({ children }) => {
16
- return (jsx(NavBarDefaultPropsContext, { actionsProps: NAV_BAR_ACTIONS_DEFAULT_PROPS, actionsIconsProps: NAV_BAR_ACTIONS_ICONS_DEFAULT_PROPS, children: jsx("div", { "data-media-viewer-interactive": "true", className: styles.header, children: children }) }));
22
+ return (jsx(NavBarDefaultPropsContext, { actionsProps: NAV_BAR_ACTIONS_DEFAULT_PROPS, actionsIconsProps: NAV_BAR_ACTIONS_ICONS_DEFAULT_PROPS, titleProps: NAV_BAR_TITLE_DEFAULT_PROPS, subtitleProps: NAV_BAR_SUBTITLE_DEFAULT_PROPS, children: jsx("div", { "data-media-viewer-interactive": "true", className: styles.header, children: children }) }));
17
23
  };
18
24
 
19
25
  export { Header };
@@ -1 +1 @@
1
- {"version":3,"file":"Header.js","sources":["src/public/Header.tsx"],"sourcesContent":["import { FC, PropsWithChildren } from 'react';\n\nimport { NavBarDefaultPropsContext } from '@hh.ru/magritte-ui-nav-bar';\n\nimport styles from './media-viewer.less';\n\nconst NAV_BAR_ACTIONS_DEFAULT_PROPS = {\n verticalAlign: 'top',\n} as const;\n\nconst NAV_BAR_ACTIONS_ICONS_DEFAULT_PROPS = {\n borderRadius: 'halfHeight',\n padding: 8,\n backgroundStyle: undefined,\n initialColor: 'constant',\n} as const;\n\nexport const Header: FC<PropsWithChildren> = ({ children }) => {\n return (\n <NavBarDefaultPropsContext\n actionsProps={NAV_BAR_ACTIONS_DEFAULT_PROPS}\n actionsIconsProps={NAV_BAR_ACTIONS_ICONS_DEFAULT_PROPS}\n >\n <div data-media-viewer-interactive=\"true\" className={styles.header}>\n {children}\n </div>\n </NavBarDefaultPropsContext>\n );\n};\n"],"names":["_jsx"],"mappings":";;;;AAMA,MAAM,6BAA6B,GAAG;AAClC,IAAA,aAAa,EAAE,KAAK;CACd,CAAC;AAEX,MAAM,mCAAmC,GAAG;AACxC,IAAA,YAAY,EAAE,YAAY;AAC1B,IAAA,OAAO,EAAE,CAAC;AACV,IAAA,eAAe,EAAE,SAAS;AAC1B,IAAA,YAAY,EAAE,UAAU;CAClB,CAAC;MAEE,MAAM,GAA0B,CAAC,EAAE,QAAQ,EAAE,KAAI;IAC1D,QACIA,GAAC,CAAA,yBAAyB,EACtB,EAAA,YAAY,EAAE,6BAA6B,EAC3C,iBAAiB,EAAE,mCAAmC,EAAA,QAAA,EAEtDA,8CAAmC,MAAM,EAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAA,QAAA,EAC7D,QAAQ,EAAA,CACP,EACkB,CAAA,EAC9B;AACN;;;;"}
1
+ {"version":3,"file":"Header.js","sources":["src/public/Header.tsx"],"sourcesContent":["import { FC, PropsWithChildren } from 'react';\n\nimport { NavBarDefaultPropsContext } from '@hh.ru/magritte-ui-nav-bar';\n\nimport styles from './media-viewer.less';\n\nconst NAV_BAR_ACTIONS_DEFAULT_PROPS = {\n verticalAlign: 'top',\n} as const;\n\nconst NAV_BAR_TITLE_DEFAULT_PROPS = {\n style: 'constant',\n} as const;\n\nconst NAV_BAR_SUBTITLE_DEFAULT_PROPS = {\n style: 'constant-secondary',\n} as const;\n\nconst NAV_BAR_ACTIONS_ICONS_DEFAULT_PROPS = {\n borderRadius: 'halfHeight',\n padding: 8,\n backgroundStyle: undefined,\n initialColor: 'constant',\n} as const;\n\nexport const Header: FC<PropsWithChildren> = ({ children }) => {\n return (\n <NavBarDefaultPropsContext\n actionsProps={NAV_BAR_ACTIONS_DEFAULT_PROPS}\n actionsIconsProps={NAV_BAR_ACTIONS_ICONS_DEFAULT_PROPS}\n titleProps={NAV_BAR_TITLE_DEFAULT_PROPS}\n subtitleProps={NAV_BAR_SUBTITLE_DEFAULT_PROPS}\n >\n <div data-media-viewer-interactive=\"true\" className={styles.header}>\n {children}\n </div>\n </NavBarDefaultPropsContext>\n );\n};\n"],"names":["_jsx"],"mappings":";;;;AAMA,MAAM,6BAA6B,GAAG;AAClC,IAAA,aAAa,EAAE,KAAK;CACd,CAAC;AAEX,MAAM,2BAA2B,GAAG;AAChC,IAAA,KAAK,EAAE,UAAU;CACX,CAAC;AAEX,MAAM,8BAA8B,GAAG;AACnC,IAAA,KAAK,EAAE,oBAAoB;CACrB,CAAC;AAEX,MAAM,mCAAmC,GAAG;AACxC,IAAA,YAAY,EAAE,YAAY;AAC1B,IAAA,OAAO,EAAE,CAAC;AACV,IAAA,eAAe,EAAE,SAAS;AAC1B,IAAA,YAAY,EAAE,UAAU;CAClB,CAAC;MAEE,MAAM,GAA0B,CAAC,EAAE,QAAQ,EAAE,KAAI;AAC1D,IAAA,QACIA,GAAA,CAAC,yBAAyB,EAAA,EACtB,YAAY,EAAE,6BAA6B,EAC3C,iBAAiB,EAAE,mCAAmC,EACtD,UAAU,EAAE,2BAA2B,EACvC,aAAa,EAAE,8BAA8B,EAAA,QAAA,EAE7CA,GAAmC,CAAA,KAAA,EAAA,EAAA,+BAAA,EAAA,MAAM,EAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAC7D,QAAA,EAAA,QAAQ,EACP,CAAA,EAAA,CACkB,EAC9B;AACN;;;;"}
@@ -22,7 +22,7 @@ import { Header } from './Header.js';
22
22
  import { Preview } from './Preview.js';
23
23
  import { Toolbar } from './Toolbar.js';
24
24
  import { DesktopTool, MobileTool, RotateTool, CloseTool, FullWidthTool } from './Tools.js';
25
- import { s as styles } from '../media-viewer-CChQc8FL.js';
25
+ import { s as styles } from '../media-viewer-Bktr9x_a.js';
26
26
  import '../internal/ImagesLoader.js';
27
27
  import '@use-gesture/react';
28
28
  import '@hh.ru/magritte-common-resize';
@@ -44,6 +44,7 @@ import '@hh.ru/magritte-ui-tooltip';
44
44
  import '../internal/PreviewItem.js';
45
45
  import '../internal/PreviewItemBody.js';
46
46
  import '../internal/PreviewZoomControl.js';
47
+ import '@hh.ru/magritte-ui-icon';
47
48
 
48
49
  const ArrowRight = {
49
50
  key: 'ArrowRight',
@@ -1 +1 @@
1
- {"version":3,"file":"MediaViewer.js","sources":["../../common/keyboard/lib/keys-BQYfE7yD.js","../../common/keyboard/lib/findNextFocusableElement.js","../../common/keyboard/lib/match.js","../../common/keyboard/lib/useKeyboardNavigation.js","src/public/MediaViewer.tsx"],"sourcesContent":["const Escape = {\n key: 'Escape',\n code: 'Esc',\n};\nconst PageUp = {\n key: 'PageUp',\n code: 'Numpad9',\n};\nconst PageDown = {\n key: 'PageDown',\n code: 'Numpad3',\n};\nconst Enter = {\n key: 'Enter',\n code: 'Enter',\n};\nconst Space = {\n key: ' ',\n code: 'Space',\n};\nconst Backspace = {\n key: 'Backspace',\n code: 'Backspace',\n};\nconst Delete = {\n key: 'Delete',\n code: 'Delete',\n};\nconst Home = {\n key: 'Home',\n code: 'Home',\n};\nconst End = {\n key: 'End',\n code: 'End',\n};\nconst ArrowRight = {\n key: 'ArrowRight',\n code: 'ArrowRight',\n};\nconst ArrowLeft = {\n key: 'ArrowLeft',\n code: 'ArrowLeft',\n};\nconst ArrowUp = {\n key: 'ArrowUp',\n code: 'ArrowUp',\n};\nconst ArrowDown = {\n key: 'ArrowDown',\n code: 'ArrowDown',\n};\nconst Tab = {\n key: 'Tab',\n code: 'Tab',\n};\nconst DigitKeys = [\n {\n key: '0',\n code: 'Digit0',\n },\n {\n key: '1',\n code: 'Digit1',\n },\n {\n key: '2',\n code: 'Digit2',\n },\n {\n key: '3',\n code: 'Digit3',\n },\n {\n key: '4',\n code: 'Digit4',\n },\n {\n key: '5',\n code: 'Digit5',\n },\n {\n key: '6',\n code: 'Digit6',\n },\n {\n key: '7',\n code: 'Digit7',\n },\n {\n key: '8',\n code: 'Digit8',\n },\n {\n key: '9',\n code: 'Digit9',\n },\n];\n\nvar keys = /*#__PURE__*/Object.freeze({\n __proto__: null,\n ArrowDown: ArrowDown,\n ArrowLeft: ArrowLeft,\n ArrowRight: ArrowRight,\n ArrowUp: ArrowUp,\n Backspace: Backspace,\n Delete: Delete,\n DigitKeys: DigitKeys,\n End: End,\n Enter: Enter,\n Escape: Escape,\n Home: Home,\n PageDown: PageDown,\n PageUp: PageUp,\n Space: Space,\n Tab: Tab\n});\n\nexport { ArrowUp as A, Backspace as B, Delete as D, Escape as E, Home as H, PageUp as P, Space as S, Tab as T, ArrowRight as a, ArrowDown as b, ArrowLeft as c, PageDown as d, Enter as e, End as f, DigitKeys as g, keys as k };\n//# sourceMappingURL=keys-BQYfE7yD.js.map\n","const FLOAT_COMPARISON_THRESHOLD = 0.5;\nconst FOCUSABLE_SELECTOR = `\n button:not([disabled]):not([tabindex=\"-1\"]),\n a[href],\n input:not([disabled]):not([tabindex=\"-1\"]):not([type=\"hidden\"]),\n select:not([disabled]):not([tabindex=\"-1\"]),\n textarea:not([disabled]):not([tabindex=\"-1\"]),\n [tabindex]:not([tabindex=\"-1\"])\n`;\nconst findAllFocusableElements = (container) => {\n return [...container.querySelectorAll(FOCUSABLE_SELECTOR)];\n};\n/**\n * Находит следующий фокусабельный элемент в контейнере\n * В зависимости от параметра `mode`:\n * `list` — элемент ищется сначала в заданном направлении, потом с противоположной стороны контейнера (т.е. навигация зациклена)\n * `main` — элемент ищется только в заданном направлении относительно таргета\n */\nconst findNextFocusableElement = (container, targetElement, direction, mode = 'main') => {\n if ((mode === 'main' && !targetElement) ||\n (targetElement !== null && (targetElement === container || !container.contains(targetElement)))) {\n return null;\n }\n const focusableElements = findAllFocusableElements(container);\n const targetRect = targetElement?.getBoundingClientRect() ?? null;\n const targetCenterX = targetRect !== null ? Math.round(targetRect.left + targetRect.width / 2) : Number.NaN;\n const targetCenterY = targetRect !== null ? Math.round(targetRect.top + targetRect.height / 2) : Number.NaN;\n let nearestElement = null;\n let minDistance = Infinity;\n let oppositeElement = null;\n let oppositeCoordinate = Number.NaN;\n switch (direction) {\n case 'up':\n oppositeCoordinate = targetRect?.top ?? 0;\n break;\n case 'down':\n oppositeCoordinate = targetRect?.bottom ?? Infinity;\n break;\n case 'left':\n oppositeCoordinate = targetRect?.right ?? 0;\n break;\n case 'right':\n oppositeCoordinate = targetRect?.left ?? Infinity;\n break;\n }\n focusableElements.forEach((element) => {\n if (targetElement === element) {\n return;\n }\n const elementRect = element.getBoundingClientRect();\n const elementCenterX = Math.round(elementRect.left + elementRect.width / 2);\n const elementCenterY = Math.round(elementRect.top + elementRect.height / 2);\n // Ищем ближайший к таргету элемент в заданном направлении\n if (targetRect !== null &&\n !(direction === 'up' && (elementCenterY >= targetCenterY || elementRect.bottom > targetRect.top)) &&\n !(direction === 'down' && (elementCenterY <= targetCenterY || elementRect.top < targetRect.bottom)) &&\n !(direction === 'left' && (elementCenterX >= targetCenterX || elementRect.right > targetRect.left)) &&\n !(direction === 'right' && (elementCenterX <= targetCenterX || elementRect.left < targetRect.right))) {\n let distanceX = Math.abs(targetCenterX - elementCenterX);\n let distanceY = Math.abs(targetCenterY - elementCenterY);\n // Добавляем коэффициенты для соответствующих осей,\n // чтобы сделать элементы в направлении, соответствующем нажатой arrow-клавише, более приоритетными\n if (direction === 'up' || direction === 'down') {\n distanceY *= 0.5;\n }\n else {\n distanceX *= 0.5;\n }\n const distance = Math.hypot(distanceX, distanceY);\n if (distance < minDistance) {\n minDistance = distance;\n nearestElement = element;\n }\n }\n // Ищем ближайший к противоположной стороне элемент\n if (mode === 'list') {\n if (direction === 'up' && elementRect.top - oppositeCoordinate > FLOAT_COMPARISON_THRESHOLD) {\n oppositeElement = element;\n oppositeCoordinate = elementRect.top;\n }\n else if (direction === 'down' && elementRect.bottom - oppositeCoordinate < -FLOAT_COMPARISON_THRESHOLD) {\n oppositeElement = element;\n oppositeCoordinate = elementRect.bottom;\n }\n else if (direction === 'left' && elementRect.right - oppositeCoordinate > FLOAT_COMPARISON_THRESHOLD) {\n oppositeElement = element;\n oppositeCoordinate = elementRect.right;\n }\n else if (direction === 'right' && elementRect.left - oppositeCoordinate < -FLOAT_COMPARISON_THRESHOLD) {\n oppositeElement = element;\n oppositeCoordinate = elementRect.left;\n }\n }\n });\n return nearestElement ?? oppositeElement;\n};\n\nexport { FOCUSABLE_SELECTOR, findAllFocusableElements, findNextFocusableElement };\n//# sourceMappingURL=findNextFocusableElement.js.map\n","const keyboardMatch = (event, { key, code }) => {\n return event.key === key || event.code === code;\n};\nconst keyboardMatches = (event, keysToMatch) => {\n for (let i = 0; i < keysToMatch.length; i++) {\n if (keyboardMatch(event, keysToMatch[i])) {\n return true;\n }\n }\n return false;\n};\n\nexport { keyboardMatch, keyboardMatches };\n//# sourceMappingURL=match.js.map\n","import { useRef, useCallback } from 'react';\nimport { findAllFocusableElements, findNextFocusableElement } from './findNextFocusableElement.js';\nimport { T as Tab, A as ArrowUp, a as ArrowRight, b as ArrowDown, c as ArrowLeft } from './keys-BQYfE7yD.js';\nimport { keyboardMatch } from './match.js';\n\nconst TEXT_FIELD_SELECTOR = 'textarea, input:not([type=\"checkbox\"]):not([type=\"radio\"]), [contenteditable=\"true\"]';\nconst isTextElement = (element) => {\n return element?.matches(TEXT_FIELD_SELECTOR) ?? false;\n};\nconst getNavigationDirection = (event, mode = 'main') => {\n if (mode === 'list' && keyboardMatch(event, Tab)) {\n return event.shiftKey ? 'up' : 'down';\n }\n if (keyboardMatch(event, ArrowUp)) {\n return 'up';\n }\n if (keyboardMatch(event, ArrowRight)) {\n return 'right';\n }\n if (keyboardMatch(event, ArrowDown)) {\n return 'down';\n }\n if (keyboardMatch(event, ArrowLeft)) {\n return 'left';\n }\n return null;\n};\nconst handleKeyboardNavigation = (event, container, activeElementOverride = null, mode = 'main') => {\n const activeElement = activeElementOverride ?? document.activeElement;\n if (mode === 'loop') {\n const focusableElements = findAllFocusableElements(container);\n if (keyboardMatch(event, Tab) && focusableElements.length > 1) {\n if ((activeElement === container || activeElement === focusableElements[focusableElements.length - 1]) &&\n !event.shiftKey) {\n event.preventDefault();\n focusableElements[0].focus();\n }\n if ((activeElement === container || activeElement === focusableElements[0]) && event.shiftKey) {\n event.preventDefault();\n focusableElements[focusableElements.length - 1].focus();\n }\n }\n }\n if (mode !== 'loop' && !isTextElement(activeElement)) {\n const direction = getNavigationDirection(event, mode);\n if (direction !== null) {\n const nextFocusableElement = findNextFocusableElement(container, activeElement, direction, mode);\n if (nextFocusableElement !== null) {\n event.preventDefault();\n nextFocusableElement.focus();\n }\n }\n }\n};\n/**\n * Хук для клавиатурной навигации внутри контейнера с использованием клавиш-стрелок и Tab.\n * Поведение зависит от параметра `mode`:\n * `main` — поддерживается навигация стрелками, поведение Tab не переопределяется\n * `list` — поддерживается навигация стрелками, Tab и Shift+Tab работают аналогично ↓ и ↑, навигация зациклена\n * `loop` — навигация стрелками не поддерживается, навигация с помощью Tab и Shift+Tab зациклена\n */\nconst useKeyboardNavigation = (args = {}) => {\n const { mode = 'main', enabled = true, activeElement: activeElementOverride } = args;\n const enabledRef = useRef(enabled);\n enabledRef.current = enabled;\n const activeElementOverrideRef = useRef(activeElementOverride);\n activeElementOverrideRef.current = activeElementOverride;\n const modeRef = useRef(mode);\n modeRef.current = mode;\n const cleanupRef = useRef(null);\n const bindNavigationRef = useCallback((container) => {\n if (!container) {\n cleanupRef.current?.();\n cleanupRef.current = null;\n return;\n }\n const handleKeyDown = (event) => {\n if (enabledRef.current) {\n handleKeyboardNavigation(event, container, activeElementOverrideRef.current, modeRef.current);\n }\n };\n container.addEventListener('keydown', handleKeyDown);\n cleanupRef.current = () => {\n container.removeEventListener('keydown', handleKeyDown);\n };\n }, []);\n return bindNavigationRef;\n};\n\nexport { TEXT_FIELD_SELECTOR, isTextElement, useKeyboardNavigation };\n//# sourceMappingURL=useKeyboardNavigation.js.map\n","import {\n type FC,\n type PropsWithChildren,\n type ReactElement,\n type Ref,\n useState,\n CSSProperties,\n useEffect,\n useCallback,\n useRef,\n} from 'react';\nimport { type HTMLMotionProps, motion, useMotionValue, animate } from 'motion/react';\n\nimport { useKeyboardNavigation } from '@hh.ru/magritte-common-keyboard';\nimport { disableScroll } from '@hh.ru/magritte-common-modal-helper';\nimport { useTranslation } from '@hh.ru/magritte-common-use-translation';\nimport { tokenSemanticAnimationTimeMDuration } from '@hh.ru/magritte-design-tokens/types';\nimport {\n AccessibleRegionProvider,\n useAccessibleRegionProps,\n type ExplicitRegionProps,\n} from '@hh.ru/magritte-internal-accessible-region';\nimport { useBreakpoint } from '@hh.ru/magritte-ui-breakpoint';\nimport { Layer } from '@hh.ru/magritte-ui-layer';\nimport { GalleryItemProps } from '@hh.ru/magritte-ui-media-viewer/internal/GalleryItemBody';\nimport { EASE_BASE } from '@hh.ru/magritte-ui-media-viewer/internal/animations';\nimport {\n createMediaViewerContextValue,\n MediaViewerContext,\n GalleryItemsContext,\n} from '@hh.ru/magritte-ui-media-viewer/internal/context';\nimport { useAutoHideTools } from '@hh.ru/magritte-ui-media-viewer/internal/hooks/useAutoHideTools';\nimport { useSwipeToClose } from '@hh.ru/magritte-ui-media-viewer/internal/hooks/useSwipeToClose';\nimport { useTapToToggleTools } from '@hh.ru/magritte-ui-media-viewer/internal/hooks/useTapToToggleTools';\nimport { useVirtualization } from '@hh.ru/magritte-ui-media-viewer/internal/hooks/useVirtualization';\nimport { clamp, useInitOnce } from '@hh.ru/magritte-ui-media-viewer/internal/utils';\nimport { Footer } from '@hh.ru/magritte-ui-media-viewer/public/Footer';\nimport { Gallery } from '@hh.ru/magritte-ui-media-viewer/public/Gallery';\nimport { GalleryItem } from '@hh.ru/magritte-ui-media-viewer/public/GalleryItem';\nimport { Header } from '@hh.ru/magritte-ui-media-viewer/public/Header';\nimport { Preview, PreviewProps } from '@hh.ru/magritte-ui-media-viewer/public/Preview';\nimport { Toolbar, ToolbarProps } from '@hh.ru/magritte-ui-media-viewer/public/Toolbar';\nimport {\n DesktopTool,\n MobileTool,\n RotateTool,\n CloseTool,\n FullWidthTool,\n} from '@hh.ru/magritte-ui-media-viewer/public/Tools';\n\nimport styles from './media-viewer.less';\n\ninterface MediaViewerCompound {\n Gallery: FC<PropsWithChildren>;\n GalleryItem: FC<GalleryItemProps>;\n Preview: FC<PreviewProps>;\n Toolbar: FC<ToolbarProps>;\n Header: FC<PropsWithChildren>;\n Footer: FC<PropsWithChildren>;\n DesktopTool: FC<PropsWithChildren>;\n MobileTool: FC<PropsWithChildren>;\n RotateTool: FC<PropsWithChildren>;\n CloseTool: FC<PropsWithChildren>;\n FullWidthTool: FC<PropsWithChildren>;\n}\n\ninterface MediaViewerDialogProps extends HTMLMotionProps<'div'> {\n explicitAria: ExplicitRegionProps;\n /** Плейсхолдер из переводов — используется только если метка не задана иным источником */\n fallbackLabel: string | undefined;\n dialogRef: Ref<HTMLDivElement>;\n}\n\n/**\n * Внутренний `role=\"dialog\"`-узел. Вынесен в отдельный компонент, потому что обязан жить **под**\n * `AccessibleRegionProvider`: только так `useAccessibleRegionProps` видит метки/описания,\n * зарегистрированные потомками, и выставляет `aria-labelledby` / `aria-describedby`. Явные\n * `aria-*` пропы при этом всё перекрывают. Метка из переводов — лишь дефолт: применяется\n * локально, только когда ни один другой источник метку не дал.\n */\nconst MediaViewerDialog: FC<MediaViewerDialogProps> = ({\n explicitAria,\n fallbackLabel,\n dialogRef,\n children,\n ...rest\n}) => {\n const aria = useAccessibleRegionProps(explicitAria);\n const hasLabel = 'aria-label' in aria || 'aria-labelledby' in aria;\n\n return (\n <motion.div\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={hasLabel ? undefined : fallbackLabel}\n {...aria}\n {...rest}\n ref={dialogRef}\n >\n {children}\n </motion.div>\n );\n};\n\nexport const MediaViewer: FC<\n PropsWithChildren<{\n /** Флаг видимости компонента */\n visible: boolean;\n /** Коллбек, вызываемый при закрытии медиавьюера */\n onClose?: VoidFunction;\n }> &\n ExplicitRegionProps\n> &\n MediaViewerCompound = ({\n children,\n visible,\n onClose,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledby,\n 'aria-describedby': ariaDescribedby,\n 'aria-description': ariaDescription,\n}) => {\n const [isVisible, setIsVisible] = useState(visible);\n const currentSlideIndex = useMotionValue<number>(0);\n const closeProgress = useMotionValue(isVisible ? 0 : 1);\n const visibleRange = useVirtualization(4, currentSlideIndex);\n const closeCallbackRef = useRef(onClose);\n closeCallbackRef.current = onClose;\n const scrollEnableRef = useRef<VoidFunction | null>(null);\n\n const close = useInitOnce(() => () => {\n if (closeProgress.get() >= 1) {\n closeProgress.set(1);\n setIsVisible(false);\n scrollEnableRef.current?.();\n scrollEnableRef.current = null;\n currentSlideIndex.set(0);\n closeCallbackRef.current?.();\n return;\n }\n const delta = Math.abs(closeProgress.get() - 1);\n const animationDuration = delta * (tokenSemanticAnimationTimeMDuration / 1000);\n animate(closeProgress, 1, {\n duration: animationDuration,\n ease: EASE_BASE,\n onComplete: () => {\n setIsVisible(false);\n scrollEnableRef.current?.();\n scrollEnableRef.current = null;\n currentSlideIndex.set(0);\n closeCallbackRef.current?.();\n },\n });\n });\n const rootRef = useKeyboardNavigation({ mode: 'loop', enabled: isVisible });\n\n const contextValue = useInitOnce(() => {\n const contextValue = createMediaViewerContextValue(visibleRange, currentSlideIndex, closeProgress, close);\n contextValue.onRequestClose = () => {\n setIsVisible(false);\n };\n return contextValue;\n });\n\n const keyHandler = useCallback(\n (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n close();\n return;\n }\n\n const currentSlideIndexRounded = Math.round(currentSlideIndex.get());\n let slideIndex = currentSlideIndexRounded;\n const slidesCount = contextValue.totalSlides.get();\n if (event.key === 'ArrowLeft') {\n slideIndex = clamp(slideIndex - 1, 0, slidesCount - 1);\n }\n if (event.key === 'ArrowRight') {\n slideIndex = clamp(slideIndex + 1, 0, slidesCount - 1);\n }\n if (slideIndex === currentSlideIndexRounded) {\n return;\n }\n\n currentSlideIndex.set(slideIndex);\n },\n [currentSlideIndex, contextValue, close]\n );\n\n useEffect(() => {\n if (visible) {\n document.addEventListener('keydown', keyHandler);\n } else {\n document.removeEventListener('keydown', keyHandler);\n }\n return () => {\n document.removeEventListener('keydown', keyHandler);\n };\n }, [visible, keyHandler]);\n\n const componentDescriptionTrl = useTranslation('MediaViewer', 'componentDescription');\n\n const explicitAria: ExplicitRegionProps = {\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledby,\n 'aria-describedby': ariaDescribedby,\n 'aria-description': ariaDescription,\n };\n\n useEffect(() => {\n if (visible && !isVisible) {\n scrollEnableRef.current = disableScroll();\n setIsVisible(true);\n animate(contextValue.closeProgress, 0, {\n duration: tokenSemanticAnimationTimeMDuration / 1000,\n ease: EASE_BASE,\n });\n return;\n }\n\n if (!visible && isVisible) {\n close();\n }\n // нельзя реагировать на изменения isVisible, иначе при закрытии жестом хук будет срабатывать\n // и переоткрывать компонент, хук должен реагировать только на изменения visible пропса\n // eslint-disable-next-line disable-autofix/react-hooks/exhaustive-deps\n }, [visible, contextValue]);\n\n useEffect(\n () => () => {\n scrollEnableRef.current?.();\n scrollEnableRef.current = null;\n },\n []\n );\n\n const { isMobile } = useBreakpoint();\n\n const [bindSwipeToClose, isSwipeClosing] = useSwipeToClose<HTMLDivElement>(contextValue);\n const { onTouchStart, onTouchEnd, onClick } = useTapToToggleTools(contextValue);\n const { onMouseMove, onClick: onDesktopClick } = useAutoHideTools(contextValue);\n\n const [items, setItems] = useState<ReactElement<GalleryItemProps>[]>([]);\n\n if (!isVisible) {\n return null;\n }\n\n return (\n <GalleryItemsContext.Provider value={{ items, setItems }}>\n <MediaViewerContext.Provider value={contextValue}>\n <AccessibleRegionProvider>\n <Layer layer=\"media-viewer\">\n <MediaViewerDialog\n explicitAria={explicitAria}\n fallbackLabel={componentDescriptionTrl}\n className={styles.mediaViewer}\n {...(bindSwipeToClose() as HTMLMotionProps<'div'>)}\n dialogRef={rootRef}\n style={\n {\n '--magritte-ui-media-viewer-close-progress': contextValue.closeProgress,\n '--magritte-ui-media-viewer-hide-tools-progress': contextValue.hideToolsProgress,\n ...(!isSwipeClosing\n ? {\n '--magritte-ui-media-viewer-image-close-progress':\n contextValue.closeProgress,\n }\n : {}),\n } as CSSProperties\n }\n onTouchStart={isMobile ? onTouchStart : undefined}\n onTouchEnd={isMobile ? onTouchEnd : undefined}\n onClick={isMobile ? onClick : onDesktopClick}\n onMouseMove={!isMobile ? onMouseMove : undefined}\n >\n {children}\n </MediaViewerDialog>\n </Layer>\n </AccessibleRegionProvider>\n </MediaViewerContext.Provider>\n </GalleryItemsContext.Provider>\n );\n};\n\nMediaViewer.Header = Header;\nMediaViewer.Footer = Footer;\nMediaViewer.Gallery = Gallery;\nMediaViewer.GalleryItem = GalleryItem;\nMediaViewer.Preview = Preview;\nMediaViewer.Toolbar = Toolbar;\nMediaViewer.DesktopTool = DesktopTool;\nMediaViewer.MobileTool = MobileTool;\nMediaViewer.RotateTool = RotateTool;\nMediaViewer.CloseTool = CloseTool;\nMediaViewer.FullWidthTool = FullWidthTool;\n\nMediaViewer.displayName = 'MediaViewer';\n"],"names":["_jsx"],"mappings":"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"}
1
+ {"version":3,"file":"MediaViewer.js","sources":["../../common/keyboard/lib/keys-BQYfE7yD.js","../../common/keyboard/lib/findNextFocusableElement.js","../../common/keyboard/lib/match.js","../../common/keyboard/lib/useKeyboardNavigation.js","src/public/MediaViewer.tsx"],"sourcesContent":["const Escape = {\n key: 'Escape',\n code: 'Esc',\n};\nconst PageUp = {\n key: 'PageUp',\n code: 'Numpad9',\n};\nconst PageDown = {\n key: 'PageDown',\n code: 'Numpad3',\n};\nconst Enter = {\n key: 'Enter',\n code: 'Enter',\n};\nconst Space = {\n key: ' ',\n code: 'Space',\n};\nconst Backspace = {\n key: 'Backspace',\n code: 'Backspace',\n};\nconst Delete = {\n key: 'Delete',\n code: 'Delete',\n};\nconst Home = {\n key: 'Home',\n code: 'Home',\n};\nconst End = {\n key: 'End',\n code: 'End',\n};\nconst ArrowRight = {\n key: 'ArrowRight',\n code: 'ArrowRight',\n};\nconst ArrowLeft = {\n key: 'ArrowLeft',\n code: 'ArrowLeft',\n};\nconst ArrowUp = {\n key: 'ArrowUp',\n code: 'ArrowUp',\n};\nconst ArrowDown = {\n key: 'ArrowDown',\n code: 'ArrowDown',\n};\nconst Tab = {\n key: 'Tab',\n code: 'Tab',\n};\nconst DigitKeys = [\n {\n key: '0',\n code: 'Digit0',\n },\n {\n key: '1',\n code: 'Digit1',\n },\n {\n key: '2',\n code: 'Digit2',\n },\n {\n key: '3',\n code: 'Digit3',\n },\n {\n key: '4',\n code: 'Digit4',\n },\n {\n key: '5',\n code: 'Digit5',\n },\n {\n key: '6',\n code: 'Digit6',\n },\n {\n key: '7',\n code: 'Digit7',\n },\n {\n key: '8',\n code: 'Digit8',\n },\n {\n key: '9',\n code: 'Digit9',\n },\n];\n\nvar keys = /*#__PURE__*/Object.freeze({\n __proto__: null,\n ArrowDown: ArrowDown,\n ArrowLeft: ArrowLeft,\n ArrowRight: ArrowRight,\n ArrowUp: ArrowUp,\n Backspace: Backspace,\n Delete: Delete,\n DigitKeys: DigitKeys,\n End: End,\n Enter: Enter,\n Escape: Escape,\n Home: Home,\n PageDown: PageDown,\n PageUp: PageUp,\n Space: Space,\n Tab: Tab\n});\n\nexport { ArrowUp as A, Backspace as B, Delete as D, Escape as E, Home as H, PageUp as P, Space as S, Tab as T, ArrowRight as a, ArrowDown as b, ArrowLeft as c, PageDown as d, Enter as e, End as f, DigitKeys as g, keys as k };\n//# sourceMappingURL=keys-BQYfE7yD.js.map\n","const FLOAT_COMPARISON_THRESHOLD = 0.5;\nconst FOCUSABLE_SELECTOR = `\n button:not([disabled]):not([tabindex=\"-1\"]),\n a[href],\n input:not([disabled]):not([tabindex=\"-1\"]):not([type=\"hidden\"]),\n select:not([disabled]):not([tabindex=\"-1\"]),\n textarea:not([disabled]):not([tabindex=\"-1\"]),\n [tabindex]:not([tabindex=\"-1\"])\n`;\nconst findAllFocusableElements = (container) => {\n return [...container.querySelectorAll(FOCUSABLE_SELECTOR)];\n};\n/**\n * Находит следующий фокусабельный элемент в контейнере\n * В зависимости от параметра `mode`:\n * `list` — элемент ищется сначала в заданном направлении, потом с противоположной стороны контейнера (т.е. навигация зациклена)\n * `main` — элемент ищется только в заданном направлении относительно таргета\n */\nconst findNextFocusableElement = (container, targetElement, direction, mode = 'main') => {\n if ((mode === 'main' && !targetElement) ||\n (targetElement !== null && (targetElement === container || !container.contains(targetElement)))) {\n return null;\n }\n const focusableElements = findAllFocusableElements(container);\n const targetRect = targetElement?.getBoundingClientRect() ?? null;\n const targetCenterX = targetRect !== null ? Math.round(targetRect.left + targetRect.width / 2) : Number.NaN;\n const targetCenterY = targetRect !== null ? Math.round(targetRect.top + targetRect.height / 2) : Number.NaN;\n let nearestElement = null;\n let minDistance = Infinity;\n let oppositeElement = null;\n let oppositeCoordinate = Number.NaN;\n switch (direction) {\n case 'up':\n oppositeCoordinate = targetRect?.top ?? 0;\n break;\n case 'down':\n oppositeCoordinate = targetRect?.bottom ?? Infinity;\n break;\n case 'left':\n oppositeCoordinate = targetRect?.right ?? 0;\n break;\n case 'right':\n oppositeCoordinate = targetRect?.left ?? Infinity;\n break;\n }\n focusableElements.forEach((element) => {\n if (targetElement === element) {\n return;\n }\n const elementRect = element.getBoundingClientRect();\n const elementCenterX = Math.round(elementRect.left + elementRect.width / 2);\n const elementCenterY = Math.round(elementRect.top + elementRect.height / 2);\n // Ищем ближайший к таргету элемент в заданном направлении\n if (targetRect !== null &&\n !(direction === 'up' && (elementCenterY >= targetCenterY || elementRect.bottom > targetRect.top)) &&\n !(direction === 'down' && (elementCenterY <= targetCenterY || elementRect.top < targetRect.bottom)) &&\n !(direction === 'left' && (elementCenterX >= targetCenterX || elementRect.right > targetRect.left)) &&\n !(direction === 'right' && (elementCenterX <= targetCenterX || elementRect.left < targetRect.right))) {\n let distanceX = Math.abs(targetCenterX - elementCenterX);\n let distanceY = Math.abs(targetCenterY - elementCenterY);\n // Добавляем коэффициенты для соответствующих осей,\n // чтобы сделать элементы в направлении, соответствующем нажатой arrow-клавише, более приоритетными\n if (direction === 'up' || direction === 'down') {\n distanceY *= 0.5;\n }\n else {\n distanceX *= 0.5;\n }\n const distance = Math.hypot(distanceX, distanceY);\n if (distance < minDistance) {\n minDistance = distance;\n nearestElement = element;\n }\n }\n // Ищем ближайший к противоположной стороне элемент\n if (mode === 'list') {\n if (direction === 'up' && elementRect.top - oppositeCoordinate > FLOAT_COMPARISON_THRESHOLD) {\n oppositeElement = element;\n oppositeCoordinate = elementRect.top;\n }\n else if (direction === 'down' && elementRect.bottom - oppositeCoordinate < -FLOAT_COMPARISON_THRESHOLD) {\n oppositeElement = element;\n oppositeCoordinate = elementRect.bottom;\n }\n else if (direction === 'left' && elementRect.right - oppositeCoordinate > FLOAT_COMPARISON_THRESHOLD) {\n oppositeElement = element;\n oppositeCoordinate = elementRect.right;\n }\n else if (direction === 'right' && elementRect.left - oppositeCoordinate < -FLOAT_COMPARISON_THRESHOLD) {\n oppositeElement = element;\n oppositeCoordinate = elementRect.left;\n }\n }\n });\n return nearestElement ?? oppositeElement;\n};\n\nexport { FOCUSABLE_SELECTOR, findAllFocusableElements, findNextFocusableElement };\n//# sourceMappingURL=findNextFocusableElement.js.map\n","const keyboardMatch = (event, { key, code }) => {\n return event.key === key || event.code === code;\n};\nconst keyboardMatches = (event, keysToMatch) => {\n for (let i = 0; i < keysToMatch.length; i++) {\n if (keyboardMatch(event, keysToMatch[i])) {\n return true;\n }\n }\n return false;\n};\n\nexport { keyboardMatch, keyboardMatches };\n//# sourceMappingURL=match.js.map\n","import { useRef, useCallback } from 'react';\nimport { findAllFocusableElements, findNextFocusableElement } from './findNextFocusableElement.js';\nimport { T as Tab, A as ArrowUp, a as ArrowRight, b as ArrowDown, c as ArrowLeft } from './keys-BQYfE7yD.js';\nimport { keyboardMatch } from './match.js';\n\nconst TEXT_FIELD_SELECTOR = 'textarea, input:not([type=\"checkbox\"]):not([type=\"radio\"]), [contenteditable=\"true\"]';\nconst isTextElement = (element) => {\n return element?.matches(TEXT_FIELD_SELECTOR) ?? false;\n};\nconst getNavigationDirection = (event, mode = 'main') => {\n if (mode === 'list' && keyboardMatch(event, Tab)) {\n return event.shiftKey ? 'up' : 'down';\n }\n if (keyboardMatch(event, ArrowUp)) {\n return 'up';\n }\n if (keyboardMatch(event, ArrowRight)) {\n return 'right';\n }\n if (keyboardMatch(event, ArrowDown)) {\n return 'down';\n }\n if (keyboardMatch(event, ArrowLeft)) {\n return 'left';\n }\n return null;\n};\nconst handleKeyboardNavigation = (event, container, activeElementOverride = null, mode = 'main') => {\n const activeElement = activeElementOverride ?? document.activeElement;\n if (mode === 'loop') {\n const focusableElements = findAllFocusableElements(container);\n if (keyboardMatch(event, Tab) && focusableElements.length > 1) {\n if ((activeElement === container || activeElement === focusableElements[focusableElements.length - 1]) &&\n !event.shiftKey) {\n event.preventDefault();\n focusableElements[0].focus();\n }\n if ((activeElement === container || activeElement === focusableElements[0]) && event.shiftKey) {\n event.preventDefault();\n focusableElements[focusableElements.length - 1].focus();\n }\n }\n }\n if (mode !== 'loop' && !isTextElement(activeElement)) {\n const direction = getNavigationDirection(event, mode);\n if (direction !== null) {\n const nextFocusableElement = findNextFocusableElement(container, activeElement, direction, mode);\n if (nextFocusableElement !== null) {\n event.preventDefault();\n nextFocusableElement.focus();\n }\n }\n }\n};\n/**\n * Хук для клавиатурной навигации внутри контейнера с использованием клавиш-стрелок и Tab.\n * Поведение зависит от параметра `mode`:\n * `main` — поддерживается навигация стрелками, поведение Tab не переопределяется\n * `list` — поддерживается навигация стрелками, Tab и Shift+Tab работают аналогично ↓ и ↑, навигация зациклена\n * `loop` — навигация стрелками не поддерживается, навигация с помощью Tab и Shift+Tab зациклена\n */\nconst useKeyboardNavigation = (args = {}) => {\n const { mode = 'main', enabled = true, activeElement: activeElementOverride } = args;\n const enabledRef = useRef(enabled);\n enabledRef.current = enabled;\n const activeElementOverrideRef = useRef(activeElementOverride);\n activeElementOverrideRef.current = activeElementOverride;\n const modeRef = useRef(mode);\n modeRef.current = mode;\n const cleanupRef = useRef(null);\n const bindNavigationRef = useCallback((container) => {\n if (!container) {\n cleanupRef.current?.();\n cleanupRef.current = null;\n return;\n }\n const handleKeyDown = (event) => {\n if (enabledRef.current) {\n handleKeyboardNavigation(event, container, activeElementOverrideRef.current, modeRef.current);\n }\n };\n container.addEventListener('keydown', handleKeyDown);\n cleanupRef.current = () => {\n container.removeEventListener('keydown', handleKeyDown);\n };\n }, []);\n return bindNavigationRef;\n};\n\nexport { TEXT_FIELD_SELECTOR, isTextElement, useKeyboardNavigation };\n//# sourceMappingURL=useKeyboardNavigation.js.map\n","import {\n type FC,\n type PropsWithChildren,\n type ReactElement,\n type Ref,\n useState,\n CSSProperties,\n useEffect,\n useCallback,\n useRef,\n} from 'react';\nimport { type HTMLMotionProps, motion, useMotionValue, animate } from 'motion/react';\n\nimport { useKeyboardNavigation } from '@hh.ru/magritte-common-keyboard';\nimport { disableScroll } from '@hh.ru/magritte-common-modal-helper';\nimport { useTranslation } from '@hh.ru/magritte-common-use-translation';\nimport { tokenSemanticAnimationTimeMDuration } from '@hh.ru/magritte-design-tokens/types';\nimport {\n AccessibleRegionProvider,\n useAccessibleRegionProps,\n type ExplicitRegionProps,\n} from '@hh.ru/magritte-internal-accessible-region';\nimport { useBreakpoint } from '@hh.ru/magritte-ui-breakpoint';\nimport { Layer } from '@hh.ru/magritte-ui-layer';\nimport { GalleryItemProps } from '@hh.ru/magritte-ui-media-viewer/internal/GalleryItemBody';\nimport { EASE_BASE } from '@hh.ru/magritte-ui-media-viewer/internal/animations';\nimport {\n createMediaViewerContextValue,\n MediaViewerContext,\n GalleryItemsContext,\n} from '@hh.ru/magritte-ui-media-viewer/internal/context';\nimport { useAutoHideTools } from '@hh.ru/magritte-ui-media-viewer/internal/hooks/useAutoHideTools';\nimport { useSwipeToClose } from '@hh.ru/magritte-ui-media-viewer/internal/hooks/useSwipeToClose';\nimport { useTapToToggleTools } from '@hh.ru/magritte-ui-media-viewer/internal/hooks/useTapToToggleTools';\nimport { useVirtualization } from '@hh.ru/magritte-ui-media-viewer/internal/hooks/useVirtualization';\nimport { clamp, useInitOnce } from '@hh.ru/magritte-ui-media-viewer/internal/utils';\nimport { Footer } from '@hh.ru/magritte-ui-media-viewer/public/Footer';\nimport { Gallery } from '@hh.ru/magritte-ui-media-viewer/public/Gallery';\nimport { GalleryItem } from '@hh.ru/magritte-ui-media-viewer/public/GalleryItem';\nimport { Header } from '@hh.ru/magritte-ui-media-viewer/public/Header';\nimport { Preview, PreviewProps } from '@hh.ru/magritte-ui-media-viewer/public/Preview';\nimport { Toolbar, ToolbarProps } from '@hh.ru/magritte-ui-media-viewer/public/Toolbar';\nimport {\n DesktopTool,\n MobileTool,\n RotateTool,\n CloseTool,\n FullWidthTool,\n} from '@hh.ru/magritte-ui-media-viewer/public/Tools';\n\nimport styles from './media-viewer.less';\n\ninterface MediaViewerCompound {\n Gallery: FC<PropsWithChildren>;\n GalleryItem: FC<GalleryItemProps>;\n Preview: FC<PreviewProps>;\n Toolbar: FC<ToolbarProps>;\n Header: FC<PropsWithChildren>;\n Footer: FC<PropsWithChildren>;\n DesktopTool: FC<PropsWithChildren>;\n MobileTool: FC<PropsWithChildren>;\n RotateTool: FC<PropsWithChildren>;\n CloseTool: FC<PropsWithChildren>;\n FullWidthTool: FC<PropsWithChildren>;\n}\n\ninterface MediaViewerDialogProps extends HTMLMotionProps<'div'> {\n explicitAria: ExplicitRegionProps;\n /** Плейсхолдер из переводов — используется только если метка не задана иным источником */\n fallbackLabel: string | undefined;\n dialogRef: Ref<HTMLDivElement>;\n}\n\n/**\n * Внутренний `role=\"dialog\"`-узел. Вынесен в отдельный компонент, потому что обязан жить **под**\n * `AccessibleRegionProvider`: только так `useAccessibleRegionProps` видит метки/описания,\n * зарегистрированные потомками, и выставляет `aria-labelledby` / `aria-describedby`. Явные\n * `aria-*` пропы при этом всё перекрывают. Метка из переводов — лишь дефолт: применяется\n * локально, только когда ни один другой источник метку не дал.\n */\nconst MediaViewerDialog: FC<MediaViewerDialogProps> = ({\n explicitAria,\n fallbackLabel,\n dialogRef,\n children,\n ...rest\n}) => {\n const aria = useAccessibleRegionProps(explicitAria);\n const hasLabel = 'aria-label' in aria || 'aria-labelledby' in aria;\n\n return (\n <motion.div\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={hasLabel ? undefined : fallbackLabel}\n {...aria}\n {...rest}\n ref={dialogRef}\n >\n {children}\n </motion.div>\n );\n};\n\nexport const MediaViewer: FC<\n PropsWithChildren<{\n /** Флаг видимости компонента */\n visible: boolean;\n /** Коллбек, вызываемый при закрытии медиавьюера */\n onClose?: VoidFunction;\n }> &\n ExplicitRegionProps\n> &\n MediaViewerCompound = ({\n children,\n visible,\n onClose,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledby,\n 'aria-describedby': ariaDescribedby,\n 'aria-description': ariaDescription,\n}) => {\n const [isVisible, setIsVisible] = useState(visible);\n const currentSlideIndex = useMotionValue<number>(0);\n const closeProgress = useMotionValue(isVisible ? 0 : 1);\n const visibleRange = useVirtualization(4, currentSlideIndex);\n const closeCallbackRef = useRef(onClose);\n closeCallbackRef.current = onClose;\n const scrollEnableRef = useRef<VoidFunction | null>(null);\n\n const close = useInitOnce(() => () => {\n if (closeProgress.get() >= 1) {\n closeProgress.set(1);\n setIsVisible(false);\n scrollEnableRef.current?.();\n scrollEnableRef.current = null;\n currentSlideIndex.set(0);\n closeCallbackRef.current?.();\n return;\n }\n const delta = Math.abs(closeProgress.get() - 1);\n const animationDuration = delta * (tokenSemanticAnimationTimeMDuration / 1000);\n animate(closeProgress, 1, {\n duration: animationDuration,\n ease: EASE_BASE,\n onComplete: () => {\n setIsVisible(false);\n scrollEnableRef.current?.();\n scrollEnableRef.current = null;\n currentSlideIndex.set(0);\n closeCallbackRef.current?.();\n },\n });\n });\n const rootRef = useKeyboardNavigation({ mode: 'loop', enabled: isVisible });\n\n const contextValue = useInitOnce(() => {\n const contextValue = createMediaViewerContextValue(visibleRange, currentSlideIndex, closeProgress, close);\n contextValue.onRequestClose = () => {\n setIsVisible(false);\n };\n return contextValue;\n });\n\n const keyHandler = useCallback(\n (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n close();\n return;\n }\n\n const currentSlideIndexRounded = Math.round(currentSlideIndex.get());\n let slideIndex = currentSlideIndexRounded;\n const slidesCount = contextValue.totalSlides.get();\n if (event.key === 'ArrowLeft') {\n slideIndex = clamp(slideIndex - 1, 0, slidesCount - 1);\n }\n if (event.key === 'ArrowRight') {\n slideIndex = clamp(slideIndex + 1, 0, slidesCount - 1);\n }\n if (slideIndex === currentSlideIndexRounded) {\n return;\n }\n\n currentSlideIndex.set(slideIndex);\n },\n [currentSlideIndex, contextValue, close]\n );\n\n useEffect(() => {\n if (visible) {\n document.addEventListener('keydown', keyHandler);\n } else {\n document.removeEventListener('keydown', keyHandler);\n }\n return () => {\n document.removeEventListener('keydown', keyHandler);\n };\n }, [visible, keyHandler]);\n\n const componentDescriptionTrl = useTranslation('MediaViewer', 'componentDescription');\n\n const explicitAria: ExplicitRegionProps = {\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledby,\n 'aria-describedby': ariaDescribedby,\n 'aria-description': ariaDescription,\n };\n\n useEffect(() => {\n if (visible && !isVisible) {\n scrollEnableRef.current = disableScroll();\n setIsVisible(true);\n animate(contextValue.closeProgress, 0, {\n duration: tokenSemanticAnimationTimeMDuration / 1000,\n ease: EASE_BASE,\n });\n return;\n }\n\n if (!visible && isVisible) {\n close();\n }\n // нельзя реагировать на изменения isVisible, иначе при закрытии жестом хук будет срабатывать\n // и переоткрывать компонент, хук должен реагировать только на изменения visible пропса\n // eslint-disable-next-line disable-autofix/react-hooks/exhaustive-deps\n }, [visible, contextValue]);\n\n useEffect(\n () => () => {\n scrollEnableRef.current?.();\n scrollEnableRef.current = null;\n },\n []\n );\n\n const { isMobile } = useBreakpoint();\n\n const [bindSwipeToClose, isSwipeClosing] = useSwipeToClose<HTMLDivElement>(contextValue);\n const { onTouchStart, onTouchEnd, onClick } = useTapToToggleTools(contextValue);\n const { onMouseMove, onClick: onDesktopClick } = useAutoHideTools(contextValue);\n\n const [items, setItems] = useState<ReactElement<GalleryItemProps>[]>([]);\n\n if (!isVisible) {\n return null;\n }\n\n return (\n <GalleryItemsContext.Provider value={{ items, setItems }}>\n <MediaViewerContext.Provider value={contextValue}>\n <AccessibleRegionProvider>\n <Layer layer=\"media-viewer\">\n <MediaViewerDialog\n explicitAria={explicitAria}\n fallbackLabel={componentDescriptionTrl}\n className={styles.mediaViewer}\n {...(bindSwipeToClose() as HTMLMotionProps<'div'>)}\n dialogRef={rootRef}\n style={\n {\n '--magritte-ui-media-viewer-close-progress': contextValue.closeProgress,\n '--magritte-ui-media-viewer-hide-tools-progress': contextValue.hideToolsProgress,\n ...(!isSwipeClosing\n ? {\n '--magritte-ui-media-viewer-image-close-progress':\n contextValue.closeProgress,\n }\n : {}),\n } as CSSProperties\n }\n onTouchStart={isMobile ? onTouchStart : undefined}\n onTouchEnd={isMobile ? onTouchEnd : undefined}\n onClick={isMobile ? onClick : onDesktopClick}\n onMouseMove={!isMobile ? onMouseMove : undefined}\n >\n {children}\n </MediaViewerDialog>\n </Layer>\n </AccessibleRegionProvider>\n </MediaViewerContext.Provider>\n </GalleryItemsContext.Provider>\n );\n};\n\nMediaViewer.Header = Header;\nMediaViewer.Footer = Footer;\nMediaViewer.Gallery = Gallery;\nMediaViewer.GalleryItem = GalleryItem;\nMediaViewer.Preview = Preview;\nMediaViewer.Toolbar = Toolbar;\nMediaViewer.DesktopTool = DesktopTool;\nMediaViewer.MobileTool = MobileTool;\nMediaViewer.RotateTool = RotateTool;\nMediaViewer.CloseTool = CloseTool;\nMediaViewer.FullWidthTool = FullWidthTool;\n\nMediaViewer.displayName = 'MediaViewer';\n"],"names":["_jsx"],"mappings":"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"}
package/public/Preview.js CHANGED
@@ -12,7 +12,7 @@ import { EASE_BASE } from '../internal/animations.js';
12
12
  import { useMediaViewerContext, useGalleryItemsContext, PreviewContext } from '../internal/context.js';
13
13
  import { useVirtualization } from '../internal/hooks/useVirtualization.js';
14
14
  import { useDetectDiscreteChange, useInitOnce, clamp } from '../internal/utils.js';
15
- import { s as styles } from '../media-viewer-CChQc8FL.js';
15
+ import { s as styles } from '../media-viewer-Bktr9x_a.js';
16
16
  import 'classnames';
17
17
  import '@hh.ru/magritte-common-use-translation';
18
18
  import '@hh.ru/magritte-ui-bottom-sheet';
package/public/Toolbar.js CHANGED
@@ -1,9 +1,10 @@
1
1
  import './../index.css';
2
- import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { jsx, jsxs } from 'react/jsx-runtime';
3
3
  import classNames from 'classnames';
4
+ import { IconDefaultPropsContext } from '@hh.ru/magritte-ui-icon';
4
5
  import { Counter } from '../internal/Counter.js';
5
6
  import { useGalleryItemsContext } from '../internal/context.js';
6
- import { s as styles } from '../media-viewer-CChQc8FL.js';
7
+ import { s as styles } from '../media-viewer-Bktr9x_a.js';
7
8
  import 'react';
8
9
  import 'motion/react';
9
10
  import '@hh.ru/magritte-common-use-translation';
@@ -15,12 +16,18 @@ import '../internal/utils.js';
15
16
  import '@hh.ru/magritte-design-tokens/types';
16
17
  import '../internal/animations.js';
17
18
 
19
+ const ICON_DEFAULT_PROPS = {
20
+ borderRadius: 'halfHeight',
21
+ padding: 8,
22
+ backgroundStyle: undefined,
23
+ initialColor: 'constant',
24
+ };
18
25
  const Toolbar = ({ leftSlot, rightSlot, noCounter }) => {
19
26
  const { items } = useGalleryItemsContext();
20
27
  if (items.length <= 1 || noCounter) {
21
- return (jsxs("div", { className: classNames(styles.mediaViewerToolbar, styles.noDescription), "data-media-viewer-interactive": true, children: [leftSlot, rightSlot] }));
28
+ return (jsx(IconDefaultPropsContext, { props: ICON_DEFAULT_PROPS, children: jsxs("div", { className: classNames(styles.mediaViewerToolbar, styles.noDescription), "data-media-viewer-interactive": true, children: [leftSlot, rightSlot] }) }));
22
29
  }
23
- return (jsxs("div", { className: styles.mediaViewerToolbar, "data-media-viewer-interactive": true, children: [jsx("div", { className: styles.mediaViewerToolbarLeft, children: leftSlot }), jsx(Counter, { items: items }), jsx("div", { className: styles.mediaViewerToolbarRight, children: rightSlot })] }));
30
+ return (jsx(IconDefaultPropsContext, { props: ICON_DEFAULT_PROPS, children: jsxs("div", { className: styles.mediaViewerToolbar, "data-media-viewer-interactive": true, children: [jsx("div", { className: styles.mediaViewerToolbarLeft, children: leftSlot }), jsx(Counter, { items: items }), jsx("div", { className: styles.mediaViewerToolbarRight, children: rightSlot })] }) }));
24
31
  };
25
32
 
26
33
  export { Toolbar };
@@ -1 +1 @@
1
- {"version":3,"file":"Toolbar.js","sources":["src/public/Toolbar.tsx"],"sourcesContent":["import { type FC, type ReactNode } from 'react';\nimport classNames from 'classnames';\n\nimport { Counter } from '@hh.ru/magritte-ui-media-viewer/internal/Counter';\nimport { useGalleryItemsContext } from '@hh.ru/magritte-ui-media-viewer/internal/context';\n\nimport styles from './media-viewer.less';\n\nexport interface ToolbarProps {\n /** Слот для левой части тулбара */\n leftSlot?: ReactNode;\n /** Слот для правой части тулбара */\n rightSlot?: ReactNode;\n /** Отключить счетчик */\n noCounter?: boolean;\n}\n\nexport const Toolbar: FC<ToolbarProps> = ({ leftSlot, rightSlot, noCounter }) => {\n const { items } = useGalleryItemsContext();\n if (items.length <= 1 || noCounter) {\n return (\n <div className={classNames(styles.mediaViewerToolbar, styles.noDescription)} data-media-viewer-interactive>\n {leftSlot}\n {rightSlot}\n </div>\n );\n }\n return (\n <div className={styles.mediaViewerToolbar} data-media-viewer-interactive>\n <div className={styles.mediaViewerToolbarLeft}>{leftSlot}</div>\n <Counter items={items} />\n <div className={styles.mediaViewerToolbarRight}>{rightSlot}</div>\n </div>\n );\n};\n"],"names":["_jsxs","_jsx"],"mappings":";;;;;;;;;;;;;;;;AAiBO,MAAM,OAAO,GAAqB,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,KAAI;AAC5E,IAAA,MAAM,EAAE,KAAK,EAAE,GAAG,sBAAsB,EAAE,CAAC;IAC3C,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,SAAS,EAAE;QAChC,QACIA,cAAK,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC,kBAAkB,EAAE,MAAM,CAAC,aAAa,CAAC,EACtE,+BAAA,EAAA,IAAA,EAAA,QAAA,EAAA,CAAA,QAAQ,EACR,SAAS,CAAA,EAAA,CACR,EACR;KACL;AACD,IAAA,QACIA,IAAK,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,MAAM,CAAC,kBAAkB,EAAA,+BAAA,EAAA,IAAA,EAAA,QAAA,EAAA,CACrCC,GAAK,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,MAAM,CAAC,sBAAsB,EAAA,QAAA,EAAG,QAAQ,EAAO,CAAA,EAC/DA,GAAC,CAAA,OAAO,IAAC,KAAK,EAAE,KAAK,EAAA,CAAI,EACzBA,GAAK,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,MAAM,CAAC,uBAAuB,EAAA,QAAA,EAAG,SAAS,EAAO,CAAA,CAAA,EAAA,CAC/D,EACR;AACN;;;;"}
1
+ {"version":3,"file":"Toolbar.js","sources":["src/public/Toolbar.tsx"],"sourcesContent":["import { type FC, type ReactNode } from 'react';\nimport classNames from 'classnames';\n\nimport { IconDefaultPropsContext } from '@hh.ru/magritte-ui-icon';\nimport { Counter } from '@hh.ru/magritte-ui-media-viewer/internal/Counter';\nimport { useGalleryItemsContext } from '@hh.ru/magritte-ui-media-viewer/internal/context';\n\nimport styles from './media-viewer.less';\n\nexport interface ToolbarProps {\n /** Слот для левой части тулбара */\n leftSlot?: ReactNode;\n /** Слот для правой части тулбара */\n rightSlot?: ReactNode;\n /** Отключить счетчик */\n noCounter?: boolean;\n}\n\nconst ICON_DEFAULT_PROPS = {\n borderRadius: 'halfHeight',\n padding: 8,\n backgroundStyle: undefined,\n initialColor: 'constant',\n} as const;\n\nexport const Toolbar: FC<ToolbarProps> = ({ leftSlot, rightSlot, noCounter }) => {\n const { items } = useGalleryItemsContext();\n if (items.length <= 1 || noCounter) {\n return (\n <IconDefaultPropsContext props={ICON_DEFAULT_PROPS}>\n <div\n className={classNames(styles.mediaViewerToolbar, styles.noDescription)}\n data-media-viewer-interactive\n >\n {leftSlot}\n {rightSlot}\n </div>\n </IconDefaultPropsContext>\n );\n }\n return (\n <IconDefaultPropsContext props={ICON_DEFAULT_PROPS}>\n <div className={styles.mediaViewerToolbar} data-media-viewer-interactive>\n <div className={styles.mediaViewerToolbarLeft}>{leftSlot}</div>\n <Counter items={items} />\n <div className={styles.mediaViewerToolbarRight}>{rightSlot}</div>\n </div>\n </IconDefaultPropsContext>\n );\n};\n"],"names":["_jsx","_jsxs"],"mappings":";;;;;;;;;;;;;;;;;AAkBA,MAAM,kBAAkB,GAAG;AACvB,IAAA,YAAY,EAAE,YAAY;AAC1B,IAAA,OAAO,EAAE,CAAC;AACV,IAAA,eAAe,EAAE,SAAS;AAC1B,IAAA,YAAY,EAAE,UAAU;CAClB,CAAC;AAEJ,MAAM,OAAO,GAAqB,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,KAAI;AAC5E,IAAA,MAAM,EAAE,KAAK,EAAE,GAAG,sBAAsB,EAAE,CAAC;IAC3C,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,SAAS,EAAE;AAChC,QAAA,QACIA,GAAA,CAAC,uBAAuB,EAAA,EAAC,KAAK,EAAE,kBAAkB,EAAA,QAAA,EAC9CC,IACI,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC,kBAAkB,EAAE,MAAM,CAAC,aAAa,CAAC,EAAA,+BAAA,EAAA,IAAA,EAAA,QAAA,EAAA,CAGrE,QAAQ,EACR,SAAS,CAAA,EAAA,CACR,EACgB,CAAA,EAC5B;KACL;IACD,QACID,IAAC,uBAAuB,EAAA,EAAC,KAAK,EAAE,kBAAkB,YAC9CC,IAAK,CAAA,KAAA,EAAA,EAAA,SAAS,EAAE,MAAM,CAAC,kBAAkB,EACrC,+BAAA,EAAA,IAAA,EAAA,QAAA,EAAA,CAAAD,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,MAAM,CAAC,sBAAsB,EAAA,QAAA,EAAG,QAAQ,EAAO,CAAA,EAC/DA,IAAC,OAAO,EAAA,EAAC,KAAK,EAAE,KAAK,GAAI,EACzBA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,MAAM,CAAC,uBAAuB,EAAA,QAAA,EAAG,SAAS,EAAO,CAAA,CAAA,EAAA,CAC/D,EACgB,CAAA,EAC5B;AACN;;;;"}
@@ -1,5 +0,0 @@
1
- import './index.css';
2
- var styles = {"media-viewer":"magritte-media-viewer___KnrXP_1-2-49","mediaViewer":"magritte-media-viewer___KnrXP_1-2-49","gallery-placeholder":"magritte-gallery-placeholder___rUoGL_1-2-49","galleryPlaceholder":"magritte-gallery-placeholder___rUoGL_1-2-49","media-viewer-gallery":"magritte-media-viewer-gallery___P0SnN_1-2-49","mediaViewerGallery":"magritte-media-viewer-gallery___P0SnN_1-2-49","gallery-item":"magritte-gallery-item___Js0Z5_1-2-49","galleryItem":"magritte-gallery-item___Js0Z5_1-2-49","gallery-item-transform-container":"magritte-gallery-item-transform-container___N8-sA_1-2-49","galleryItemTransformContainer":"magritte-gallery-item-transform-container___N8-sA_1-2-49","preview-counter":"magritte-preview-counter___uP2Hc_1-2-49","previewCounter":"magritte-preview-counter___uP2Hc_1-2-49","with-description":"magritte-with-description___-w7ld_1-2-49","withDescription":"magritte-with-description___-w7ld_1-2-49","counter-number":"magritte-counter-number___gUpMp_1-2-49","counterNumber":"magritte-counter-number___gUpMp_1-2-49","no-description-placeholder":"magritte-no-description-placeholder___qc6h2_1-2-49","noDescriptionPlaceholder":"magritte-no-description-placeholder___qc6h2_1-2-49","preview-zoom-control":"magritte-preview-zoom-control___026jA_1-2-49","previewZoomControl":"magritte-preview-zoom-control___026jA_1-2-49","preview-container":"magritte-preview-container___nwjNY_1-2-49","previewContainer":"magritte-preview-container___nwjNY_1-2-49","preview":"magritte-preview___0Ge4C_1-2-49","preview-list":"magritte-preview-list___SAXLZ_1-2-49","previewList":"magritte-preview-list___SAXLZ_1-2-49","preview-item":"magritte-preview-item___gz5f2_1-2-49","previewItem":"magritte-preview-item___gz5f2_1-2-49","preview-item-container":"magritte-preview-item-container___JDVsk_1-2-49","previewItemContainer":"magritte-preview-item-container___JDVsk_1-2-49","media-viewer-toolbar":"magritte-media-viewer-toolbar___2C8nr_1-2-49","mediaViewerToolbar":"magritte-media-viewer-toolbar___2C8nr_1-2-49","no-description":"magritte-no-description___NebrT_1-2-49","noDescription":"magritte-no-description___NebrT_1-2-49","media-viewer-toolbar-left":"magritte-media-viewer-toolbar-left___YzkJt_1-2-49","mediaViewerToolbarLeft":"magritte-media-viewer-toolbar-left___YzkJt_1-2-49","media-viewer-toolbar-right":"magritte-media-viewer-toolbar-right___kBER9_1-2-49","mediaViewerToolbarRight":"magritte-media-viewer-toolbar-right___kBER9_1-2-49","prev-button":"magritte-prev-button___WMYjR_1-2-49","prevButton":"magritte-prev-button___WMYjR_1-2-49","next-button":"magritte-next-button___f8hJT_1-2-49","nextButton":"magritte-next-button___f8hJT_1-2-49","slide-button":"magritte-slide-button___sY8LB_1-2-49","slideButton":"magritte-slide-button___sY8LB_1-2-49","preview-placeholder":"magritte-preview-placeholder___yuhW1_1-2-49","previewPlaceholder":"magritte-preview-placeholder___yuhW1_1-2-49","gallery-item-loader":"magritte-gallery-item-loader___70TDe_1-2-49","galleryItemLoader":"magritte-gallery-item-loader___70TDe_1-2-49","gallery-item-error-container":"magritte-gallery-item-error-container___Z-HyZ_1-2-49","galleryItemErrorContainer":"magritte-gallery-item-error-container___Z-HyZ_1-2-49","description-bottom-sheet-content":"magritte-description-bottom-sheet-content___swnEV_1-2-49","descriptionBottomSheetContent":"magritte-description-bottom-sheet-content___swnEV_1-2-49","header":"magritte-header___egZXt_1-2-49","footer":"magritte-footer___rOH-M_1-2-49","description":"magritte-description___dYc-E_1-2-49"};
3
-
4
- export { styles as s };
5
- //# sourceMappingURL=media-viewer-CChQc8FL.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"media-viewer-CChQc8FL.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}