@hh.ru/magritte-ui-media-viewer 1.3.40 → 1.3.42

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,21 +1,21 @@
1
1
  :root{
2
- --magritte-color-background-overlay-viewer-v25-1-0:#000000;
3
- --magritte-color-background-overlay-toolbar-v25-1-0:#000000a3;
4
- --magritte-color-text-constant-v25-1-0:#ffffff;
5
- --magritte-color-text-constant-secondary-v25-1-0:#ffffffb3;
6
- --magritte-color-component-skeleton-background-content-v25-1-0:#8293a23d;;
7
- --magritte-gradient-component-media-viewer-background-fade-v25-1-0:#00000000 0%, #00000052 100%;
2
+ --magritte-color-background-overlay-viewer-v26-0-0:#000000;
3
+ --magritte-color-background-overlay-toolbar-v26-0-0:#000000a3;
4
+ --magritte-color-text-constant-v26-0-0:#ffffff;
5
+ --magritte-color-text-constant-secondary-v26-0-0:#ffffffb3;
6
+ --magritte-color-component-skeleton-background-content-v26-0-0:#8293a23d;;
7
+ --magritte-gradient-component-media-viewer-background-fade-v26-0-0:#00000000 0%, #00000052 100%;
8
8
  }
9
9
 
10
10
  :root{
11
- --magritte-semantic-animation-time-m-duration-v25-1-0:400ms;
12
- --magritte-semantic-animation-ease-base-timing-function-v25-1-0:cubic-bezier(0.4, 0.24, 0, 1);
11
+ --magritte-semantic-animation-time-m-duration-v26-0-0:400ms;
12
+ --magritte-semantic-animation-ease-base-timing-function-v26-0-0:cubic-bezier(0.4, 0.24, 0, 1);
13
13
  }
14
14
 
15
15
  .magritte-night-theme{
16
- --magritte-color-component-skeleton-background-content-v25-1-0:#5e5e5e3d;
16
+ --magritte-color-component-skeleton-background-content-v26-0-0:#5e5e5e3d;
17
17
  }
18
- .magritte-media-viewer___KnrXP_1-3-40{
18
+ .magritte-media-viewer___KnrXP_1-3-42{
19
19
  position:fixed;
20
20
  inset:0;
21
21
  display:grid;
@@ -25,23 +25,23 @@
25
25
  user-select:none;
26
26
  --media-viewer-toolbars-opacity:calc(1 - var(--magritte-ui-media-viewer-close-progress) - var(--magritte-ui-media-viewer-hide-tools-progress));
27
27
  --media-viewer-background-opacity:calc(1 - var(--magritte-ui-media-viewer-close-progress));
28
- --magritte-ui-nav-bar-background-color-override:var(--magritte-color-background-overlay-toolbar-v25-1-0);
28
+ --magritte-ui-nav-bar-background-color-override:var(--magritte-color-background-overlay-toolbar-v26-0-0);
29
29
  }
30
- .magritte-media-viewer___KnrXP_1-3-40::before{
30
+ .magritte-media-viewer___KnrXP_1-3-42::before{
31
31
  content:'';
32
32
  position:absolute;
33
33
  inset:0;
34
- background:var(--magritte-color-background-overlay-viewer-v25-1-0);
34
+ background:var(--magritte-color-background-overlay-viewer-v26-0-0);
35
35
  opacity:var(--media-viewer-background-opacity);
36
36
  pointer-events:none;
37
37
  }
38
- .magritte-gallery-placeholder___rUoGL_1-3-40{
38
+ .magritte-gallery-placeholder___rUoGL_1-3-42{
39
39
  display:flex;
40
40
  align-items:stretch;
41
41
  grid-row:2;
42
42
  min-height:0;
43
43
  }
44
- .magritte-media-viewer-gallery___P0SnN_1-3-40{
44
+ .magritte-media-viewer-gallery___P0SnN_1-3-42{
45
45
  display:grid;
46
46
  flex-grow:1;
47
47
  contain:layout size;
@@ -50,16 +50,16 @@
50
50
  inset:0;
51
51
  }
52
52
  @media (min-width: 1020px){
53
- body.magritte-old-layout .magritte-media-viewer-gallery___P0SnN_1-3-40{
53
+ body.magritte-old-layout .magritte-media-viewer-gallery___P0SnN_1-3-42{
54
54
  position:relative;
55
55
  }
56
56
  }
57
57
  @media (min-width: 1024px){
58
- body:not(.magritte-old-layout) .magritte-media-viewer-gallery___P0SnN_1-3-40{
58
+ body:not(.magritte-old-layout) .magritte-media-viewer-gallery___P0SnN_1-3-42{
59
59
  position:relative;
60
60
  }
61
61
  }
62
- .magritte-gallery-item___Js0Z5_1-3-40{
62
+ .magritte-gallery-item___Js0Z5_1-3-42{
63
63
  position:relative;
64
64
  grid-area:1 / 1;
65
65
  contain:size;
@@ -68,7 +68,7 @@
68
68
  overflow-y:visible;
69
69
  opacity:calc(1 - var(--magritte-ui-media-viewer-image-close-progress, 0));
70
70
  }
71
- .magritte-gallery-item-transform-container___N8-sA_1-3-40{
71
+ .magritte-gallery-item-transform-container___N8-sA_1-3-42{
72
72
  position:absolute;
73
73
  top:50%;
74
74
  left:50%;
@@ -76,37 +76,37 @@
76
76
  will-change:transform;
77
77
  touch-action:none;
78
78
  }
79
- .magritte-preview-counter___uP2Hc_1-3-40{
79
+ .magritte-preview-counter___uP2Hc_1-3-42{
80
80
  min-width:0;
81
81
  text-align:center;
82
82
  }
83
83
  @media (min-width: 1020px){
84
- body.magritte-old-layout .magritte-preview-counter___uP2Hc_1-3-40{
84
+ body.magritte-old-layout .magritte-preview-counter___uP2Hc_1-3-42{
85
85
  text-align:left;
86
86
  }
87
87
  }
88
88
  @media (min-width: 1024px){
89
- body:not(.magritte-old-layout) .magritte-preview-counter___uP2Hc_1-3-40{
89
+ body:not(.magritte-old-layout) .magritte-preview-counter___uP2Hc_1-3-42{
90
90
  text-align:left;
91
91
  }
92
92
  }
93
- .magritte-preview-counter___uP2Hc_1-3-40.magritte-with-description___-w7ld_1-3-40{
93
+ .magritte-preview-counter___uP2Hc_1-3-42.magritte-with-description___-w7ld_1-3-42{
94
94
  cursor:pointer;
95
95
  }
96
- .magritte-counter-number___gUpMp_1-3-40{
96
+ .magritte-counter-number___gUpMp_1-3-42{
97
97
  display:block;
98
98
  transform:translateY(calc(18px * 0.5));
99
- transition:transform var(--magritte-semantic-animation-time-m-duration-v25-1-0) var(--magritte-semantic-animation-ease-base-timing-function-v25-1-0);
99
+ transition:transform var(--magritte-semantic-animation-time-m-duration-v26-0-0) var(--magritte-semantic-animation-ease-base-timing-function-v26-0-0);
100
100
  }
101
- .magritte-with-description___-w7ld_1-3-40 .magritte-counter-number___gUpMp_1-3-40{
101
+ .magritte-with-description___-w7ld_1-3-42 .magritte-counter-number___gUpMp_1-3-42{
102
102
  transform:translateY(0);
103
103
  }
104
- .magritte-no-description-placeholder___qc6h2_1-3-40{
104
+ .magritte-no-description-placeholder___qc6h2_1-3-42{
105
105
  display:block;
106
106
  height:18px;
107
107
  padding:0;
108
108
  }
109
- .magritte-preview-zoom-control___026jA_1-3-40{
109
+ .magritte-preview-zoom-control___026jA_1-3-42{
110
110
  display:flex;
111
111
  flex-direction:row;
112
112
  gap:2px;
@@ -114,27 +114,27 @@
114
114
  justify-self:end;
115
115
  grid-column:3;
116
116
  }
117
- .magritte-preview-container___nwjNY_1-3-40{
117
+ .magritte-preview-container___nwjNY_1-3-42{
118
118
  display:grid;
119
119
  grid-template-columns:1fr auto 1fr;
120
120
  gap:16px;
121
121
  padding:4px 16px;
122
- background:var(--magritte-color-background-overlay-toolbar-v25-1-0);
122
+ background:var(--magritte-color-background-overlay-toolbar-v26-0-0);
123
123
  align-items:center;
124
124
  grid-row:3;
125
125
  z-index:10;
126
126
  }
127
127
  @media (min-width: 1020px){
128
- body.magritte-old-layout .magritte-preview-container___nwjNY_1-3-40{
128
+ body.magritte-old-layout .magritte-preview-container___nwjNY_1-3-42{
129
129
  padding:16px 24px;
130
130
  }
131
131
  }
132
132
  @media (min-width: 1024px){
133
- body:not(.magritte-old-layout) .magritte-preview-container___nwjNY_1-3-40{
133
+ body:not(.magritte-old-layout) .magritte-preview-container___nwjNY_1-3-42{
134
134
  padding:16px 24px;
135
135
  }
136
136
  }
137
- .magritte-preview___0Ge4C_1-3-40{
137
+ .magritte-preview___0Ge4C_1-3-42{
138
138
  display:flex;
139
139
  flex-direction:row;
140
140
  touch-action:none;
@@ -142,18 +142,18 @@
142
142
  min-width:0;
143
143
  }
144
144
  @media (min-width: 1020px){
145
- body.magritte-old-layout .magritte-preview___0Ge4C_1-3-40{
145
+ body.magritte-old-layout .magritte-preview___0Ge4C_1-3-42{
146
146
  max-width:calc(((40 + 8) * (var(--media-viewer-max-visible-items) - 1) + 80) * 1px);
147
147
  overflow:hidden;
148
148
  }
149
149
  }
150
150
  @media (min-width: 1024px){
151
- body:not(.magritte-old-layout) .magritte-preview___0Ge4C_1-3-40{
151
+ body:not(.magritte-old-layout) .magritte-preview___0Ge4C_1-3-42{
152
152
  max-width:calc(((40 + 8) * (var(--media-viewer-max-visible-items) - 1) + 80) * 1px);
153
153
  overflow:hidden;
154
154
  }
155
155
  }
156
- .magritte-preview-list___SAXLZ_1-3-40{
156
+ .magritte-preview-list___SAXLZ_1-3-42{
157
157
  margin-left:50%;
158
158
  contain:layout paint;
159
159
  display:flex;
@@ -163,18 +163,18 @@
163
163
  flex:0 0 auto;
164
164
  }
165
165
  @media (min-width: 1020px){
166
- body.magritte-old-layout .magritte-preview-list___SAXLZ_1-3-40{
166
+ body.magritte-old-layout .magritte-preview-list___SAXLZ_1-3-42{
167
167
  margin:0;
168
168
  gap:8px;
169
169
  }
170
170
  }
171
171
  @media (min-width: 1024px){
172
- body:not(.magritte-old-layout) .magritte-preview-list___SAXLZ_1-3-40{
172
+ body:not(.magritte-old-layout) .magritte-preview-list___SAXLZ_1-3-42{
173
173
  margin:0;
174
174
  gap:8px;
175
175
  }
176
176
  }
177
- .magritte-preview-item___gz5f2_1-3-40{
177
+ .magritte-preview-item___gz5f2_1-3-42{
178
178
  contain:layout paint size;
179
179
  position:relative;
180
180
  flex-shrink:0;
@@ -185,36 +185,36 @@
185
185
  display:flex;
186
186
  align-items:center;
187
187
  justify-content:center;
188
- background-color:var(--magritte-color-component-skeleton-background-content-v25-1-0);
188
+ background-color:var(--magritte-color-component-skeleton-background-content-v26-0-0);
189
189
  }
190
190
  @media (min-width: 1020px){
191
- body.magritte-old-layout .magritte-preview-item___gz5f2_1-3-40{
191
+ body.magritte-old-layout .magritte-preview-item___gz5f2_1-3-42{
192
192
  height:80px;
193
193
  border-radius:8px;
194
194
  }
195
195
  }
196
196
  @media (min-width: 1024px){
197
- body:not(.magritte-old-layout) .magritte-preview-item___gz5f2_1-3-40{
197
+ body:not(.magritte-old-layout) .magritte-preview-item___gz5f2_1-3-42{
198
198
  height:80px;
199
199
  border-radius:8px;
200
200
  }
201
201
  }
202
- .magritte-preview-item-container___JDVsk_1-3-40{
202
+ .magritte-preview-item-container___JDVsk_1-3-42{
203
203
  contain:layout paint size;
204
204
  overflow:hidden;
205
205
  scale:1;
206
206
  }
207
207
  @media (min-width: 1020px){
208
- body.magritte-old-layout .magritte-preview-item-container___JDVsk_1-3-40{
208
+ body.magritte-old-layout .magritte-preview-item-container___JDVsk_1-3-42{
209
209
  scale:1.66666667;
210
210
  }
211
211
  }
212
212
  @media (min-width: 1024px){
213
- body:not(.magritte-old-layout) .magritte-preview-item-container___JDVsk_1-3-40{
213
+ body:not(.magritte-old-layout) .magritte-preview-item-container___JDVsk_1-3-42{
214
214
  scale:1.66666667;
215
215
  }
216
216
  }
217
- .magritte-preview-item-container___JDVsk_1-3-40 *{
217
+ .magritte-preview-item-container___JDVsk_1-3-42 *{
218
218
  touch-action:none;
219
219
  position:absolute;
220
220
  top:0;
@@ -224,8 +224,8 @@
224
224
  height:100%;
225
225
  user-select:none;
226
226
  }
227
- .magritte-media-viewer-toolbar___2C8nr_1-3-40{
228
- background:var(--magritte-color-background-overlay-toolbar-v25-1-0);
227
+ .magritte-media-viewer-toolbar___2C8nr_1-3-42{
228
+ background:var(--magritte-color-background-overlay-toolbar-v26-0-0);
229
229
  padding:0 8px;
230
230
  display:grid;
231
231
  grid-template-columns:1fr auto 1fr;
@@ -235,30 +235,30 @@
235
235
  grid-row:4;
236
236
  z-index:10;
237
237
  }
238
- .magritte-media-viewer-toolbar___2C8nr_1-3-40.magritte-no-description___NebrT_1-3-40{
238
+ .magritte-media-viewer-toolbar___2C8nr_1-3-42.magritte-no-description___NebrT_1-3-42{
239
239
  display:flex;
240
240
  justify-content:space-between;
241
241
  }
242
242
  @media (min-width: 1020px){
243
- body.magritte-old-layout .magritte-media-viewer-toolbar___2C8nr_1-3-40{
243
+ body.magritte-old-layout .magritte-media-viewer-toolbar___2C8nr_1-3-42{
244
244
  display:none;
245
245
  }
246
246
  }
247
247
  @media (min-width: 1024px){
248
- body:not(.magritte-old-layout) .magritte-media-viewer-toolbar___2C8nr_1-3-40{
248
+ body:not(.magritte-old-layout) .magritte-media-viewer-toolbar___2C8nr_1-3-42{
249
249
  display:none;
250
250
  }
251
251
  }
252
- .magritte-media-viewer-toolbar-left___YzkJt_1-3-40,
253
- .magritte-media-viewer-toolbar-right___kBER9_1-3-40{
252
+ .magritte-media-viewer-toolbar-left___YzkJt_1-3-42,
253
+ .magritte-media-viewer-toolbar-right___kBER9_1-3-42{
254
254
  display:flex;
255
255
  gap:4px;
256
256
  }
257
- .magritte-media-viewer-toolbar-right___kBER9_1-3-40{
257
+ .magritte-media-viewer-toolbar-right___kBER9_1-3-42{
258
258
  justify-content:end;
259
259
  }
260
- .magritte-prev-button___WMYjR_1-3-40,
261
- .magritte-next-button___f8hJT_1-3-40{
260
+ .magritte-prev-button___WMYjR_1-3-42,
261
+ .magritte-next-button___f8hJT_1-3-42{
262
262
  cursor:pointer;
263
263
  position:absolute;
264
264
  top:0;
@@ -266,40 +266,40 @@
266
266
  width:48px;
267
267
  opacity:var(--media-viewer-background-opacity);
268
268
  }
269
- .magritte-prev-button___WMYjR_1-3-40:active,
270
- .magritte-next-button___f8hJT_1-3-40:active{
271
- background:linear-gradient(90deg, var(--magritte-gradient-component-media-viewer-background-fade-v25-1-0));
269
+ .magritte-prev-button___WMYjR_1-3-42:active,
270
+ .magritte-next-button___f8hJT_1-3-42:active{
271
+ background:linear-gradient(90deg, var(--magritte-gradient-component-media-viewer-background-fade-v26-0-0));
272
272
  }
273
273
  @media (min-width: 1020px){
274
- body.magritte-old-layout .magritte-prev-button___WMYjR_1-3-40,
275
- body.magritte-old-layout .magritte-next-button___f8hJT_1-3-40{
274
+ body.magritte-old-layout .magritte-prev-button___WMYjR_1-3-42,
275
+ body.magritte-old-layout .magritte-next-button___f8hJT_1-3-42{
276
276
  width:88px;
277
277
  }
278
- body.magritte-old-layout .magritte-prev-button___WMYjR_1-3-40:active,
279
- body.magritte-old-layout .magritte-next-button___f8hJT_1-3-40:active{
278
+ body.magritte-old-layout .magritte-prev-button___WMYjR_1-3-42:active,
279
+ body.magritte-old-layout .magritte-next-button___f8hJT_1-3-42:active{
280
280
  background:none;
281
281
  }
282
282
  }
283
283
  @media (min-width: 1024px){
284
- body:not(.magritte-old-layout) .magritte-prev-button___WMYjR_1-3-40,
285
- body:not(.magritte-old-layout) .magritte-next-button___f8hJT_1-3-40{
284
+ body:not(.magritte-old-layout) .magritte-prev-button___WMYjR_1-3-42,
285
+ body:not(.magritte-old-layout) .magritte-next-button___f8hJT_1-3-42{
286
286
  width:88px;
287
287
  }
288
- body:not(.magritte-old-layout) .magritte-prev-button___WMYjR_1-3-40:active,
289
- body:not(.magritte-old-layout) .magritte-next-button___f8hJT_1-3-40:active{
288
+ body:not(.magritte-old-layout) .magritte-prev-button___WMYjR_1-3-42:active,
289
+ body:not(.magritte-old-layout) .magritte-next-button___f8hJT_1-3-42:active{
290
290
  background:none;
291
291
  }
292
292
  }
293
- .magritte-prev-button___WMYjR_1-3-40{
293
+ .magritte-prev-button___WMYjR_1-3-42{
294
294
  left:0;
295
295
  }
296
- .magritte-prev-button___WMYjR_1-3-40:active{
297
- background:linear-gradient(270deg, var(--magritte-gradient-component-media-viewer-background-fade-v25-1-0));
296
+ .magritte-prev-button___WMYjR_1-3-42:active{
297
+ background:linear-gradient(270deg, var(--magritte-gradient-component-media-viewer-background-fade-v26-0-0));
298
298
  }
299
- .magritte-next-button___f8hJT_1-3-40{
299
+ .magritte-next-button___f8hJT_1-3-42{
300
300
  right:0;
301
301
  }
302
- .magritte-slide-button___sY8LB_1-3-40{
302
+ .magritte-slide-button___sY8LB_1-3-42{
303
303
  display:flex;
304
304
  background:none;
305
305
  padding:0;
@@ -309,7 +309,7 @@
309
309
  position:absolute;
310
310
  inset:0;
311
311
  }
312
- .magritte-preview-placeholder___yuhW1_1-3-40{
312
+ .magritte-preview-placeholder___yuhW1_1-3-42{
313
313
  --magritte-media-viewer-preview-width:24px;
314
314
  --magritte-media-viewer-preview-gap:2px;
315
315
  flex:0 0 auto;
@@ -318,24 +318,24 @@
318
318
  flex-grow:0;
319
319
  }
320
320
  @media (min-width: 1020px){
321
- body.magritte-old-layout .magritte-preview-placeholder___yuhW1_1-3-40{
321
+ body.magritte-old-layout .magritte-preview-placeholder___yuhW1_1-3-42{
322
322
  --magritte-media-viewer-preview-width:40px;
323
323
  --magritte-media-viewer-preview-gap:8px;
324
324
  }
325
325
  }
326
326
  @media (min-width: 1024px){
327
- body:not(.magritte-old-layout) .magritte-preview-placeholder___yuhW1_1-3-40{
327
+ body:not(.magritte-old-layout) .magritte-preview-placeholder___yuhW1_1-3-42{
328
328
  --magritte-media-viewer-preview-width:40px;
329
329
  --magritte-media-viewer-preview-gap:8px;
330
330
  }
331
331
  }
332
- .magritte-gallery-item-loader___70TDe_1-3-40{
332
+ .magritte-gallery-item-loader___70TDe_1-3-42{
333
333
  position:absolute;
334
334
  top:50%;
335
335
  left:50%;
336
336
  transform:translate(-50%, -50%);
337
337
  }
338
- .magritte-gallery-item-error-container___Z-HyZ_1-3-40{
338
+ .magritte-gallery-item-error-container___Z-HyZ_1-3-42{
339
339
  display:flex;
340
340
  flex-direction:column;
341
341
  align-items:center;
@@ -349,24 +349,24 @@
349
349
  width:100%;
350
350
  box-sizing:border-box;
351
351
  }
352
- .magritte-description-bottom-sheet-content___swnEV_1-3-40{
352
+ .magritte-description-bottom-sheet-content___swnEV_1-3-42{
353
353
  padding:8px 0;
354
354
  }
355
- .magritte-header___egZXt_1-3-40{
355
+ .magritte-header___egZXt_1-3-42{
356
356
  grid-row:1;
357
357
  z-index:2;
358
358
  opacity:var(--media-viewer-toolbars-opacity);
359
359
  transform:translateY(calc(var(--magritte-ui-media-viewer-hide-tools-progress) * -100%));
360
- --magritte-ui-nav-bar-title-color-override:var(--magritte-color-text-constant-v25-1-0);
361
- --magritte-ui-nav-bar-subtitle-color-override:var(--magritte-color-text-constant-secondary-v25-1-0);
360
+ --magritte-ui-nav-bar-title-color-override:var(--magritte-color-text-constant-v26-0-0);
361
+ --magritte-ui-nav-bar-subtitle-color-override:var(--magritte-color-text-constant-secondary-v26-0-0);
362
362
  }
363
- .magritte-footer___rOH-M_1-3-40{
363
+ .magritte-footer___rOH-M_1-3-42{
364
364
  grid-row:3;
365
365
  z-index:2;
366
366
  opacity:var(--media-viewer-toolbars-opacity);
367
367
  transform:translateY(calc(var(--magritte-ui-media-viewer-hide-tools-progress) * 100%));
368
368
  }
369
- .magritte-description___dYc-E_1-3-40{
369
+ .magritte-description___dYc-E_1-3-42{
370
370
  display:inline-block;
371
371
  max-width:100%;
372
372
  }
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-rY7nUHaA.js';
21
+ import './media-viewer-Bad5vA1g.js';
22
22
  import './public/Gallery.js';
23
23
  import '@hh.ru/magritte-common-resize';
24
24
  import '@hh.ru/magritte-ui-icon/icon';
@@ -8,7 +8,7 @@ import { BottomSheet } from '@hh.ru/magritte-ui-bottom-sheet';
8
8
  import { useMediaViewerContext } from './context.js';
9
9
  import { TooltipHover } from '@hh.ru/magritte-ui-tooltip';
10
10
  import { Text } from '@hh.ru/magritte-ui-typography';
11
- import { s as styles } from '../media-viewer-rY7nUHaA.js';
11
+ import { s as styles } from '../media-viewer-Bad5vA1g.js';
12
12
  import './ImagesLoader.js';
13
13
  import './utils.js';
14
14
  import '@hh.ru/magritte-design-tokens/core-tokens';
@@ -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-rY7nUHaA.js';
17
+ import { s as styles } from '../media-viewer-Bad5vA1g.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/core-tokens';
11
11
  import './animations.js';
12
- import '../media-viewer-rY7nUHaA.js';
12
+ import '../media-viewer-Bad5vA1g.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-rY7nUHaA.js';
8
+ import { s as styles } from '../media-viewer-Bad5vA1g.js';
9
9
  import './ImagesLoader.js';
10
10
  import '@hh.ru/magritte-design-tokens/core-tokens';
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-rY7nUHaA.js';
12
+ import { s as styles } from '../media-viewer-Bad5vA1g.js';
13
13
  import './ImagesLoader.js';
14
14
 
15
15
  const getControllerLimits = (controller) => {
@@ -1 +1 @@
1
- export declare const EASE_BASE: readonly [number, number, number, number];
1
+ export declare const EASE_BASE: readonly [0.4, 0.24, 0, 1];
@@ -1,12 +1,7 @@
1
1
  import './../index.css';
2
2
  import CoreTokens from '@hh.ru/magritte-design-tokens/core-tokens';
3
3
 
4
- const EASE_BASE = [
5
- CoreTokens['magritte-semantic-animation-ease-base'].x1,
6
- CoreTokens['magritte-semantic-animation-ease-base'].y1,
7
- CoreTokens['magritte-semantic-animation-ease-base'].x2,
8
- CoreTokens['magritte-semantic-animation-ease-base'].y2,
9
- ];
4
+ const EASE_BASE = CoreTokens['magritte-semantic-animation-ease-base'];
10
5
 
11
6
  export { EASE_BASE };
12
7
  //# sourceMappingURL=animations.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"animations.js","sources":["src/internal/animations.ts"],"sourcesContent":["import CoreTokens from '@hh.ru/magritte-design-tokens/core-tokens';\n\nexport const EASE_BASE = [\n CoreTokens['magritte-semantic-animation-ease-base'].x1,\n CoreTokens['magritte-semantic-animation-ease-base'].y1,\n CoreTokens['magritte-semantic-animation-ease-base'].x2,\n CoreTokens['magritte-semantic-animation-ease-base'].y2,\n] as const;\n"],"names":[],"mappings":";;AAEa,MAAA,SAAS,GAAG;AACrB,IAAA,UAAU,CAAC,uCAAuC,CAAC,CAAC,EAAE;AACtD,IAAA,UAAU,CAAC,uCAAuC,CAAC,CAAC,EAAE;AACtD,IAAA,UAAU,CAAC,uCAAuC,CAAC,CAAC,EAAE;AACtD,IAAA,UAAU,CAAC,uCAAuC,CAAC,CAAC,EAAE;;;;;"}
1
+ {"version":3,"file":"animations.js","sources":["src/internal/animations.ts"],"sourcesContent":["import CoreTokens from '@hh.ru/magritte-design-tokens/core-tokens';\n\nexport const EASE_BASE = CoreTokens['magritte-semantic-animation-ease-base'];\n"],"names":[],"mappings":";;MAEa,SAAS,GAAG,UAAU,CAAC,uCAAuC;;;;"}
@@ -0,0 +1,5 @@
1
+ import './index.css';
2
+ var styles = {"media-viewer":"magritte-media-viewer___KnrXP_1-3-42","mediaViewer":"magritte-media-viewer___KnrXP_1-3-42","gallery-placeholder":"magritte-gallery-placeholder___rUoGL_1-3-42","galleryPlaceholder":"magritte-gallery-placeholder___rUoGL_1-3-42","media-viewer-gallery":"magritte-media-viewer-gallery___P0SnN_1-3-42","mediaViewerGallery":"magritte-media-viewer-gallery___P0SnN_1-3-42","gallery-item":"magritte-gallery-item___Js0Z5_1-3-42","galleryItem":"magritte-gallery-item___Js0Z5_1-3-42","gallery-item-transform-container":"magritte-gallery-item-transform-container___N8-sA_1-3-42","galleryItemTransformContainer":"magritte-gallery-item-transform-container___N8-sA_1-3-42","preview-counter":"magritte-preview-counter___uP2Hc_1-3-42","previewCounter":"magritte-preview-counter___uP2Hc_1-3-42","with-description":"magritte-with-description___-w7ld_1-3-42","withDescription":"magritte-with-description___-w7ld_1-3-42","counter-number":"magritte-counter-number___gUpMp_1-3-42","counterNumber":"magritte-counter-number___gUpMp_1-3-42","no-description-placeholder":"magritte-no-description-placeholder___qc6h2_1-3-42","noDescriptionPlaceholder":"magritte-no-description-placeholder___qc6h2_1-3-42","preview-zoom-control":"magritte-preview-zoom-control___026jA_1-3-42","previewZoomControl":"magritte-preview-zoom-control___026jA_1-3-42","preview-container":"magritte-preview-container___nwjNY_1-3-42","previewContainer":"magritte-preview-container___nwjNY_1-3-42","preview":"magritte-preview___0Ge4C_1-3-42","preview-list":"magritte-preview-list___SAXLZ_1-3-42","previewList":"magritte-preview-list___SAXLZ_1-3-42","preview-item":"magritte-preview-item___gz5f2_1-3-42","previewItem":"magritte-preview-item___gz5f2_1-3-42","preview-item-container":"magritte-preview-item-container___JDVsk_1-3-42","previewItemContainer":"magritte-preview-item-container___JDVsk_1-3-42","media-viewer-toolbar":"magritte-media-viewer-toolbar___2C8nr_1-3-42","mediaViewerToolbar":"magritte-media-viewer-toolbar___2C8nr_1-3-42","no-description":"magritte-no-description___NebrT_1-3-42","noDescription":"magritte-no-description___NebrT_1-3-42","media-viewer-toolbar-left":"magritte-media-viewer-toolbar-left___YzkJt_1-3-42","mediaViewerToolbarLeft":"magritte-media-viewer-toolbar-left___YzkJt_1-3-42","media-viewer-toolbar-right":"magritte-media-viewer-toolbar-right___kBER9_1-3-42","mediaViewerToolbarRight":"magritte-media-viewer-toolbar-right___kBER9_1-3-42","prev-button":"magritte-prev-button___WMYjR_1-3-42","prevButton":"magritte-prev-button___WMYjR_1-3-42","next-button":"magritte-next-button___f8hJT_1-3-42","nextButton":"magritte-next-button___f8hJT_1-3-42","slide-button":"magritte-slide-button___sY8LB_1-3-42","slideButton":"magritte-slide-button___sY8LB_1-3-42","preview-placeholder":"magritte-preview-placeholder___yuhW1_1-3-42","previewPlaceholder":"magritte-preview-placeholder___yuhW1_1-3-42","gallery-item-loader":"magritte-gallery-item-loader___70TDe_1-3-42","galleryItemLoader":"magritte-gallery-item-loader___70TDe_1-3-42","gallery-item-error-container":"magritte-gallery-item-error-container___Z-HyZ_1-3-42","galleryItemErrorContainer":"magritte-gallery-item-error-container___Z-HyZ_1-3-42","description-bottom-sheet-content":"magritte-description-bottom-sheet-content___swnEV_1-3-42","descriptionBottomSheetContent":"magritte-description-bottom-sheet-content___swnEV_1-3-42","header":"magritte-header___egZXt_1-3-42","footer":"magritte-footer___rOH-M_1-3-42","description":"magritte-description___dYc-E_1-3-42"};
3
+
4
+ export { styles as s };
5
+ //# sourceMappingURL=media-viewer-Bad5vA1g.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media-viewer-Bad5vA1g.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.3.40",
3
+ "version": "1.3.42",
4
4
  "main": "index.js",
5
5
  "types": "index.d.ts",
6
6
  "sideEffects": [
@@ -12,7 +12,7 @@
12
12
  "prepack": "yarn root:prepack $(pwd)",
13
13
  "postpublish": "yarn root:postpublish $(pwd)",
14
14
  "stylelint-check": "yarn root:stylelint-check $(pwd)",
15
- "eslint-check": "yarn root:eslint-check $(pwd)",
15
+ "lint-check": "yarn root:lint-check $(pwd)",
16
16
  "ts-config": "yarn root:ts-config $(pwd)",
17
17
  "ts-check": "yarn root:ts-check $(pwd)",
18
18
  "test": "yarn root:test $(pwd)",
@@ -22,21 +22,21 @@
22
22
  "access": "public"
23
23
  },
24
24
  "dependencies": {
25
- "@hh.ru/magritte-common-modal-helper": "1.3.4",
26
- "@hh.ru/magritte-common-resize": "0.2.2",
27
- "@hh.ru/magritte-common-use-multiple-refs": "1.1.11",
28
- "@hh.ru/magritte-common-use-translation": "3.6.0",
29
- "@hh.ru/magritte-design-tokens": "25.1.0",
30
- "@hh.ru/magritte-internal-accessible-region": "1.0.3",
31
- "@hh.ru/magritte-ui-bottom-sheet": "9.4.46",
32
- "@hh.ru/magritte-ui-breakpoint": "6.1.1",
33
- "@hh.ru/magritte-ui-icon": "15.1.2",
34
- "@hh.ru/magritte-ui-layer": "3.2.7",
35
- "@hh.ru/magritte-ui-loader": "4.1.3",
36
- "@hh.ru/magritte-ui-mock-component": "1.1.7",
37
- "@hh.ru/magritte-ui-nav-bar": "2.0.18",
38
- "@hh.ru/magritte-ui-tooltip": "11.0.48",
39
- "@hh.ru/magritte-ui-typography": "5.3.13",
25
+ "@hh.ru/magritte-common-modal-helper": "1.3.5",
26
+ "@hh.ru/magritte-common-resize": "0.2.3",
27
+ "@hh.ru/magritte-common-use-multiple-refs": "1.1.12",
28
+ "@hh.ru/magritte-common-use-translation": "3.6.1",
29
+ "@hh.ru/magritte-design-tokens": "26.0.0",
30
+ "@hh.ru/magritte-internal-accessible-region": "1.0.4",
31
+ "@hh.ru/magritte-ui-bottom-sheet": "9.4.48",
32
+ "@hh.ru/magritte-ui-breakpoint": "6.1.2",
33
+ "@hh.ru/magritte-ui-icon": "15.1.4",
34
+ "@hh.ru/magritte-ui-layer": "3.2.8",
35
+ "@hh.ru/magritte-ui-loader": "4.1.5",
36
+ "@hh.ru/magritte-ui-mock-component": "1.1.8",
37
+ "@hh.ru/magritte-ui-nav-bar": "2.0.20",
38
+ "@hh.ru/magritte-ui-tooltip": "11.0.50",
39
+ "@hh.ru/magritte-ui-typography": "5.3.15",
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": "4420819c71c2d263ef47b3208c47942e9f0a1d30"
47
+ "gitHead": "b0ff5da48fb29d516c8289082560ee1882d16986"
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-rY7nUHaA.js';
3
+ import { s as styles } from '../media-viewer-Bad5vA1g.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-rY7nUHaA.js';
13
+ import { s as styles } from '../media-viewer-Bad5vA1g.js';
14
14
  import '../internal/ImagesLoader.js';
15
15
  import '@use-gesture/react';
16
16
  import '@hh.ru/magritte-design-tokens/core-tokens';
@@ -71,7 +71,7 @@ const Gallery = ({ children }) => {
71
71
  setItems(items);
72
72
  // items детерминированно выводится из children, но является новым массивом каждый рендер,
73
73
  // что приводит к бесконечному циклу ре-рендеров при добавлении в deps
74
- // eslint-disable-next-line disable-autofix/react-hooks/exhaustive-deps
74
+ // eslint-disable-next-line react-hooks/exhaustive-deps
75
75
  }, [children, setItems, globalState]);
76
76
  const createClickHandler = (direction) => (event) => {
77
77
  event.stopPropagation();
@@ -1 +1 @@
1
- {"version":3,"file":"Gallery.js","sources":["src/public/Gallery.tsx"],"sourcesContent":["import {\n Children,\n type FC,\n isValidElement,\n cloneElement,\n type PropsWithChildren,\n type ReactElement,\n useEffect,\n useState,\n MouseEvent,\n ReactNode,\n Fragment,\n} from 'react';\nimport { useMotionValueEvent } from 'motion/react';\n\nimport { useResizeObserver } from '@hh.ru/magritte-common-resize';\nimport { useTranslation } from '@hh.ru/magritte-common-use-translation';\nimport { useBreakpoint } from '@hh.ru/magritte-ui-breakpoint';\nimport { ChevronLeftOutlinedSize24, ChevronRightOutlinedSize24, IconDynamic } from '@hh.ru/magritte-ui-icon/icon';\nimport { GalleryItemProps } from '@hh.ru/magritte-ui-media-viewer/internal/GalleryItemBody';\nimport { useGalleryItemsContext, useMediaViewerContext } from '@hh.ru/magritte-ui-media-viewer/internal/context';\nimport { useSwipe } from '@hh.ru/magritte-ui-media-viewer/internal/hooks/useSwipe';\nimport { clamp } from '@hh.ru/magritte-ui-media-viewer/internal/utils';\nimport { GalleryItem } from '@hh.ru/magritte-ui-media-viewer/public/GalleryItem';\n\nimport styles from './media-viewer.less';\n\nconst CONTAINER_REF_KEY = 'media-viewer-container';\n\nconst processGalleryChildren = (\n galleryChildren: ReactNode\n): { items: ReactElement<GalleryItemProps>[]; indexedChildren: ReactNode } => {\n if (isValidElement(galleryChildren) && galleryChildren.type === Fragment) {\n return processGalleryChildren((galleryChildren as ReactElement<PropsWithChildren>).props.children);\n }\n const items: ReactElement<GalleryItemProps>[] = [];\n const indexedChildren = Children.map(galleryChildren, (child) => {\n if (isValidElement(child) && child.type === GalleryItem) {\n const result = cloneElement(child as ReactElement<{ index: number }>, { index: items.length });\n items.push(child as ReactElement<GalleryItemProps>);\n return result;\n }\n return child;\n });\n return { items, indexedChildren };\n};\n\nexport const Gallery: FC<PropsWithChildren> = ({ children }) => {\n const globalState = useMediaViewerContext();\n const prevButtonAriaLabel = useTranslation('MediaViewer', 'previousImageButton');\n const nextButtonAriaLabel = useTranslation('MediaViewer', 'nextImageButton');\n const [prevButtonDisabled, setPrevButtonDisabled] = useState(globalState.currentSlideIndex.get() === 0);\n const [nextButtonDisabled, setNextButtonDisabled] = useState(\n globalState.currentSlideIndex.get() >= globalState.totalSlides.get() - 1\n );\n\n const { isMobile } = useBreakpoint();\n\n const bindSwipe = useSwipe();\n\n const refCb = useResizeObserver((elementsMap) => {\n const container = elementsMap.get(CONTAINER_REF_KEY);\n if (!container) {\n return;\n }\n\n globalState.viewPortDimensions.set(container.getBoundingClientRect());\n });\n\n useMotionValueEvent(globalState.currentSlideIndex, 'change', (latest) => {\n setPrevButtonDisabled(latest === 0);\n setNextButtonDisabled(latest >= globalState.totalSlides.get() - 1);\n });\n\n useMotionValueEvent(globalState.totalSlides, 'change', () => {\n setNextButtonDisabled(globalState.currentSlideIndex.get() >= globalState.totalSlides.get() - 1);\n });\n\n const { items, indexedChildren } = processGalleryChildren(children);\n const hasMultipleSlides = items.length > 1;\n\n const { setItems } = useGalleryItemsContext();\n useEffect(() => {\n globalState.totalSlides.set(items.length);\n setItems(items);\n // items детерминированно выводится из children, но является новым массивом каждый рендер,\n // что приводит к бесконечному циклу ре-рендеров при добавлении в deps\n // eslint-disable-next-line disable-autofix/react-hooks/exhaustive-deps\n }, [children, setItems, globalState]);\n\n const createClickHandler =\n (direction: 'prev' | 'next') => (event: MouseEvent<HTMLDivElement | HTMLButtonElement>) => {\n event.stopPropagation();\n globalState.currentSlideIndex.stop();\n globalState.currentSlideIndex.set(\n Math.round(\n clamp(\n globalState.currentSlideIndex.get() + (direction === 'prev' ? -1 : 1),\n 0,\n globalState.totalSlides.get() - 1\n )\n )\n );\n };\n\n return (\n <div className={styles.galleryPlaceholder}>\n <div className={styles.mediaViewerGallery} ref={refCb(CONTAINER_REF_KEY)} {...bindSwipe()}>\n {indexedChildren}\n {hasMultipleSlides &&\n (isMobile ? (\n <>\n <button\n className={styles.prevButton}\n aria-label={prevButtonAriaLabel}\n onClick={createClickHandler('prev')}\n disabled={prevButtonDisabled}\n data-media-viewer-interactive={true}\n />\n <button\n className={styles.nextButton}\n aria-label={nextButtonAriaLabel}\n onClick={createClickHandler('next')}\n disabled={nextButtonDisabled}\n data-media-viewer-interactive={true}\n />\n </>\n ) : (\n <>\n <IconDynamic className={styles.prevButton}>\n <div className={styles.slideButton} onClick={createClickHandler('prev')}>\n <ChevronLeftOutlinedSize24\n initialColor=\"constant\"\n padding={8}\n borderRadius=\"halfHeight\"\n backgroundStyle=\"constant-secondary\"\n tabIndex={0}\n aria-label={prevButtonAriaLabel}\n disabled={prevButtonDisabled}\n />\n </div>\n </IconDynamic>\n <IconDynamic className={styles.nextButton}>\n <div className={styles.slideButton} onClick={createClickHandler('next')}>\n <ChevronRightOutlinedSize24\n initialColor=\"constant\"\n padding={8}\n borderRadius=\"halfHeight\"\n backgroundStyle=\"constant-secondary\"\n tabIndex={0}\n aria-label={nextButtonAriaLabel}\n disabled={nextButtonDisabled}\n />\n </div>\n </IconDynamic>\n </>\n ))}\n </div>\n </div>\n );\n};\n"],"names":["Fragment","_jsx","_jsxs","_Fragment"],"mappings":"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"}
1
+ {"version":3,"file":"Gallery.js","sources":["src/public/Gallery.tsx"],"sourcesContent":["import {\n Children,\n type FC,\n isValidElement,\n cloneElement,\n type PropsWithChildren,\n type ReactElement,\n useEffect,\n useState,\n MouseEvent,\n ReactNode,\n Fragment,\n} from 'react';\nimport { useMotionValueEvent } from 'motion/react';\n\nimport { useResizeObserver } from '@hh.ru/magritte-common-resize';\nimport { useTranslation } from '@hh.ru/magritte-common-use-translation';\nimport { useBreakpoint } from '@hh.ru/magritte-ui-breakpoint';\nimport { ChevronLeftOutlinedSize24, ChevronRightOutlinedSize24, IconDynamic } from '@hh.ru/magritte-ui-icon/icon';\nimport { GalleryItemProps } from '@hh.ru/magritte-ui-media-viewer/internal/GalleryItemBody';\nimport { useGalleryItemsContext, useMediaViewerContext } from '@hh.ru/magritte-ui-media-viewer/internal/context';\nimport { useSwipe } from '@hh.ru/magritte-ui-media-viewer/internal/hooks/useSwipe';\nimport { clamp } from '@hh.ru/magritte-ui-media-viewer/internal/utils';\nimport { GalleryItem } from '@hh.ru/magritte-ui-media-viewer/public/GalleryItem';\n\nimport styles from './media-viewer.less';\n\nconst CONTAINER_REF_KEY = 'media-viewer-container';\n\nconst processGalleryChildren = (\n galleryChildren: ReactNode\n): { items: ReactElement<GalleryItemProps>[]; indexedChildren: ReactNode } => {\n if (isValidElement(galleryChildren) && galleryChildren.type === Fragment) {\n return processGalleryChildren((galleryChildren as ReactElement<PropsWithChildren>).props.children);\n }\n const items: ReactElement<GalleryItemProps>[] = [];\n const indexedChildren = Children.map(galleryChildren, (child) => {\n if (isValidElement(child) && child.type === GalleryItem) {\n const result = cloneElement(child as ReactElement<{ index: number }>, { index: items.length });\n items.push(child as ReactElement<GalleryItemProps>);\n return result;\n }\n return child;\n });\n return { items, indexedChildren };\n};\n\nexport const Gallery: FC<PropsWithChildren> = ({ children }) => {\n const globalState = useMediaViewerContext();\n const prevButtonAriaLabel = useTranslation('MediaViewer', 'previousImageButton');\n const nextButtonAriaLabel = useTranslation('MediaViewer', 'nextImageButton');\n const [prevButtonDisabled, setPrevButtonDisabled] = useState(globalState.currentSlideIndex.get() === 0);\n const [nextButtonDisabled, setNextButtonDisabled] = useState(\n globalState.currentSlideIndex.get() >= globalState.totalSlides.get() - 1\n );\n\n const { isMobile } = useBreakpoint();\n\n const bindSwipe = useSwipe();\n\n const refCb = useResizeObserver((elementsMap) => {\n const container = elementsMap.get(CONTAINER_REF_KEY);\n if (!container) {\n return;\n }\n\n globalState.viewPortDimensions.set(container.getBoundingClientRect());\n });\n\n useMotionValueEvent(globalState.currentSlideIndex, 'change', (latest) => {\n setPrevButtonDisabled(latest === 0);\n setNextButtonDisabled(latest >= globalState.totalSlides.get() - 1);\n });\n\n useMotionValueEvent(globalState.totalSlides, 'change', () => {\n setNextButtonDisabled(globalState.currentSlideIndex.get() >= globalState.totalSlides.get() - 1);\n });\n\n const { items, indexedChildren } = processGalleryChildren(children);\n const hasMultipleSlides = items.length > 1;\n\n const { setItems } = useGalleryItemsContext();\n useEffect(() => {\n globalState.totalSlides.set(items.length);\n setItems(items);\n // items детерминированно выводится из children, но является новым массивом каждый рендер,\n // что приводит к бесконечному циклу ре-рендеров при добавлении в deps\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [children, setItems, globalState]);\n\n const createClickHandler =\n (direction: 'prev' | 'next') => (event: MouseEvent<HTMLDivElement | HTMLButtonElement>) => {\n event.stopPropagation();\n globalState.currentSlideIndex.stop();\n globalState.currentSlideIndex.set(\n Math.round(\n clamp(\n globalState.currentSlideIndex.get() + (direction === 'prev' ? -1 : 1),\n 0,\n globalState.totalSlides.get() - 1\n )\n )\n );\n };\n\n return (\n <div className={styles.galleryPlaceholder}>\n <div className={styles.mediaViewerGallery} ref={refCb(CONTAINER_REF_KEY)} {...bindSwipe()}>\n {indexedChildren}\n {hasMultipleSlides &&\n (isMobile ? (\n <>\n <button\n className={styles.prevButton}\n aria-label={prevButtonAriaLabel}\n onClick={createClickHandler('prev')}\n disabled={prevButtonDisabled}\n data-media-viewer-interactive={true}\n />\n <button\n className={styles.nextButton}\n aria-label={nextButtonAriaLabel}\n onClick={createClickHandler('next')}\n disabled={nextButtonDisabled}\n data-media-viewer-interactive={true}\n />\n </>\n ) : (\n <>\n <IconDynamic className={styles.prevButton}>\n <div className={styles.slideButton} onClick={createClickHandler('prev')}>\n <ChevronLeftOutlinedSize24\n initialColor=\"constant\"\n padding={8}\n borderRadius=\"halfHeight\"\n backgroundStyle=\"constant-secondary\"\n tabIndex={0}\n aria-label={prevButtonAriaLabel}\n disabled={prevButtonDisabled}\n />\n </div>\n </IconDynamic>\n <IconDynamic className={styles.nextButton}>\n <div className={styles.slideButton} onClick={createClickHandler('next')}>\n <ChevronRightOutlinedSize24\n initialColor=\"constant\"\n padding={8}\n borderRadius=\"halfHeight\"\n backgroundStyle=\"constant-secondary\"\n tabIndex={0}\n aria-label={nextButtonAriaLabel}\n disabled={nextButtonDisabled}\n />\n </div>\n </IconDynamic>\n </>\n ))}\n </div>\n </div>\n );\n};\n"],"names":["Fragment","_jsx","_jsxs","_Fragment"],"mappings":"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"}
@@ -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-rY7nUHaA.js';
20
+ import '../media-viewer-Bad5vA1g.js';
21
21
  import '../internal/ImagesLoader.js';
22
22
 
23
23
  const GALLERY_ITEM_VIRTUALIZATION_PADDING = 5;
package/public/Header.js CHANGED
@@ -1,7 +1,7 @@
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-rY7nUHaA.js';
4
+ import { s as styles } from '../media-viewer-Bad5vA1g.js';
5
5
 
6
6
  const NAV_BAR_ACTIONS_DEFAULT_PROPS = {
7
7
  verticalAlign: 'top',
@@ -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-rY7nUHaA.js';
25
+ import { s as styles } from '../media-viewer-Bad5vA1g.js';
26
26
  import '../internal/ImagesLoader.js';
27
27
  import '@use-gesture/react';
28
28
  import '@hh.ru/magritte-common-resize';
@@ -370,7 +370,7 @@ const MediaViewer = ({ children, visible, onClose, initialItemIndex = 0, 'aria-l
370
370
  }
371
371
  // нельзя реагировать на изменения isVisible, иначе при закрытии жестом хук будет срабатывать
372
372
  // и переоткрывать компонент, хук должен реагировать только на изменения visible пропса
373
- // eslint-disable-next-line disable-autofix/react-hooks/exhaustive-deps
373
+ // eslint-disable-next-line react-hooks/exhaustive-deps
374
374
  }, [visible, contextValue]);
375
375
  useEffect(() => () => {
376
376
  scrollEnableRef.current?.();
@@ -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`;\n/**\n * Элемент, спрятанный через `display`/`visibility` (в том числе на предке), не может получить фокус\n * `.focus()` на нём молча ничего не делает.\n */\nconst canReceiveFocus = (element) => {\n if (typeof element.checkVisibility === 'function') {\n return element.checkVisibility({\n checkVisibilityCSS: true, // старое имя опции visibilityProperty (Chrome 105–121)\n visibilityProperty: true,\n });\n }\n return true;\n};\nconst findAllFocusableElements = (container) => {\n return [...container.querySelectorAll(FOCUSABLE_SELECTOR)].filter(canReceiveFocus);\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 CoreTokens from '@hh.ru/magritte-design-tokens/core-tokens';\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 { type GalleryItemController } from '@hh.ru/magritte-ui-media-viewer/internal/hooks/useGalleryItemController';\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 /** Индекс слайда, который будет отображаться при открытии компонента, индексация с 0 */\n initialItemIndex?: number;\n }> &\n ExplicitRegionProps\n> &\n MediaViewerCompound = ({\n children,\n visible,\n onClose,\n initialItemIndex = 0,\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 currentSlideController = useMotionValue<GalleryItemController | null>(null);\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 finishClose = useInitOnce(() => () => {\n setIsVisible(false);\n scrollEnableRef.current?.();\n scrollEnableRef.current = null;\n currentSlideIndex.set(0);\n currentSlideController.get()?.reset();\n currentSlideController.set(null);\n closeCallbackRef.current?.();\n });\n\n const close = useInitOnce(() => () => {\n if (closeProgress.get() >= 1) {\n closeProgress.set(1);\n finishClose();\n return;\n }\n const delta = Math.abs(closeProgress.get() - 1);\n const animationDuration = delta * (CoreTokens['magritte-semantic-animation-time-m'].duration / 1000);\n animate(closeProgress, 1, {\n duration: animationDuration,\n ease: EASE_BASE,\n onComplete: finishClose,\n });\n });\n const rootRef = useKeyboardNavigation({ mode: 'loop', enabled: isVisible });\n\n const contextValue = useInitOnce(() => {\n const contextValue = createMediaViewerContextValue(\n visibleRange,\n currentSlideIndex,\n closeProgress,\n currentSlideController,\n close\n );\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 currentSlideIndex.set(initialItemIndex);\n setIsVisible(true);\n animate(contextValue.closeProgress, 0, {\n duration: CoreTokens['magritte-semantic-animation-time-m'].duration / 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`;\n/**\n * Элемент, спрятанный через `display`/`visibility` (в том числе на предке), не может получить фокус\n * `.focus()` на нём молча ничего не делает.\n */\nconst canReceiveFocus = (element) => {\n if (typeof element.checkVisibility === 'function') {\n return element.checkVisibility({\n checkVisibilityCSS: true, // старое имя опции visibilityProperty (Chrome 105–121)\n visibilityProperty: true,\n });\n }\n return true;\n};\nconst findAllFocusableElements = (container) => {\n return [...container.querySelectorAll(FOCUSABLE_SELECTOR)].filter(canReceiveFocus);\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 CoreTokens from '@hh.ru/magritte-design-tokens/core-tokens';\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 { type GalleryItemController } from '@hh.ru/magritte-ui-media-viewer/internal/hooks/useGalleryItemController';\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 /** Индекс слайда, который будет отображаться при открытии компонента, индексация с 0 */\n initialItemIndex?: number;\n }> &\n ExplicitRegionProps\n> &\n MediaViewerCompound = ({\n children,\n visible,\n onClose,\n initialItemIndex = 0,\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 currentSlideController = useMotionValue<GalleryItemController | null>(null);\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 finishClose = useInitOnce(() => () => {\n setIsVisible(false);\n scrollEnableRef.current?.();\n scrollEnableRef.current = null;\n currentSlideIndex.set(0);\n currentSlideController.get()?.reset();\n currentSlideController.set(null);\n closeCallbackRef.current?.();\n });\n\n const close = useInitOnce(() => () => {\n if (closeProgress.get() >= 1) {\n closeProgress.set(1);\n finishClose();\n return;\n }\n const delta = Math.abs(closeProgress.get() - 1);\n const animationDuration = delta * (CoreTokens['magritte-semantic-animation-time-m'].duration / 1000);\n animate(closeProgress, 1, {\n duration: animationDuration,\n ease: EASE_BASE,\n onComplete: finishClose,\n });\n });\n const rootRef = useKeyboardNavigation({ mode: 'loop', enabled: isVisible });\n\n const contextValue = useInitOnce(() => {\n const contextValue = createMediaViewerContextValue(\n visibleRange,\n currentSlideIndex,\n closeProgress,\n currentSlideController,\n close\n );\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 currentSlideIndex.set(initialItemIndex);\n setIsVisible(true);\n animate(contextValue.closeProgress, 0, {\n duration: CoreTokens['magritte-semantic-animation-time-m'].duration / 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 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-rY7nUHaA.js';
15
+ import { s as styles } from '../media-viewer-Bad5vA1g.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
@@ -4,7 +4,7 @@ import classNames from 'classnames';
4
4
  import { IconDefaultPropsContext } from '@hh.ru/magritte-ui-icon';
5
5
  import { hasCounterContent, Counter } from '../internal/Counter.js';
6
6
  import { useGalleryItemsContext } from '../internal/context.js';
7
- import { s as styles } from '../media-viewer-rY7nUHaA.js';
7
+ import { s as styles } from '../media-viewer-Bad5vA1g.js';
8
8
  import 'react';
9
9
  import 'motion/react';
10
10
  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-3-40","mediaViewer":"magritte-media-viewer___KnrXP_1-3-40","gallery-placeholder":"magritte-gallery-placeholder___rUoGL_1-3-40","galleryPlaceholder":"magritte-gallery-placeholder___rUoGL_1-3-40","media-viewer-gallery":"magritte-media-viewer-gallery___P0SnN_1-3-40","mediaViewerGallery":"magritte-media-viewer-gallery___P0SnN_1-3-40","gallery-item":"magritte-gallery-item___Js0Z5_1-3-40","galleryItem":"magritte-gallery-item___Js0Z5_1-3-40","gallery-item-transform-container":"magritte-gallery-item-transform-container___N8-sA_1-3-40","galleryItemTransformContainer":"magritte-gallery-item-transform-container___N8-sA_1-3-40","preview-counter":"magritte-preview-counter___uP2Hc_1-3-40","previewCounter":"magritte-preview-counter___uP2Hc_1-3-40","with-description":"magritte-with-description___-w7ld_1-3-40","withDescription":"magritte-with-description___-w7ld_1-3-40","counter-number":"magritte-counter-number___gUpMp_1-3-40","counterNumber":"magritte-counter-number___gUpMp_1-3-40","no-description-placeholder":"magritte-no-description-placeholder___qc6h2_1-3-40","noDescriptionPlaceholder":"magritte-no-description-placeholder___qc6h2_1-3-40","preview-zoom-control":"magritte-preview-zoom-control___026jA_1-3-40","previewZoomControl":"magritte-preview-zoom-control___026jA_1-3-40","preview-container":"magritte-preview-container___nwjNY_1-3-40","previewContainer":"magritte-preview-container___nwjNY_1-3-40","preview":"magritte-preview___0Ge4C_1-3-40","preview-list":"magritte-preview-list___SAXLZ_1-3-40","previewList":"magritte-preview-list___SAXLZ_1-3-40","preview-item":"magritte-preview-item___gz5f2_1-3-40","previewItem":"magritte-preview-item___gz5f2_1-3-40","preview-item-container":"magritte-preview-item-container___JDVsk_1-3-40","previewItemContainer":"magritte-preview-item-container___JDVsk_1-3-40","media-viewer-toolbar":"magritte-media-viewer-toolbar___2C8nr_1-3-40","mediaViewerToolbar":"magritte-media-viewer-toolbar___2C8nr_1-3-40","no-description":"magritte-no-description___NebrT_1-3-40","noDescription":"magritte-no-description___NebrT_1-3-40","media-viewer-toolbar-left":"magritte-media-viewer-toolbar-left___YzkJt_1-3-40","mediaViewerToolbarLeft":"magritte-media-viewer-toolbar-left___YzkJt_1-3-40","media-viewer-toolbar-right":"magritte-media-viewer-toolbar-right___kBER9_1-3-40","mediaViewerToolbarRight":"magritte-media-viewer-toolbar-right___kBER9_1-3-40","prev-button":"magritte-prev-button___WMYjR_1-3-40","prevButton":"magritte-prev-button___WMYjR_1-3-40","next-button":"magritte-next-button___f8hJT_1-3-40","nextButton":"magritte-next-button___f8hJT_1-3-40","slide-button":"magritte-slide-button___sY8LB_1-3-40","slideButton":"magritte-slide-button___sY8LB_1-3-40","preview-placeholder":"magritte-preview-placeholder___yuhW1_1-3-40","previewPlaceholder":"magritte-preview-placeholder___yuhW1_1-3-40","gallery-item-loader":"magritte-gallery-item-loader___70TDe_1-3-40","galleryItemLoader":"magritte-gallery-item-loader___70TDe_1-3-40","gallery-item-error-container":"magritte-gallery-item-error-container___Z-HyZ_1-3-40","galleryItemErrorContainer":"magritte-gallery-item-error-container___Z-HyZ_1-3-40","description-bottom-sheet-content":"magritte-description-bottom-sheet-content___swnEV_1-3-40","descriptionBottomSheetContent":"magritte-description-bottom-sheet-content___swnEV_1-3-40","header":"magritte-header___egZXt_1-3-40","footer":"magritte-footer___rOH-M_1-3-40","description":"magritte-description___dYc-E_1-3-40"};
3
-
4
- export { styles as s };
5
- //# sourceMappingURL=media-viewer-rY7nUHaA.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"media-viewer-rY7nUHaA.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}