@hh.ru/magritte-ui-media-viewer 1.2.46 → 1.2.48

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
@@ -13,7 +13,7 @@
13
13
  .magritte-night-theme{
14
14
  --magritte-color-component-skeleton-background-content-v24-7-0:#5e5e5e3d;
15
15
  }
16
- .magritte-media-viewer___KnrXP_1-2-46{
16
+ .magritte-media-viewer___KnrXP_1-2-48{
17
17
  position:fixed;
18
18
  inset:0;
19
19
  display:grid;
@@ -25,7 +25,7 @@
25
25
  --media-viewer-background-opacity:calc(1 - var(--magritte-ui-media-viewer-close-progress));
26
26
  --magritte-ui-nav-bar-background-color-override:var(--magritte-color-background-overlay-toolbar-v24-7-0);
27
27
  }
28
- .magritte-media-viewer___KnrXP_1-2-46::before{
28
+ .magritte-media-viewer___KnrXP_1-2-48::before{
29
29
  content:'';
30
30
  position:absolute;
31
31
  inset:0;
@@ -33,13 +33,13 @@
33
33
  opacity:var(--media-viewer-background-opacity);
34
34
  pointer-events:none;
35
35
  }
36
- .magritte-gallery-placeholder___rUoGL_1-2-46{
36
+ .magritte-gallery-placeholder___rUoGL_1-2-48{
37
37
  display:flex;
38
38
  align-items:stretch;
39
39
  grid-row:2;
40
40
  min-height:0;
41
41
  }
42
- .magritte-media-viewer-gallery___P0SnN_1-2-46{
42
+ .magritte-media-viewer-gallery___P0SnN_1-2-48{
43
43
  display:grid;
44
44
  flex-grow:1;
45
45
  contain:layout size;
@@ -48,16 +48,16 @@
48
48
  inset:0;
49
49
  }
50
50
  @media (min-width: 1020px){
51
- body.magritte-old-layout .magritte-media-viewer-gallery___P0SnN_1-2-46{
51
+ body.magritte-old-layout .magritte-media-viewer-gallery___P0SnN_1-2-48{
52
52
  position:relative;
53
53
  }
54
54
  }
55
55
  @media (min-width: 1024px){
56
- body:not(.magritte-old-layout) .magritte-media-viewer-gallery___P0SnN_1-2-46{
56
+ body:not(.magritte-old-layout) .magritte-media-viewer-gallery___P0SnN_1-2-48{
57
57
  position:relative;
58
58
  }
59
59
  }
60
- .magritte-gallery-item___Js0Z5_1-2-46{
60
+ .magritte-gallery-item___Js0Z5_1-2-48{
61
61
  position:relative;
62
62
  grid-area:1 / 1;
63
63
  contain:size;
@@ -66,7 +66,7 @@
66
66
  overflow-y:visible;
67
67
  opacity:calc(1 - var(--magritte-ui-media-viewer-image-close-progress, 0));
68
68
  }
69
- .magritte-gallery-item-transform-container___N8-sA_1-2-46{
69
+ .magritte-gallery-item-transform-container___N8-sA_1-2-48{
70
70
  position:absolute;
71
71
  top:50%;
72
72
  left:50%;
@@ -74,44 +74,44 @@
74
74
  will-change:transform;
75
75
  touch-action:none;
76
76
  }
77
- .magritte-preview-counter___uP2Hc_1-2-46{
77
+ .magritte-preview-counter___uP2Hc_1-2-48{
78
78
  min-width:0;
79
79
  text-align:center;
80
80
  }
81
81
  @media (min-width: 1020px){
82
- body.magritte-old-layout .magritte-preview-counter___uP2Hc_1-2-46{
82
+ body.magritte-old-layout .magritte-preview-counter___uP2Hc_1-2-48{
83
83
  text-align:left;
84
84
  }
85
85
  }
86
86
  @media (min-width: 1024px){
87
- body:not(.magritte-old-layout) .magritte-preview-counter___uP2Hc_1-2-46{
87
+ body:not(.magritte-old-layout) .magritte-preview-counter___uP2Hc_1-2-48{
88
88
  text-align:left;
89
89
  }
90
90
  }
91
- .magritte-preview-counter___uP2Hc_1-2-46.magritte-with-description___-w7ld_1-2-46{
91
+ .magritte-preview-counter___uP2Hc_1-2-48.magritte-with-description___-w7ld_1-2-48{
92
92
  cursor:pointer;
93
93
  }
94
- .magritte-counter-number___gUpMp_1-2-46{
94
+ .magritte-counter-number___gUpMp_1-2-48{
95
95
  display:block;
96
96
  transform:translateY(calc(18px * 0.5));
97
97
  transition:transform var(--magritte-semantic-animation-time-m-duration-v24-7-0) var(--magritte-semantic-animation-ease-base-timing-function-v24-7-0);
98
98
  }
99
- .magritte-with-description___-w7ld_1-2-46 .magritte-counter-number___gUpMp_1-2-46{
99
+ .magritte-with-description___-w7ld_1-2-48 .magritte-counter-number___gUpMp_1-2-48{
100
100
  transform:translateY(0);
101
101
  }
102
- .magritte-no-description-placeholder___qc6h2_1-2-46{
102
+ .magritte-no-description-placeholder___qc6h2_1-2-48{
103
103
  display:block;
104
104
  height:18px;
105
105
  padding:0;
106
106
  }
107
- .magritte-preview-zoom-control___026jA_1-2-46{
107
+ .magritte-preview-zoom-control___026jA_1-2-48{
108
108
  display:flex;
109
109
  flex-direction:row;
110
110
  gap:2px;
111
111
  align-items:center;
112
112
  justify-self:end;
113
113
  }
114
- .magritte-preview-container___nwjNY_1-2-46{
114
+ .magritte-preview-container___nwjNY_1-2-48{
115
115
  display:grid;
116
116
  grid-template-columns:1fr auto 1fr;
117
117
  gap:16px;
@@ -122,16 +122,16 @@
122
122
  z-index:10;
123
123
  }
124
124
  @media (min-width: 1020px){
125
- body.magritte-old-layout .magritte-preview-container___nwjNY_1-2-46{
125
+ body.magritte-old-layout .magritte-preview-container___nwjNY_1-2-48{
126
126
  padding:16px 24px;
127
127
  }
128
128
  }
129
129
  @media (min-width: 1024px){
130
- body:not(.magritte-old-layout) .magritte-preview-container___nwjNY_1-2-46{
130
+ body:not(.magritte-old-layout) .magritte-preview-container___nwjNY_1-2-48{
131
131
  padding:16px 24px;
132
132
  }
133
133
  }
134
- .magritte-preview___0Ge4C_1-2-46{
134
+ .magritte-preview___0Ge4C_1-2-48{
135
135
  display:flex;
136
136
  flex-direction:row;
137
137
  touch-action:none;
@@ -139,18 +139,18 @@
139
139
  min-width:0;
140
140
  }
141
141
  @media (min-width: 1020px){
142
- body.magritte-old-layout .magritte-preview___0Ge4C_1-2-46{
142
+ body.magritte-old-layout .magritte-preview___0Ge4C_1-2-48{
143
143
  max-width:calc(((40 + 8) * (var(--media-viewer-max-visible-items) - 1) + 80) * 1px);
144
144
  overflow:hidden;
145
145
  }
146
146
  }
147
147
  @media (min-width: 1024px){
148
- body:not(.magritte-old-layout) .magritte-preview___0Ge4C_1-2-46{
148
+ body:not(.magritte-old-layout) .magritte-preview___0Ge4C_1-2-48{
149
149
  max-width:calc(((40 + 8) * (var(--media-viewer-max-visible-items) - 1) + 80) * 1px);
150
150
  overflow:hidden;
151
151
  }
152
152
  }
153
- .magritte-preview-list___SAXLZ_1-2-46{
153
+ .magritte-preview-list___SAXLZ_1-2-48{
154
154
  margin-left:50%;
155
155
  contain:layout paint;
156
156
  display:flex;
@@ -160,18 +160,18 @@
160
160
  flex:0 0 auto;
161
161
  }
162
162
  @media (min-width: 1020px){
163
- body.magritte-old-layout .magritte-preview-list___SAXLZ_1-2-46{
163
+ body.magritte-old-layout .magritte-preview-list___SAXLZ_1-2-48{
164
164
  margin:0;
165
165
  gap:8px;
166
166
  }
167
167
  }
168
168
  @media (min-width: 1024px){
169
- body:not(.magritte-old-layout) .magritte-preview-list___SAXLZ_1-2-46{
169
+ body:not(.magritte-old-layout) .magritte-preview-list___SAXLZ_1-2-48{
170
170
  margin:0;
171
171
  gap:8px;
172
172
  }
173
173
  }
174
- .magritte-preview-item___gz5f2_1-2-46{
174
+ .magritte-preview-item___gz5f2_1-2-48{
175
175
  contain:layout paint size;
176
176
  position:relative;
177
177
  flex-shrink:0;
@@ -185,33 +185,33 @@
185
185
  background-color:var(--magritte-color-component-skeleton-background-content-v24-7-0);
186
186
  }
187
187
  @media (min-width: 1020px){
188
- body.magritte-old-layout .magritte-preview-item___gz5f2_1-2-46{
188
+ body.magritte-old-layout .magritte-preview-item___gz5f2_1-2-48{
189
189
  height:80px;
190
190
  border-radius:8px;
191
191
  }
192
192
  }
193
193
  @media (min-width: 1024px){
194
- body:not(.magritte-old-layout) .magritte-preview-item___gz5f2_1-2-46{
194
+ body:not(.magritte-old-layout) .magritte-preview-item___gz5f2_1-2-48{
195
195
  height:80px;
196
196
  border-radius:8px;
197
197
  }
198
198
  }
199
- .magritte-preview-item-container___JDVsk_1-2-46{
199
+ .magritte-preview-item-container___JDVsk_1-2-48{
200
200
  contain:layout paint size;
201
201
  overflow:hidden;
202
202
  scale:1;
203
203
  }
204
204
  @media (min-width: 1020px){
205
- body.magritte-old-layout .magritte-preview-item-container___JDVsk_1-2-46{
205
+ body.magritte-old-layout .magritte-preview-item-container___JDVsk_1-2-48{
206
206
  scale:1.66666667;
207
207
  }
208
208
  }
209
209
  @media (min-width: 1024px){
210
- body:not(.magritte-old-layout) .magritte-preview-item-container___JDVsk_1-2-46{
210
+ body:not(.magritte-old-layout) .magritte-preview-item-container___JDVsk_1-2-48{
211
211
  scale:1.66666667;
212
212
  }
213
213
  }
214
- .magritte-preview-item-container___JDVsk_1-2-46 *{
214
+ .magritte-preview-item-container___JDVsk_1-2-48 *{
215
215
  touch-action:none;
216
216
  position:absolute;
217
217
  top:0;
@@ -221,7 +221,7 @@
221
221
  height:100%;
222
222
  user-select:none;
223
223
  }
224
- .magritte-media-viewer-toolbar___2C8nr_1-2-46{
224
+ .magritte-media-viewer-toolbar___2C8nr_1-2-48{
225
225
  background:var(--magritte-color-background-overlay-toolbar-v24-7-0);
226
226
  padding:0 8px;
227
227
  display:grid;
@@ -232,30 +232,30 @@
232
232
  grid-row:4;
233
233
  z-index:10;
234
234
  }
235
- .magritte-media-viewer-toolbar___2C8nr_1-2-46.magritte-no-description___NebrT_1-2-46{
235
+ .magritte-media-viewer-toolbar___2C8nr_1-2-48.magritte-no-description___NebrT_1-2-48{
236
236
  display:flex;
237
237
  justify-content:space-between;
238
238
  }
239
239
  @media (min-width: 1020px){
240
- body.magritte-old-layout .magritte-media-viewer-toolbar___2C8nr_1-2-46{
240
+ body.magritte-old-layout .magritte-media-viewer-toolbar___2C8nr_1-2-48{
241
241
  display:none;
242
242
  }
243
243
  }
244
244
  @media (min-width: 1024px){
245
- body:not(.magritte-old-layout) .magritte-media-viewer-toolbar___2C8nr_1-2-46{
245
+ body:not(.magritte-old-layout) .magritte-media-viewer-toolbar___2C8nr_1-2-48{
246
246
  display:none;
247
247
  }
248
248
  }
249
- .magritte-media-viewer-toolbar-left___YzkJt_1-2-46,
250
- .magritte-media-viewer-toolbar-right___kBER9_1-2-46{
249
+ .magritte-media-viewer-toolbar-left___YzkJt_1-2-48,
250
+ .magritte-media-viewer-toolbar-right___kBER9_1-2-48{
251
251
  display:flex;
252
252
  gap:4px;
253
253
  }
254
- .magritte-media-viewer-toolbar-right___kBER9_1-2-46{
254
+ .magritte-media-viewer-toolbar-right___kBER9_1-2-48{
255
255
  justify-content:end;
256
256
  }
257
- .magritte-prev-button___WMYjR_1-2-46,
258
- .magritte-next-button___f8hJT_1-2-46{
257
+ .magritte-prev-button___WMYjR_1-2-48,
258
+ .magritte-next-button___f8hJT_1-2-48{
259
259
  cursor:pointer;
260
260
  position:absolute;
261
261
  top:0;
@@ -263,40 +263,40 @@
263
263
  width:48px;
264
264
  opacity:var(--media-viewer-background-opacity);
265
265
  }
266
- .magritte-prev-button___WMYjR_1-2-46:active,
267
- .magritte-next-button___f8hJT_1-2-46:active{
266
+ .magritte-prev-button___WMYjR_1-2-48:active,
267
+ .magritte-next-button___f8hJT_1-2-48:active{
268
268
  background:linear-gradient(90deg, var(--magritte-gradient-component-media-viewer-background-fade-v24-7-0));
269
269
  }
270
270
  @media (min-width: 1020px){
271
- body.magritte-old-layout .magritte-prev-button___WMYjR_1-2-46,
272
- body.magritte-old-layout .magritte-next-button___f8hJT_1-2-46{
271
+ body.magritte-old-layout .magritte-prev-button___WMYjR_1-2-48,
272
+ body.magritte-old-layout .magritte-next-button___f8hJT_1-2-48{
273
273
  width:88px;
274
274
  }
275
- body.magritte-old-layout .magritte-prev-button___WMYjR_1-2-46:active,
276
- body.magritte-old-layout .magritte-next-button___f8hJT_1-2-46:active{
275
+ body.magritte-old-layout .magritte-prev-button___WMYjR_1-2-48:active,
276
+ body.magritte-old-layout .magritte-next-button___f8hJT_1-2-48:active{
277
277
  background:none;
278
278
  }
279
279
  }
280
280
  @media (min-width: 1024px){
281
- body:not(.magritte-old-layout) .magritte-prev-button___WMYjR_1-2-46,
282
- body:not(.magritte-old-layout) .magritte-next-button___f8hJT_1-2-46{
281
+ body:not(.magritte-old-layout) .magritte-prev-button___WMYjR_1-2-48,
282
+ body:not(.magritte-old-layout) .magritte-next-button___f8hJT_1-2-48{
283
283
  width:88px;
284
284
  }
285
- body:not(.magritte-old-layout) .magritte-prev-button___WMYjR_1-2-46:active,
286
- body:not(.magritte-old-layout) .magritte-next-button___f8hJT_1-2-46:active{
285
+ body:not(.magritte-old-layout) .magritte-prev-button___WMYjR_1-2-48:active,
286
+ body:not(.magritte-old-layout) .magritte-next-button___f8hJT_1-2-48:active{
287
287
  background:none;
288
288
  }
289
289
  }
290
- .magritte-prev-button___WMYjR_1-2-46{
290
+ .magritte-prev-button___WMYjR_1-2-48{
291
291
  left:0;
292
292
  }
293
- .magritte-prev-button___WMYjR_1-2-46:active{
293
+ .magritte-prev-button___WMYjR_1-2-48:active{
294
294
  background:linear-gradient(270deg, var(--magritte-gradient-component-media-viewer-background-fade-v24-7-0));
295
295
  }
296
- .magritte-next-button___f8hJT_1-2-46{
296
+ .magritte-next-button___f8hJT_1-2-48{
297
297
  right:0;
298
298
  }
299
- .magritte-slide-button___sY8LB_1-2-46{
299
+ .magritte-slide-button___sY8LB_1-2-48{
300
300
  display:flex;
301
301
  background:none;
302
302
  padding:0;
@@ -306,7 +306,7 @@
306
306
  position:absolute;
307
307
  inset:0;
308
308
  }
309
- .magritte-preview-placeholder___yuhW1_1-2-46{
309
+ .magritte-preview-placeholder___yuhW1_1-2-48{
310
310
  --magritte-media-viewer-preview-width:24px;
311
311
  --magritte-media-viewer-preview-gap:2px;
312
312
  flex:0 0 auto;
@@ -315,24 +315,24 @@
315
315
  flex-grow:0;
316
316
  }
317
317
  @media (min-width: 1020px){
318
- body.magritte-old-layout .magritte-preview-placeholder___yuhW1_1-2-46{
318
+ body.magritte-old-layout .magritte-preview-placeholder___yuhW1_1-2-48{
319
319
  --magritte-media-viewer-preview-width:40px;
320
320
  --magritte-media-viewer-preview-gap:8px;
321
321
  }
322
322
  }
323
323
  @media (min-width: 1024px){
324
- body:not(.magritte-old-layout) .magritte-preview-placeholder___yuhW1_1-2-46{
324
+ body:not(.magritte-old-layout) .magritte-preview-placeholder___yuhW1_1-2-48{
325
325
  --magritte-media-viewer-preview-width:40px;
326
326
  --magritte-media-viewer-preview-gap:8px;
327
327
  }
328
328
  }
329
- .magritte-gallery-item-loader___70TDe_1-2-46{
329
+ .magritte-gallery-item-loader___70TDe_1-2-48{
330
330
  position:absolute;
331
331
  top:50%;
332
332
  left:50%;
333
333
  transform:translate(-50%, -50%);
334
334
  }
335
- .magritte-gallery-item-error-container___Z-HyZ_1-2-46{
335
+ .magritte-gallery-item-error-container___Z-HyZ_1-2-48{
336
336
  display:flex;
337
337
  flex-direction:column;
338
338
  align-items:center;
@@ -346,22 +346,22 @@
346
346
  width:100%;
347
347
  box-sizing:border-box;
348
348
  }
349
- .magritte-description-bottom-sheet-content___swnEV_1-2-46{
349
+ .magritte-description-bottom-sheet-content___swnEV_1-2-48{
350
350
  padding:8px 0;
351
351
  }
352
- .magritte-header___egZXt_1-2-46{
352
+ .magritte-header___egZXt_1-2-48{
353
353
  grid-row:1;
354
354
  z-index:2;
355
355
  opacity:var(--media-viewer-toolbars-opacity);
356
356
  transform:translateY(calc(var(--magritte-ui-media-viewer-hide-tools-progress) * -100%));
357
357
  }
358
- .magritte-footer___rOH-M_1-2-46{
358
+ .magritte-footer___rOH-M_1-2-48{
359
359
  grid-row:3;
360
360
  z-index:2;
361
361
  opacity:var(--media-viewer-toolbars-opacity);
362
362
  transform:translateY(calc(var(--magritte-ui-media-viewer-hide-tools-progress) * 100%));
363
363
  }
364
- .magritte-description___dYc-E_1-2-46{
364
+ .magritte-description___dYc-E_1-2-48{
365
365
  display:inline-block;
366
366
  max-width:100%;
367
367
  }
package/index.js CHANGED
@@ -7,6 +7,7 @@ import 'motion/react';
7
7
  import '@hh.ru/magritte-common-modal-helper';
8
8
  import '@hh.ru/magritte-common-use-translation';
9
9
  import '@hh.ru/magritte-design-tokens/types';
10
+ import '@hh.ru/magritte-internal-accessible-region';
10
11
  import '@hh.ru/magritte-ui-breakpoint';
11
12
  import '@hh.ru/magritte-ui-layer';
12
13
  import './internal/animations.js';
@@ -17,7 +18,7 @@ import './internal/utils.js';
17
18
  import './internal/hooks/useTapToToggleTools.js';
18
19
  import './internal/hooks/useVirtualization.js';
19
20
  import './public/Footer.js';
20
- import './media-viewer-Byh4_4uk.js';
21
+ import './media-viewer-B3wL5SHh.js';
21
22
  import './public/Gallery.js';
22
23
  import '@hh.ru/magritte-common-resize';
23
24
  import '@hh.ru/magritte-ui-icon/icon';
@@ -32,6 +33,7 @@ import './internal/hooks/usePinchToZoom.js';
32
33
  import './internal/hooks/useWheelToZoom.js';
33
34
  import '@hh.ru/magritte-ui-typography';
34
35
  import './public/Header.js';
36
+ import '@hh.ru/magritte-ui-nav-bar';
35
37
  import './public/Preview.js';
36
38
  import './internal/Counter.js';
37
39
  import 'classnames';
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-Byh4_4uk.js';
11
+ import { s as styles } from '../media-viewer-B3wL5SHh.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-Byh4_4uk.js';
17
+ import { s as styles } from '../media-viewer-B3wL5SHh.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-Byh4_4uk.js';
12
+ import '../media-viewer-B3wL5SHh.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-Byh4_4uk.js';
8
+ import { s as styles } from '../media-viewer-B3wL5SHh.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-Byh4_4uk.js';
12
+ import { s as styles } from '../media-viewer-B3wL5SHh.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-48","mediaViewer":"magritte-media-viewer___KnrXP_1-2-48","gallery-placeholder":"magritte-gallery-placeholder___rUoGL_1-2-48","galleryPlaceholder":"magritte-gallery-placeholder___rUoGL_1-2-48","media-viewer-gallery":"magritte-media-viewer-gallery___P0SnN_1-2-48","mediaViewerGallery":"magritte-media-viewer-gallery___P0SnN_1-2-48","gallery-item":"magritte-gallery-item___Js0Z5_1-2-48","galleryItem":"magritte-gallery-item___Js0Z5_1-2-48","gallery-item-transform-container":"magritte-gallery-item-transform-container___N8-sA_1-2-48","galleryItemTransformContainer":"magritte-gallery-item-transform-container___N8-sA_1-2-48","preview-counter":"magritte-preview-counter___uP2Hc_1-2-48","previewCounter":"magritte-preview-counter___uP2Hc_1-2-48","with-description":"magritte-with-description___-w7ld_1-2-48","withDescription":"magritte-with-description___-w7ld_1-2-48","counter-number":"magritte-counter-number___gUpMp_1-2-48","counterNumber":"magritte-counter-number___gUpMp_1-2-48","no-description-placeholder":"magritte-no-description-placeholder___qc6h2_1-2-48","noDescriptionPlaceholder":"magritte-no-description-placeholder___qc6h2_1-2-48","preview-zoom-control":"magritte-preview-zoom-control___026jA_1-2-48","previewZoomControl":"magritte-preview-zoom-control___026jA_1-2-48","preview-container":"magritte-preview-container___nwjNY_1-2-48","previewContainer":"magritte-preview-container___nwjNY_1-2-48","preview":"magritte-preview___0Ge4C_1-2-48","preview-list":"magritte-preview-list___SAXLZ_1-2-48","previewList":"magritte-preview-list___SAXLZ_1-2-48","preview-item":"magritte-preview-item___gz5f2_1-2-48","previewItem":"magritte-preview-item___gz5f2_1-2-48","preview-item-container":"magritte-preview-item-container___JDVsk_1-2-48","previewItemContainer":"magritte-preview-item-container___JDVsk_1-2-48","media-viewer-toolbar":"magritte-media-viewer-toolbar___2C8nr_1-2-48","mediaViewerToolbar":"magritte-media-viewer-toolbar___2C8nr_1-2-48","no-description":"magritte-no-description___NebrT_1-2-48","noDescription":"magritte-no-description___NebrT_1-2-48","media-viewer-toolbar-left":"magritte-media-viewer-toolbar-left___YzkJt_1-2-48","mediaViewerToolbarLeft":"magritte-media-viewer-toolbar-left___YzkJt_1-2-48","media-viewer-toolbar-right":"magritte-media-viewer-toolbar-right___kBER9_1-2-48","mediaViewerToolbarRight":"magritte-media-viewer-toolbar-right___kBER9_1-2-48","prev-button":"magritte-prev-button___WMYjR_1-2-48","prevButton":"magritte-prev-button___WMYjR_1-2-48","next-button":"magritte-next-button___f8hJT_1-2-48","nextButton":"magritte-next-button___f8hJT_1-2-48","slide-button":"magritte-slide-button___sY8LB_1-2-48","slideButton":"magritte-slide-button___sY8LB_1-2-48","preview-placeholder":"magritte-preview-placeholder___yuhW1_1-2-48","previewPlaceholder":"magritte-preview-placeholder___yuhW1_1-2-48","gallery-item-loader":"magritte-gallery-item-loader___70TDe_1-2-48","galleryItemLoader":"magritte-gallery-item-loader___70TDe_1-2-48","gallery-item-error-container":"magritte-gallery-item-error-container___Z-HyZ_1-2-48","galleryItemErrorContainer":"magritte-gallery-item-error-container___Z-HyZ_1-2-48","description-bottom-sheet-content":"magritte-description-bottom-sheet-content___swnEV_1-2-48","descriptionBottomSheetContent":"magritte-description-bottom-sheet-content___swnEV_1-2-48","header":"magritte-header___egZXt_1-2-48","footer":"magritte-footer___rOH-M_1-2-48","description":"magritte-description___dYc-E_1-2-48"};
3
+
4
+ export { styles as s };
5
+ //# sourceMappingURL=media-viewer-B3wL5SHh.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media-viewer-B3wL5SHh.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.46",
3
+ "version": "1.2.48",
4
4
  "main": "index.js",
5
5
  "types": "index.d.ts",
6
6
  "sideEffects": [
@@ -27,12 +27,14 @@
27
27
  "@hh.ru/magritte-common-use-multiple-refs": "1.1.11",
28
28
  "@hh.ru/magritte-common-use-translation": "3.1.0",
29
29
  "@hh.ru/magritte-design-tokens": "24.7.0",
30
- "@hh.ru/magritte-ui-bottom-sheet": "9.3.39",
30
+ "@hh.ru/magritte-internal-accessible-region": "1.0.1",
31
+ "@hh.ru/magritte-ui-bottom-sheet": "9.3.41",
31
32
  "@hh.ru/magritte-ui-breakpoint": "6.1.1",
32
33
  "@hh.ru/magritte-ui-icon": "14.2.9",
33
34
  "@hh.ru/magritte-ui-layer": "3.2.4",
34
35
  "@hh.ru/magritte-ui-loader": "3.0.11",
35
36
  "@hh.ru/magritte-ui-mock-component": "1.1.7",
37
+ "@hh.ru/magritte-ui-nav-bar": "1.3.29",
36
38
  "@hh.ru/magritte-ui-tooltip": "11.0.23",
37
39
  "@hh.ru/magritte-ui-typography": "5.3.3",
38
40
  "@use-gesture/react": "10.3.1"
@@ -42,5 +44,5 @@
42
44
  "motion": "^12.23.12",
43
45
  "react": ">=18.2.0"
44
46
  },
45
- "gitHead": "3c26365f57a95f757052bd79a78a7ba2c0b34e49"
47
+ "gitHead": "19a8301c2c8aab5d6eff3d1311e08dc34c2a81d9"
46
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-Byh4_4uk.js';
3
+ import { s as styles } from '../media-viewer-B3wL5SHh.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-Byh4_4uk.js';
13
+ import { s as styles } from '../media-viewer-B3wL5SHh.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-Byh4_4uk.js';
20
+ import '../media-viewer-B3wL5SHh.js';
21
21
  import '../internal/ImagesLoader.js';
22
22
 
23
23
  const GALLERY_ITEM_VIRTUALIZATION_PADDING = 5;
package/public/Header.js CHANGED
@@ -1,9 +1,19 @@
1
1
  import './../index.css';
2
2
  import { jsx } from 'react/jsx-runtime';
3
- import { s as styles } from '../media-viewer-Byh4_4uk.js';
3
+ import { NavBarDefaultPropsContext } from '@hh.ru/magritte-ui-nav-bar';
4
+ import { s as styles } from '../media-viewer-B3wL5SHh.js';
4
5
 
6
+ const NAV_BAR_ACTIONS_DEFAULT_PROPS = {
7
+ verticalAlign: 'top',
8
+ };
9
+ const NAV_BAR_ACTIONS_ICONS_DEFAULT_PROPS = {
10
+ borderRadius: 'halfHeight',
11
+ padding: 8,
12
+ backgroundStyle: undefined,
13
+ initialColor: 'constant',
14
+ };
5
15
  const Header = ({ children }) => {
6
- return (jsx("div", { "data-media-viewer-interactive": "true", className: styles.header, children: 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 }) }));
7
17
  };
8
18
 
9
19
  export { Header };
@@ -1 +1 @@
1
- {"version":3,"file":"Header.js","sources":["src/public/Header.tsx"],"sourcesContent":["import { FC, PropsWithChildren } from 'react';\n\nimport styles from './media-viewer.less';\n\nexport const Header: FC<PropsWithChildren> = ({ children }) => {\n return (\n <div data-media-viewer-interactive=\"true\" className={styles.header}>\n {children}\n </div>\n );\n};\n"],"names":["_jsx"],"mappings":";;;MAIa,MAAM,GAA0B,CAAC,EAAE,QAAQ,EAAE,KAAI;AAC1D,IAAA,QACIA,GAAA,CAAA,KAAA,EAAA,EAAA,+BAAA,EAAmC,MAAM,EAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAA,QAAA,EAC7D,QAAQ,EAAA,CACP,EACR;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_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,4 +1,5 @@
1
1
  import { type FC, type PropsWithChildren } from 'react';
2
+ import { type ExplicitRegionProps } from '@hh.ru/magritte-internal-accessible-region';
2
3
  import { GalleryItemProps } from '@hh.ru/magritte-ui-media-viewer/internal/GalleryItemBody';
3
4
  import { PreviewProps } from '@hh.ru/magritte-ui-media-viewer/public/Preview';
4
5
  import { ToolbarProps } from '@hh.ru/magritte-ui-media-viewer/public/Toolbar';
@@ -20,5 +21,5 @@ export declare const MediaViewer: FC<PropsWithChildren<{
20
21
  visible: boolean;
21
22
  /** Коллбек, вызываемый при закрытии медиавьюера */
22
23
  onClose?: VoidFunction;
23
- }>> & MediaViewerCompound;
24
+ }> & ExplicitRegionProps> & MediaViewerCompound;
24
25
  export {};
@@ -5,6 +5,7 @@ import { useMotionValue, animate, motion } from 'motion/react';
5
5
  import { disableScroll } from '@hh.ru/magritte-common-modal-helper';
6
6
  import { useTranslation } from '@hh.ru/magritte-common-use-translation';
7
7
  import { tokenSemanticAnimationTimeMDuration } from '@hh.ru/magritte-design-tokens/types';
8
+ import { AccessibleRegionProvider, useAccessibleRegionProps } from '@hh.ru/magritte-internal-accessible-region';
8
9
  import { useBreakpoint } from '@hh.ru/magritte-ui-breakpoint';
9
10
  import { Layer } from '@hh.ru/magritte-ui-layer';
10
11
  import { EASE_BASE } from '../internal/animations.js';
@@ -21,7 +22,7 @@ import { Header } from './Header.js';
21
22
  import { Preview } from './Preview.js';
22
23
  import { Toolbar } from './Toolbar.js';
23
24
  import { DesktopTool, MobileTool, RotateTool, CloseTool, FullWidthTool } from './Tools.js';
24
- import { s as styles } from '../media-viewer-Byh4_4uk.js';
25
+ import { s as styles } from '../media-viewer-B3wL5SHh.js';
25
26
  import '../internal/ImagesLoader.js';
26
27
  import '@use-gesture/react';
27
28
  import '@hh.ru/magritte-common-resize';
@@ -35,6 +36,7 @@ import '../internal/hooks/usePan.js';
35
36
  import '../internal/hooks/usePinchToZoom.js';
36
37
  import '../internal/hooks/useWheelToZoom.js';
37
38
  import '@hh.ru/magritte-ui-typography';
39
+ import '@hh.ru/magritte-ui-nav-bar';
38
40
  import '../internal/Counter.js';
39
41
  import 'classnames';
40
42
  import '@hh.ru/magritte-ui-bottom-sheet';
@@ -249,7 +251,19 @@ const useKeyboardNavigation = (args = {}) => {
249
251
  return bindNavigationRef;
250
252
  };
251
253
 
252
- const MediaViewer = ({ children, visible, onClose }) => {
254
+ /**
255
+ * Внутренний `role="dialog"`-узел. Вынесен в отдельный компонент, потому что обязан жить **под**
256
+ * `AccessibleRegionProvider`: только так `useAccessibleRegionProps` видит метки/описания,
257
+ * зарегистрированные потомками, и выставляет `aria-labelledby` / `aria-describedby`. Явные
258
+ * `aria-*` пропы при этом всё перекрывают. Метка из переводов — лишь дефолт: применяется
259
+ * локально, только когда ни один другой источник метку не дал.
260
+ */
261
+ const MediaViewerDialog = ({ explicitAria, fallbackLabel, dialogRef, children, ...rest }) => {
262
+ const aria = useAccessibleRegionProps(explicitAria);
263
+ const hasLabel = 'aria-label' in aria || 'aria-labelledby' in aria;
264
+ return (jsx(motion.div, { role: "dialog", "aria-modal": "true", "aria-label": hasLabel ? undefined : fallbackLabel, ...aria, ...rest, ref: dialogRef, children: children }));
265
+ };
266
+ const MediaViewer = ({ children, visible, onClose, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledby, 'aria-describedby': ariaDescribedby, 'aria-description': ariaDescription, }) => {
253
267
  const [isVisible, setIsVisible] = useState(visible);
254
268
  const currentSlideIndex = useMotionValue(0);
255
269
  const closeProgress = useMotionValue(isVisible ? 0 : 1);
@@ -320,6 +334,12 @@ const MediaViewer = ({ children, visible, onClose }) => {
320
334
  };
321
335
  }, [visible, keyHandler]);
322
336
  const componentDescriptionTrl = useTranslation('MediaViewer', 'componentDescription');
337
+ const explicitAria = {
338
+ 'aria-label': ariaLabel,
339
+ 'aria-labelledby': ariaLabelledby,
340
+ 'aria-describedby': ariaDescribedby,
341
+ 'aria-description': ariaDescription,
342
+ };
323
343
  useEffect(() => {
324
344
  if (visible && !isVisible) {
325
345
  scrollEnableRef.current = disableScroll();
@@ -349,13 +369,15 @@ const MediaViewer = ({ children, visible, onClose }) => {
349
369
  if (!isVisible) {
350
370
  return null;
351
371
  }
352
- return (jsx(GalleryItemsContext.Provider, { value: { items, setItems }, children: jsx(MediaViewerContext.Provider, { value: contextValue, children: jsx(Layer, { layer: "media-viewer", children: jsx(motion.div, { role: "dialog", "aria-modal": "true", "aria-label": componentDescriptionTrl, className: styles.mediaViewer, ...bindSwipeToClose(), ref: rootRef, style: {
353
- '--magritte-ui-media-viewer-close-progress': contextValue.closeProgress,
354
- '--magritte-ui-media-viewer-hide-tools-progress': contextValue.hideToolsProgress,
355
- ...(!isSwipeClosing
356
- ? { '--magritte-ui-media-viewer-image-close-progress': contextValue.closeProgress }
357
- : {}),
358
- }, onTouchStart: isMobile ? onTouchStart : undefined, onTouchEnd: isMobile ? onTouchEnd : undefined, onClick: isMobile ? onClick : onDesktopClick, onMouseMove: !isMobile ? onMouseMove : undefined, children: children }) }) }) }));
372
+ return (jsx(GalleryItemsContext.Provider, { value: { items, setItems }, children: jsx(MediaViewerContext.Provider, { value: contextValue, children: jsx(AccessibleRegionProvider, { children: jsx(Layer, { layer: "media-viewer", children: jsx(MediaViewerDialog, { explicitAria: explicitAria, fallbackLabel: componentDescriptionTrl, className: styles.mediaViewer, ...bindSwipeToClose(), dialogRef: rootRef, style: {
373
+ '--magritte-ui-media-viewer-close-progress': contextValue.closeProgress,
374
+ '--magritte-ui-media-viewer-hide-tools-progress': contextValue.hideToolsProgress,
375
+ ...(!isSwipeClosing
376
+ ? {
377
+ '--magritte-ui-media-viewer-image-close-progress': contextValue.closeProgress,
378
+ }
379
+ : {}),
380
+ }, onTouchStart: isMobile ? onTouchStart : undefined, onTouchEnd: isMobile ? onTouchEnd : undefined, onClick: isMobile ? onClick : onDesktopClick, onMouseMove: !isMobile ? onMouseMove : undefined, children: children }) }) }) }) }));
359
381
  };
360
382
  MediaViewer.Header = Header;
361
383
  MediaViewer.Footer = Footer;
@@ -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 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 { 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\nexport const MediaViewer: FC<\n PropsWithChildren<{\n /** Флаг видимости компонента */\n visible: boolean;\n /** Коллбек, вызываемый при закрытии медиавьюера */\n onClose?: VoidFunction;\n }>\n> &\n MediaViewerCompound = ({ children, visible, onClose }) => {\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 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 <Layer layer=\"media-viewer\">\n <motion.div\n role=\"dialog\"\n aria-modal=\"true\"\n aria-label={componentDescriptionTrl}\n className={styles.mediaViewer}\n {...(bindSwipeToClose() as HTMLMotionProps<'div'>)}\n ref={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 ? { '--magritte-ui-media-viewer-image-close-progress': contextValue.closeProgress }\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 </motion.div>\n </Layer>\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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoCA,MAAM,UAAU,GAAG;AACnB,IAAI,GAAG,EAAE,YAAY;AACrB,IAAI,IAAI,EAAE,YAAY;AACtB,CAAC,CAAC;AACF,MAAM,SAAS,GAAG;AAClB,IAAI,GAAG,EAAE,WAAW;AACpB,IAAI,IAAI,EAAE,WAAW;AACrB,CAAC,CAAC;AACF,MAAM,OAAO,GAAG;AAChB,IAAI,GAAG,EAAE,SAAS;AAClB,IAAI,IAAI,EAAE,SAAS;AACnB,CAAC,CAAC;AACF,MAAM,SAAS,GAAG;AAClB,IAAI,GAAG,EAAE,WAAW;AACpB,IAAI,IAAI,EAAE,WAAW;AACrB,CAAC,CAAC;AACF,MAAM,GAAG,GAAG;AACZ,IAAI,GAAG,EAAE,KAAK;AACd,IAAI,IAAI,EAAE,KAAK;AACf,CAAC;;ACvDD,MAAM,0BAA0B,GAAG,GAAG,CAAC;AACvC,MAAM,kBAAkB,GAAG,CAAC;AAC5B;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,CAAC;AACF,MAAM,wBAAwB,GAAG,CAAC,SAAS,KAAK;AAChD,IAAI,OAAO,CAAC,GAAG,SAAS,CAAC,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,CAAC;AAC/D,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,wBAAwB,GAAG,CAAC,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,IAAI,GAAG,MAAM,KAAK;AACzF,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,aAAa;AAC1C,SAAS,aAAa,KAAK,IAAI,KAAK,aAAa,KAAK,SAAS,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE;AACzG,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,MAAM,iBAAiB,GAAG,wBAAwB,CAAC,SAAS,CAAC,CAAC;AAClE,IAAI,MAAM,UAAU,GAAG,aAAa,EAAE,qBAAqB,EAAE,IAAI,IAAI,CAAC;AACtE,IAAI,MAAM,aAAa,GAAG,UAAU,KAAK,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,GAAG,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC;AAChH,IAAI,MAAM,aAAa,GAAG,UAAU,KAAK,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC;AAChH,IAAI,IAAI,cAAc,GAAG,IAAI,CAAC;AAC9B,IAAI,IAAI,WAAW,GAAG,QAAQ,CAAC;AAC/B,IAAI,IAAI,eAAe,GAAG,IAAI,CAAC;AAC/B,IAAI,IAAI,kBAAkB,GAAG,MAAM,CAAC,GAAG,CAAC;AACxC,IAAI,QAAQ,SAAS;AACrB,QAAQ,KAAK,IAAI;AACjB,YAAY,kBAAkB,GAAG,UAAU,EAAE,GAAG,IAAI,CAAC,CAAC;AACtD,YAAY,MAAM;AAClB,QAAQ,KAAK,MAAM;AACnB,YAAY,kBAAkB,GAAG,UAAU,EAAE,MAAM,IAAI,QAAQ,CAAC;AAChE,YAAY,MAAM;AAClB,QAAQ,KAAK,MAAM;AACnB,YAAY,kBAAkB,GAAG,UAAU,EAAE,KAAK,IAAI,CAAC,CAAC;AACxD,YAAY,MAAM;AAClB,QAAQ,KAAK,OAAO;AACpB,YAAY,kBAAkB,GAAG,UAAU,EAAE,IAAI,IAAI,QAAQ,CAAC;AAC9D,YAAY,MAAM;AAClB,KAAK;AACL,IAAI,iBAAiB,CAAC,OAAO,CAAC,CAAC,OAAO,KAAK;AAC3C,QAAQ,IAAI,aAAa,KAAK,OAAO,EAAE;AACvC,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,MAAM,WAAW,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC;AAC5D,QAAQ,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,GAAG,WAAW,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;AACpF,QAAQ,MAAM,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AACpF;AACA,QAAQ,IAAI,UAAU,KAAK,IAAI;AAC/B,YAAY,EAAE,SAAS,KAAK,IAAI,KAAK,cAAc,IAAI,aAAa,IAAI,WAAW,CAAC,MAAM,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;AAC7G,YAAY,EAAE,SAAS,KAAK,MAAM,KAAK,cAAc,IAAI,aAAa,IAAI,WAAW,CAAC,GAAG,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;AAC/G,YAAY,EAAE,SAAS,KAAK,MAAM,KAAK,cAAc,IAAI,aAAa,IAAI,WAAW,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;AAC/G,YAAY,EAAE,SAAS,KAAK,OAAO,KAAK,cAAc,IAAI,aAAa,IAAI,WAAW,CAAC,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE;AAClH,YAAY,IAAI,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,GAAG,cAAc,CAAC,CAAC;AACrE,YAAY,IAAI,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,GAAG,cAAc,CAAC,CAAC;AACrE;AACA;AACA,YAAY,IAAI,SAAS,KAAK,IAAI,IAAI,SAAS,KAAK,MAAM,EAAE;AAC5D,gBAAgB,SAAS,IAAI,GAAG,CAAC;AACjC,aAAa;AACb,iBAAiB;AACjB,gBAAgB,SAAS,IAAI,GAAG,CAAC;AACjC,aAAa;AACb,YAAY,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;AAC9D,YAAY,IAAI,QAAQ,GAAG,WAAW,EAAE;AACxC,gBAAgB,WAAW,GAAG,QAAQ,CAAC;AACvC,gBAAgB,cAAc,GAAG,OAAO,CAAC;AACzC,aAAa;AACb,SAAS;AACT;AACA,QAAQ,IAAI,IAAI,KAAK,MAAM,EAAE;AAC7B,YAAY,IAAI,SAAS,KAAK,IAAI,IAAI,WAAW,CAAC,GAAG,GAAG,kBAAkB,GAAG,0BAA0B,EAAE;AACzG,gBAAgB,eAAe,GAAG,OAAO,CAAC;AAC1C,gBAAgB,kBAAkB,GAAG,WAAW,CAAC,GAAG,CAAC;AACrD,aAAa;AACb,iBAAiB,IAAI,SAAS,KAAK,MAAM,IAAI,WAAW,CAAC,MAAM,GAAG,kBAAkB,GAAG,CAAC,0BAA0B,EAAE;AACpH,gBAAgB,eAAe,GAAG,OAAO,CAAC;AAC1C,gBAAgB,kBAAkB,GAAG,WAAW,CAAC,MAAM,CAAC;AACxD,aAAa;AACb,iBAAiB,IAAI,SAAS,KAAK,MAAM,IAAI,WAAW,CAAC,KAAK,GAAG,kBAAkB,GAAG,0BAA0B,EAAE;AAClH,gBAAgB,eAAe,GAAG,OAAO,CAAC;AAC1C,gBAAgB,kBAAkB,GAAG,WAAW,CAAC,KAAK,CAAC;AACvD,aAAa;AACb,iBAAiB,IAAI,SAAS,KAAK,OAAO,IAAI,WAAW,CAAC,IAAI,GAAG,kBAAkB,GAAG,CAAC,0BAA0B,EAAE;AACnH,gBAAgB,eAAe,GAAG,OAAO,CAAC;AAC1C,gBAAgB,kBAAkB,GAAG,WAAW,CAAC,IAAI,CAAC;AACtD,aAAa;AACb,SAAS;AACT,KAAK,CAAC,CAAC;AACP,IAAI,OAAO,cAAc,IAAI,eAAe,CAAC;AAC7C,CAAC;;AC/FD,MAAM,aAAa,GAAG,CAAC,KAAK,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,KAAK;AAChD,IAAI,OAAO,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,KAAK,CAAC,IAAI,KAAK,IAAI,CAAC;AACpD,CAAC;;ACGD,MAAM,mBAAmB,GAAG,sFAAsF,CAAC;AACnH,MAAM,aAAa,GAAG,CAAC,OAAO,KAAK;AACnC,IAAI,OAAO,OAAO,EAAE,OAAO,CAAC,mBAAmB,CAAC,IAAI,KAAK,CAAC;AAC1D,CAAC,CAAC;AACF,MAAM,sBAAsB,GAAG,CAAC,KAAK,EAAE,IAAI,GAAG,MAAM,KAAK;AACzD,IAAI,IAAI,IAAI,KAAK,MAAM,IAAI,aAAa,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE;AACtD,QAAQ,OAAO,KAAK,CAAC,QAAQ,GAAG,IAAI,GAAG,MAAM,CAAC;AAC9C,KAAK;AACL,IAAI,IAAI,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE;AACvC,QAAQ,OAAO,IAAI,CAAC;AACpB,KAAK;AACL,IAAI,IAAI,aAAa,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE;AAC1C,QAAQ,OAAO,OAAO,CAAC;AACvB,KAAK;AACL,IAAI,IAAI,aAAa,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE;AACzC,QAAQ,OAAO,MAAM,CAAC;AACtB,KAAK;AACL,IAAI,IAAI,aAAa,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE;AACzC,QAAQ,OAAO,MAAM,CAAC;AACtB,KAAK;AACL,IAAI,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC;AACF,MAAM,wBAAwB,GAAG,CAAC,KAAK,EAAE,SAAS,EAAE,qBAAqB,GAAG,IAAI,EAAE,IAAI,GAAG,MAAM,KAAK;AACpG,IAAI,MAAM,aAAa,GAAG,qBAAqB,IAAI,QAAQ,CAAC,aAAa,CAAC;AAC1E,IAAI,IAAI,IAAI,KAAK,MAAM,EAAE;AACzB,QAAQ,MAAM,iBAAiB,GAAG,wBAAwB,CAAC,SAAS,CAAC,CAAC;AACtE,QAAQ,IAAI,aAAa,CAAC,KAAK,EAAE,GAAG,CAAC,IAAI,iBAAiB,CAAC,MAAM,GAAG,CAAC,EAAE;AACvE,YAAY,IAAI,CAAC,aAAa,KAAK,SAAS,IAAI,aAAa,KAAK,iBAAiB,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC;AACjH,gBAAgB,CAAC,KAAK,CAAC,QAAQ,EAAE;AACjC,gBAAgB,KAAK,CAAC,cAAc,EAAE,CAAC;AACvC,gBAAgB,iBAAiB,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;AAC7C,aAAa;AACb,YAAY,IAAI,CAAC,aAAa,KAAK,SAAS,IAAI,aAAa,KAAK,iBAAiB,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,QAAQ,EAAE;AAC3G,gBAAgB,KAAK,CAAC,cAAc,EAAE,CAAC;AACvC,gBAAgB,iBAAiB,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,CAAC;AACxE,aAAa;AACb,SAAS;AACT,KAAK;AACL,IAAI,IAAI,IAAI,KAAK,MAAM,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,EAAE;AAC1D,QAAQ,MAAM,SAAS,GAAG,sBAAsB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;AAC9D,QAAQ,IAAI,SAAS,KAAK,IAAI,EAAE;AAChC,YAAY,MAAM,oBAAoB,GAAG,wBAAwB,CAAC,SAAS,EAAE,aAAa,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;AAC7G,YAAY,IAAI,oBAAoB,KAAK,IAAI,EAAE;AAC/C,gBAAgB,KAAK,CAAC,cAAc,EAAE,CAAC;AACvC,gBAAgB,oBAAoB,CAAC,KAAK,EAAE,CAAC;AAC7C,aAAa;AACb,SAAS;AACT,KAAK;AACL,CAAC,CAAC;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM,qBAAqB,GAAG,CAAC,IAAI,GAAG,EAAE,KAAK;AAC7C,IAAI,MAAM,EAAE,IAAI,GAAG,MAAM,EAAE,OAAO,GAAG,IAAI,EAAE,aAAa,EAAE,qBAAqB,EAAE,GAAG,IAAI,CAAC;AACzF,IAAI,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;AACvC,IAAI,UAAU,CAAC,OAAO,GAAG,OAAO,CAAC;AACjC,IAAI,MAAM,wBAAwB,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAC;AACnE,IAAI,wBAAwB,CAAC,OAAO,GAAG,qBAAqB,CAAC;AAC7D,IAAI,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AACjC,IAAI,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC;AAC3B,IAAI,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;AACpC,IAAI,MAAM,iBAAiB,GAAG,WAAW,CAAC,CAAC,SAAS,KAAK;AACzD,QAAQ,IAAI,CAAC,SAAS,EAAE;AACxB,YAAY,UAAU,CAAC,OAAO,IAAI,CAAC;AACnC,YAAY,UAAU,CAAC,OAAO,GAAG,IAAI,CAAC;AACtC,YAAY,OAAO;AACnB,SAAS;AACT,QAAQ,MAAM,aAAa,GAAG,CAAC,KAAK,KAAK;AACzC,YAAY,IAAI,UAAU,CAAC,OAAO,EAAE;AACpC,gBAAgB,wBAAwB,CAAC,KAAK,EAAE,SAAS,EAAE,wBAAwB,CAAC,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC;AAC9G,aAAa;AACb,SAAS,CAAC;AACV,QAAQ,SAAS,CAAC,gBAAgB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;AAC7D,QAAQ,UAAU,CAAC,OAAO,GAAG,MAAM;AACnC,YAAY,SAAS,CAAC,mBAAmB,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;AACpE,SAAS,CAAC;AACV,KAAK,EAAE,EAAE,CAAC,CAAC;AACX,IAAI,OAAO,iBAAiB,CAAC;AAC7B,CAAC;;AC3BM,MAAM,WAAW,GAQE,CAAC,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,KAAI;IACzD,MAAM,CAAC,SAAS,EAAE,YAAY,CAAC,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;AACpD,IAAA,MAAM,iBAAiB,GAAG,cAAc,CAAS,CAAC,CAAC,CAAC;AACpD,IAAA,MAAM,aAAa,GAAG,cAAc,CAAC,SAAS,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACxD,MAAM,YAAY,GAAG,iBAAiB,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC;AAC7D,IAAA,MAAM,gBAAgB,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;AACzC,IAAA,gBAAgB,CAAC,OAAO,GAAG,OAAO,CAAC;AACnC,IAAA,MAAM,eAAe,GAAG,MAAM,CAAsB,IAAI,CAAC,CAAC;IAE1D,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,MAAK;AACjC,QAAA,IAAI,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,EAAE;AAC1B,YAAA,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACrB,YAAY,CAAC,KAAK,CAAC,CAAC;AACpB,YAAA,eAAe,CAAC,OAAO,IAAI,CAAC;AAC5B,YAAA,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC;AAC/B,YAAA,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACzB,YAAA,gBAAgB,CAAC,OAAO,IAAI,CAAC;YAC7B,OAAO;SACV;AACD,QAAA,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;QAChD,MAAM,iBAAiB,GAAG,KAAK,IAAI,mCAAmC,GAAG,IAAI,CAAC,CAAC;AAC/E,QAAA,OAAO,CAAC,aAAa,EAAE,CAAC,EAAE;AACtB,YAAA,QAAQ,EAAE,iBAAiB;AAC3B,YAAA,IAAI,EAAE,SAAS;YACf,UAAU,EAAE,MAAK;gBACb,YAAY,CAAC,KAAK,CAAC,CAAC;AACpB,gBAAA,eAAe,CAAC,OAAO,IAAI,CAAC;AAC5B,gBAAA,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC;AAC/B,gBAAA,iBAAiB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AACzB,gBAAA,gBAAgB,CAAC,OAAO,IAAI,CAAC;aAChC;AACJ,SAAA,CAAC,CAAC;AACP,KAAC,CAAC,CAAC;AACH,IAAA,MAAM,OAAO,GAAG,qBAAqB,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;AAE5E,IAAA,MAAM,YAAY,GAAG,WAAW,CAAC,MAAK;AAClC,QAAA,MAAM,YAAY,GAAG,6BAA6B,CAAC,YAAY,EAAE,iBAAiB,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;AAC1G,QAAA,YAAY,CAAC,cAAc,GAAG,MAAK;YAC/B,YAAY,CAAC,KAAK,CAAC,CAAC;AACxB,SAAC,CAAC;AACF,QAAA,OAAO,YAAY,CAAC;AACxB,KAAC,CAAC,CAAC;AAEH,IAAA,MAAM,UAAU,GAAG,WAAW,CAC1B,CAAC,KAAoB,KAAI;AACrB,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,QAAQ,EAAE;AACxB,YAAA,KAAK,EAAE,CAAC;YACR,OAAO;SACV;QAED,MAAM,wBAAwB,GAAG,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC,GAAG,EAAE,CAAC,CAAC;QACrE,IAAI,UAAU,GAAG,wBAAwB,CAAC;QAC1C,MAAM,WAAW,GAAG,YAAY,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC;AACnD,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW,EAAE;AAC3B,YAAA,UAAU,GAAG,KAAK,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC;SAC1D;AACD,QAAA,IAAI,KAAK,CAAC,GAAG,KAAK,YAAY,EAAE;AAC5B,YAAA,UAAU,GAAG,KAAK,CAAC,UAAU,GAAG,CAAC,EAAE,CAAC,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC;SAC1D;AACD,QAAA,IAAI,UAAU,KAAK,wBAAwB,EAAE;YACzC,OAAO;SACV;AAED,QAAA,iBAAiB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;KACrC,EACD,CAAC,iBAAiB,EAAE,YAAY,EAAE,KAAK,CAAC,CAC3C,CAAC;IAEF,SAAS,CAAC,MAAK;QACX,IAAI,OAAO,EAAE;AACT,YAAA,QAAQ,CAAC,gBAAgB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;SACpD;aAAM;AACH,YAAA,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;SACvD;AACD,QAAA,OAAO,MAAK;AACR,YAAA,QAAQ,CAAC,mBAAmB,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;AACxD,SAAC,CAAC;AACN,KAAC,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;IAE1B,MAAM,uBAAuB,GAAG,cAAc,CAAC,aAAa,EAAE,sBAAsB,CAAC,CAAC;IAEtF,SAAS,CAAC,MAAK;AACX,QAAA,IAAI,OAAO,IAAI,CAAC,SAAS,EAAE;AACvB,YAAA,eAAe,CAAC,OAAO,GAAG,aAAa,EAAE,CAAC;YAC1C,YAAY,CAAC,IAAI,CAAC,CAAC;AACnB,YAAA,OAAO,CAAC,YAAY,CAAC,aAAa,EAAE,CAAC,EAAE;gBACnC,QAAQ,EAAE,mCAAmC,GAAG,IAAI;AACpD,gBAAA,IAAI,EAAE,SAAS;AAClB,aAAA,CAAC,CAAC;YACH,OAAO;SACV;AAED,QAAA,IAAI,CAAC,OAAO,IAAI,SAAS,EAAE;AACvB,YAAA,KAAK,EAAE,CAAC;SACX;;;;AAIL,KAAC,EAAE,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC,CAAC;AAE5B,IAAA,SAAS,CACL,MAAM,MAAK;AACP,QAAA,eAAe,CAAC,OAAO,IAAI,CAAC;AAC5B,QAAA,eAAe,CAAC,OAAO,GAAG,IAAI,CAAC;KAClC,EACD,EAAE,CACL,CAAC;AAEF,IAAA,MAAM,EAAE,QAAQ,EAAE,GAAG,aAAa,EAAE,CAAC;IAErC,MAAM,CAAC,gBAAgB,EAAE,cAAc,CAAC,GAAG,eAAe,CAAiB,YAAY,CAAC,CAAC;AACzF,IAAA,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,OAAO,EAAE,GAAG,mBAAmB,CAAC,YAAY,CAAC,CAAC;AAChF,IAAA,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,gBAAgB,CAAC,YAAY,CAAC,CAAC;IAEhF,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAmC,EAAE,CAAC,CAAC;IAEzE,IAAI,CAAC,SAAS,EAAE;AACZ,QAAA,OAAO,IAAI,CAAC;KACf;IAED,QACIA,GAAC,CAAA,mBAAmB,CAAC,QAAQ,EAAC,EAAA,KAAK,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,YACpDA,GAAC,CAAA,kBAAkB,CAAC,QAAQ,EAAC,EAAA,KAAK,EAAE,YAAY,EAC5C,QAAA,EAAAA,GAAA,CAAC,KAAK,EAAA,EAAC,KAAK,EAAC,cAAc,EACvB,QAAA,EAAAA,GAAA,CAAC,MAAM,CAAC,GAAG,EAAA,EACP,IAAI,EAAC,QAAQ,EAAA,YAAA,EACF,MAAM,EAAA,YAAA,EACL,uBAAuB,EACnC,SAAS,EAAE,MAAM,CAAC,WAAW,EAAA,GACxB,gBAAgB,EAA6B,EAClD,GAAG,EAAE,OAAO,EACZ,KAAK,EACD;wBACI,2CAA2C,EAAE,YAAY,CAAC,aAAa;wBACvE,gDAAgD,EAAE,YAAY,CAAC,iBAAiB;wBAChF,IAAI,CAAC,cAAc;AACf,8BAAE,EAAE,iDAAiD,EAAE,YAAY,CAAC,aAAa,EAAE;8BACjF,EAAE;qBACM,EAEtB,YAAY,EAAE,QAAQ,GAAG,YAAY,GAAG,SAAS,EACjD,UAAU,EAAE,QAAQ,GAAG,UAAU,GAAG,SAAS,EAC7C,OAAO,EAAE,QAAQ,GAAG,OAAO,GAAG,cAAc,EAC5C,WAAW,EAAE,CAAC,QAAQ,GAAG,WAAW,GAAG,SAAS,EAAA,QAAA,EAE/C,QAAQ,EAAA,CACA,EACT,CAAA,EAAA,CACkB,EACH,CAAA,EACjC;AACN,EAAE;AAEF,WAAW,CAAC,MAAM,GAAG,MAAM,CAAC;AAC5B,WAAW,CAAC,MAAM,GAAG,MAAM,CAAC;AAC5B,WAAW,CAAC,OAAO,GAAG,OAAO,CAAC;AAC9B,WAAW,CAAC,WAAW,GAAG,WAAW,CAAC;AACtC,WAAW,CAAC,OAAO,GAAG,OAAO,CAAC;AAC9B,WAAW,CAAC,OAAO,GAAG,OAAO,CAAC;AAC9B,WAAW,CAAC,WAAW,GAAG,WAAW,CAAC;AACtC,WAAW,CAAC,UAAU,GAAG,UAAU,CAAC;AACpC,WAAW,CAAC,UAAU,GAAG,UAAU,CAAC;AACpC,WAAW,CAAC,SAAS,GAAG,SAAS,CAAC;AAClC,WAAW,CAAC,aAAa,GAAG,aAAa,CAAC;AAE1C,WAAW,CAAC,WAAW,GAAG,aAAa;;;;"}
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-Byh4_4uk.js';
15
+ import { s as styles } from '../media-viewer-B3wL5SHh.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
@@ -3,7 +3,7 @@ import { jsxs, jsx } from 'react/jsx-runtime';
3
3
  import classNames from 'classnames';
4
4
  import { Counter } from '../internal/Counter.js';
5
5
  import { useGalleryItemsContext } from '../internal/context.js';
6
- import { s as styles } from '../media-viewer-Byh4_4uk.js';
6
+ import { s as styles } from '../media-viewer-B3wL5SHh.js';
7
7
  import 'react';
8
8
  import 'motion/react';
9
9
  import '@hh.ru/magritte-common-use-translation';
@@ -1,5 +0,0 @@
1
- import './index.css';
2
- var styles = {"media-viewer":"magritte-media-viewer___KnrXP_1-2-46","mediaViewer":"magritte-media-viewer___KnrXP_1-2-46","gallery-placeholder":"magritte-gallery-placeholder___rUoGL_1-2-46","galleryPlaceholder":"magritte-gallery-placeholder___rUoGL_1-2-46","media-viewer-gallery":"magritte-media-viewer-gallery___P0SnN_1-2-46","mediaViewerGallery":"magritte-media-viewer-gallery___P0SnN_1-2-46","gallery-item":"magritte-gallery-item___Js0Z5_1-2-46","galleryItem":"magritte-gallery-item___Js0Z5_1-2-46","gallery-item-transform-container":"magritte-gallery-item-transform-container___N8-sA_1-2-46","galleryItemTransformContainer":"magritte-gallery-item-transform-container___N8-sA_1-2-46","preview-counter":"magritte-preview-counter___uP2Hc_1-2-46","previewCounter":"magritte-preview-counter___uP2Hc_1-2-46","with-description":"magritte-with-description___-w7ld_1-2-46","withDescription":"magritte-with-description___-w7ld_1-2-46","counter-number":"magritte-counter-number___gUpMp_1-2-46","counterNumber":"magritte-counter-number___gUpMp_1-2-46","no-description-placeholder":"magritte-no-description-placeholder___qc6h2_1-2-46","noDescriptionPlaceholder":"magritte-no-description-placeholder___qc6h2_1-2-46","preview-zoom-control":"magritte-preview-zoom-control___026jA_1-2-46","previewZoomControl":"magritte-preview-zoom-control___026jA_1-2-46","preview-container":"magritte-preview-container___nwjNY_1-2-46","previewContainer":"magritte-preview-container___nwjNY_1-2-46","preview":"magritte-preview___0Ge4C_1-2-46","preview-list":"magritte-preview-list___SAXLZ_1-2-46","previewList":"magritte-preview-list___SAXLZ_1-2-46","preview-item":"magritte-preview-item___gz5f2_1-2-46","previewItem":"magritte-preview-item___gz5f2_1-2-46","preview-item-container":"magritte-preview-item-container___JDVsk_1-2-46","previewItemContainer":"magritte-preview-item-container___JDVsk_1-2-46","media-viewer-toolbar":"magritte-media-viewer-toolbar___2C8nr_1-2-46","mediaViewerToolbar":"magritte-media-viewer-toolbar___2C8nr_1-2-46","no-description":"magritte-no-description___NebrT_1-2-46","noDescription":"magritte-no-description___NebrT_1-2-46","media-viewer-toolbar-left":"magritte-media-viewer-toolbar-left___YzkJt_1-2-46","mediaViewerToolbarLeft":"magritte-media-viewer-toolbar-left___YzkJt_1-2-46","media-viewer-toolbar-right":"magritte-media-viewer-toolbar-right___kBER9_1-2-46","mediaViewerToolbarRight":"magritte-media-viewer-toolbar-right___kBER9_1-2-46","prev-button":"magritte-prev-button___WMYjR_1-2-46","prevButton":"magritte-prev-button___WMYjR_1-2-46","next-button":"magritte-next-button___f8hJT_1-2-46","nextButton":"magritte-next-button___f8hJT_1-2-46","slide-button":"magritte-slide-button___sY8LB_1-2-46","slideButton":"magritte-slide-button___sY8LB_1-2-46","preview-placeholder":"magritte-preview-placeholder___yuhW1_1-2-46","previewPlaceholder":"magritte-preview-placeholder___yuhW1_1-2-46","gallery-item-loader":"magritte-gallery-item-loader___70TDe_1-2-46","galleryItemLoader":"magritte-gallery-item-loader___70TDe_1-2-46","gallery-item-error-container":"magritte-gallery-item-error-container___Z-HyZ_1-2-46","galleryItemErrorContainer":"magritte-gallery-item-error-container___Z-HyZ_1-2-46","description-bottom-sheet-content":"magritte-description-bottom-sheet-content___swnEV_1-2-46","descriptionBottomSheetContent":"magritte-description-bottom-sheet-content___swnEV_1-2-46","header":"magritte-header___egZXt_1-2-46","footer":"magritte-footer___rOH-M_1-2-46","description":"magritte-description___dYc-E_1-2-46"};
3
-
4
- export { styles as s };
5
- //# sourceMappingURL=media-viewer-Byh4_4uk.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"media-viewer-Byh4_4uk.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}