vgapp 1.1.3 → 1.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (54) hide show
  1. package/CHANGELOG.md +30 -1
  2. package/README.md +48 -48
  3. package/agents.md +7 -0
  4. package/app/langs/en/buttons.json +17 -17
  5. package/app/langs/en/messages.json +36 -36
  6. package/app/langs/ru/buttons.json +17 -17
  7. package/app/langs/ru/messages.json +36 -36
  8. package/app/modules/vgfilepreview/js/i18n.js +56 -56
  9. package/app/modules/vgfilepreview/js/renderers/image-modal.js +145 -145
  10. package/app/modules/vgfilepreview/js/renderers/image.js +92 -92
  11. package/app/modules/vgfilepreview/js/renderers/index.js +19 -19
  12. package/app/modules/vgfilepreview/js/renderers/office-modal.js +168 -168
  13. package/app/modules/vgfilepreview/js/renderers/office.js +79 -79
  14. package/app/modules/vgfilepreview/js/renderers/pdf-modal.js +260 -260
  15. package/app/modules/vgfilepreview/js/renderers/pdf.js +76 -76
  16. package/app/modules/vgfilepreview/js/renderers/playlist.js +71 -71
  17. package/app/modules/vgfilepreview/js/renderers/text-modal.js +343 -343
  18. package/app/modules/vgfilepreview/js/renderers/text.js +83 -83
  19. package/app/modules/vgfilepreview/js/renderers/video-modal.js +272 -272
  20. package/app/modules/vgfilepreview/js/renderers/video.js +80 -80
  21. package/app/modules/vgfilepreview/js/renderers/zip-modal.js +522 -522
  22. package/app/modules/vgfilepreview/js/renderers/zip.js +89 -89
  23. package/app/modules/vgfilepreview/js/vgfilepreview.js +965 -530
  24. package/app/modules/vgfilepreview/readme.md +68 -68
  25. package/app/modules/vgfilepreview/scss/_variables.scss +113 -113
  26. package/app/modules/vgfilepreview/scss/vgfilepreview.scss +464 -460
  27. package/app/modules/vgfiles/js/base.js +463 -463
  28. package/app/modules/vgfiles/js/droppable.js +260 -260
  29. package/app/modules/vgfiles/js/render.js +153 -153
  30. package/app/modules/vgfiles/js/vgfiles.js +41 -41
  31. package/app/modules/vgfiles/readme.md +123 -123
  32. package/app/modules/vgfiles/scss/_variables.scss +18 -18
  33. package/app/modules/vgfiles/scss/vgfiles.scss +148 -148
  34. package/app/modules/vgformsender/js/vgformsender.js +13 -13
  35. package/app/modules/vgmodal/js/vgmodal.drag.js +332 -0
  36. package/app/modules/vgmodal/js/vgmodal.js +116 -14
  37. package/app/modules/vgmodal/js/vgmodal.resize.js +435 -0
  38. package/app/modules/vgnav/js/vgnav.js +135 -135
  39. package/app/modules/vgnav/readme.md +67 -67
  40. package/app/modules/vgnestable/README.md +307 -307
  41. package/app/modules/vgnestable/scss/_variables.scss +60 -60
  42. package/app/modules/vgnestable/scss/vgnestable.scss +163 -163
  43. package/app/modules/vgselect/js/vgselect.js +39 -39
  44. package/app/modules/vgselect/scss/vgselect.scss +22 -22
  45. package/app/modules/vgspy/readme.md +28 -28
  46. package/app/utils/js/components/audio-metadata.js +240 -240
  47. package/app/utils/js/components/file-icon.js +109 -109
  48. package/app/utils/js/components/file-preview.js +304 -304
  49. package/app/utils/js/components/sanitize.js +150 -150
  50. package/app/utils/js/components/video-metadata.js +140 -0
  51. package/build/vgapp.css +1 -1
  52. package/build/vgapp.css.map +1 -1
  53. package/index.scss +9 -9
  54. package/package.json +1 -1
@@ -1,460 +1,464 @@
1
- /**
2
- *--------------------------------------------------------------------------
3
- * Модуль: VGFilePreview
4
- * Автор: Vegas DEV
5
- * Лицензия: смотри LICENSE
6
- *--------------------------------------------------------------------------
7
- **/
8
-
9
- @import "../../../utils/scss/functions";
10
- @import "../../../utils/scss/mixin";
11
- @import "../../../utils/scss/variables";
12
- @import "variables";
13
-
14
- %vg-filepreview-vars {
15
- @include mix-vars('filepreview', $filepreview-map);
16
- }
17
-
18
- @mixin filepreview-trigger($bg) {
19
- border: 0;
20
- cursor: pointer;
21
- border-radius: var(--vg-filepreview-trigger-radius);
22
- padding: var(--vg-filepreview-trigger-padding);
23
- font-size: var(--vg-filepreview-trigger-font-size);
24
- font-weight: var(--vg-filepreview-trigger-font-weight);
25
- background: $bg;
26
- color: var(--vg-filepreview-trigger-color);
27
- }
28
-
29
- .vg-filepreview-audio-inline {
30
- @extend %vg-filepreview-vars;
31
- display: inline-flex;
32
- align-items: center;
33
- gap: 8px;
34
- min-width: 0;
35
-
36
- &__toggle {
37
- display: inline-flex;
38
- align-items: center;
39
- justify-content: center;
40
- width: var(--vg-filepreview-audio-inline-toggle-size);
41
- height: var(--vg-filepreview-audio-inline-toggle-size);
42
- border: 0;
43
- border-radius: var(--vg-filepreview-audio-inline-toggle-radius);
44
- background: var(--vg-filepreview-audio-inline-toggle-bg);
45
- color: var(--vg-filepreview-audio-inline-toggle-color);
46
- cursor: pointer;
47
- padding: 0;
48
- flex: 0 0 auto;
49
- }
50
-
51
- &__icon {
52
- display: inline-flex;
53
- align-items: center;
54
- justify-content: center;
55
-
56
- svg {
57
- width: var(--vg-filepreview-audio-inline-icon-size);
58
- height: var(--vg-filepreview-audio-inline-icon-size);
59
- }
60
- }
61
-
62
- &__name {
63
- line-height: var(--vg-filepreview-audio-inline-name-line-height);
64
- white-space: nowrap;
65
- overflow: hidden;
66
- text-overflow: ellipsis;
67
- }
68
- }
69
-
70
- .vg-filepreview-image-modal,
71
- .vg-filepreview-text-modal,
72
- .vg-filepreview-video-modal,
73
- .vg-filepreview-zip-modal {
74
- @extend %vg-filepreview-vars;
75
-
76
- .vg-modal-content {
77
- background: var(--vg-filepreview-modal-content-bg);
78
- color: var(--vg-filepreview-modal-content-color);
79
- }
80
-
81
- .vg-btn-close {
82
- top: var(--vg-filepreview-modal-close-top);
83
- right: var(--vg-filepreview-modal-close-right);
84
- }
85
- }
86
-
87
- .vg-filepreview-image-modal {
88
- &__body {
89
- display: flex;
90
- flex-direction: column;
91
- align-items: center;
92
- justify-content: center;
93
- gap: var(--vg-filepreview-image-body-gap);
94
- padding: var(--vg-filepreview-modal-body-padding);
95
- }
96
-
97
- &__title {
98
- color: var(--vg-filepreview-panel-color);
99
- font-size: var(--vg-filepreview-modal-title-size);
100
- font-weight: var(--vg-filepreview-modal-title-weight);
101
- line-height: var(--vg-filepreview-modal-title-line-height);
102
- width: 100%;
103
- text-align: center;
104
- white-space: nowrap;
105
- overflow: hidden;
106
- text-overflow: ellipsis;
107
- }
108
-
109
- &__img {
110
- display: block;
111
- max-width: var(--vg-filepreview-image-img-max-width);
112
- max-height: var(--vg-filepreview-image-img-max-height);
113
- width: auto;
114
- height: auto;
115
- object-fit: contain;
116
- border-radius: var(--vg-filepreview-image-img-radius);
117
- }
118
- }
119
-
120
- .vg-filepreview-image-trigger {
121
- @extend %vg-filepreview-vars;
122
- @include filepreview-trigger(var(--vg-filepreview-trigger-image-bg));
123
- }
124
-
125
- .vg-filepreview-image-thumb {
126
- @extend %vg-filepreview-vars;
127
- display: block;
128
- margin-top: var(--vg-filepreview-image-thumb-margin-top);
129
- max-width: var(--vg-filepreview-image-thumb-max-width);
130
- max-height: var(--vg-filepreview-image-thumb-max-height);
131
- width: auto;
132
- height: auto;
133
- border-radius: var(--vg-filepreview-image-thumb-radius);
134
- cursor: pointer;
135
- object-fit: cover;
136
- }
137
-
138
- .vg-filepreview-text-modal,
139
- .vg-filepreview-video-modal,
140
- .vg-filepreview-zip-modal {
141
- &__body {
142
- padding: var(--vg-filepreview-modal-body-padding);
143
- }
144
-
145
- &__title {
146
- color: var(--vg-filepreview-panel-color);
147
- font-size: var(--vg-filepreview-modal-title-size);
148
- font-weight: var(--vg-filepreview-modal-title-weight);
149
- line-height: var(--vg-filepreview-modal-title-line-height);
150
- margin-bottom: var(--vg-filepreview-modal-title-margin-bottom);
151
- white-space: nowrap;
152
- overflow: hidden;
153
- text-overflow: ellipsis;
154
- }
155
- }
156
-
157
- .vg-filepreview-text-modal {
158
- &__content {
159
- margin: 0;
160
- padding: var(--vg-filepreview-text-content-padding);
161
- max-height: var(--vg-filepreview-text-content-max-height);
162
- overflow: auto;
163
- background: var(--vg-filepreview-text-content-bg);
164
- border-radius: var(--vg-filepreview-text-content-radius);
165
- font-size: var(--vg-filepreview-text-content-font-size);
166
- line-height: var(--vg-filepreview-text-content-line-height);
167
- white-space: pre-wrap;
168
- word-break: break-word;
169
-
170
- &.is-markdown {
171
- white-space: normal;
172
-
173
- h1,
174
- h2,
175
- h3,
176
- h4,
177
- h5,
178
- h6 {
179
- margin: var(--vg-filepreview-text-markdown-block-margin);
180
- line-height: var(--vg-filepreview-text-markdown-heading-line-height);
181
- }
182
-
183
- p {
184
- margin: var(--vg-filepreview-text-markdown-block-margin);
185
- }
186
-
187
- ul {
188
- margin: var(--vg-filepreview-text-markdown-list-margin);
189
- padding: 0;
190
- }
191
-
192
- pre {
193
- margin: var(--vg-filepreview-text-markdown-block-margin);
194
- padding: var(--vg-filepreview-text-markdown-code-padding);
195
- border-radius: var(--vg-filepreview-text-markdown-code-radius);
196
- background: var(--vg-filepreview-text-markdown-code-bg);
197
- overflow: auto;
198
- }
199
-
200
- a {
201
- color: var(--vg-filepreview-text-markdown-link-color);
202
- }
203
- }
204
- }
205
- }
206
-
207
- .vg-filepreview-text-trigger {
208
- @extend %vg-filepreview-vars;
209
- @include filepreview-trigger(var(--vg-filepreview-trigger-text-bg));
210
- }
211
-
212
- .vg-filepreview-video-modal {
213
- &__video {
214
- display: block;
215
- width: var(--vg-filepreview-video-player-width);
216
- max-height: var(--vg-filepreview-video-player-max-height);
217
- height: auto;
218
- border-radius: var(--vg-filepreview-video-player-radius);
219
- background: var(--vg-filepreview-video-player-bg);
220
- }
221
-
222
- .vg-modal-header {
223
- display: flex;
224
- gap: 1rem;
225
- }
226
- }
227
-
228
- .vg-filepreview-video-trigger {
229
- @extend %vg-filepreview-vars;
230
- @include filepreview-trigger(var(--vg-filepreview-trigger-video-bg));
231
- }
232
-
233
- .vg-filepreview-zip-modal {
234
- &__content {
235
- max-height: var(--vg-filepreview-zip-content-max-height);
236
- overflow: auto;
237
- background: var(--vg-filepreview-zip-content-bg);
238
- border-radius: var(--vg-filepreview-zip-content-radius);
239
- padding: var(--vg-filepreview-zip-content-padding);
240
- }
241
-
242
- &__table {
243
- width: 100%;
244
- border-collapse: collapse;
245
- font-size: var(--vg-filepreview-zip-table-font-size);
246
-
247
- th,
248
- td {
249
- padding: var(--vg-filepreview-zip-table-cell-padding);
250
- border-bottom: var(--vg-filepreview-zip-table-border);
251
- text-align: left;
252
- vertical-align: top;
253
- }
254
-
255
- td.name {
256
- word-break: break-word;
257
- }
258
- }
259
-
260
- &__loading,
261
- &__error,
262
- &__empty {
263
- font-size: var(--vg-filepreview-zip-status-font-size);
264
- }
265
- }
266
-
267
- .vg-filepreview-zip-trigger {
268
- @extend %vg-filepreview-vars;
269
- @include filepreview-trigger(var(--vg-filepreview-trigger-zip-bg));
270
- }
271
-
272
- .vg-filepreview-pdf-trigger,
273
- .vg-filepreview-office-trigger,
274
- .vg-filepreview-download-trigger {
275
- @extend %vg-filepreview-vars;
276
- @include filepreview-trigger(var(--vg-filepreview-trigger-text-bg));
277
- display: inline-flex;
278
- align-items: center;
279
- gap: 6px;
280
-
281
- &__icon {
282
- display: inline-flex;
283
- align-items: center;
284
-
285
- svg {
286
- width: 14px;
287
- height: 14px;
288
- }
289
- }
290
- }
291
-
292
- .vg-filepreview-video-modal__navigation {
293
- display: inline-flex;
294
- gap: 8px;
295
- }
296
-
297
- .vg-filepreview-video-modal__nav-btn {
298
- border: 0;
299
- border-radius: 8px;
300
- padding: 6px 10px;
301
- font-size: 12px;
302
- font-weight: 600;
303
- cursor: pointer;
304
- background: rgba(255, 255, 255, .12);
305
- color: var(--vg-filepreview-panel-color);
306
- }
307
-
308
- .vg-filepreview-pdf-modal,
309
- .vg-filepreview-office-modal {
310
- @extend %vg-filepreview-vars;
311
-
312
- .vg-modal-content {
313
- background: var(--vg-filepreview-modal-content-bg);
314
- color: var(--vg-filepreview-modal-content-color);
315
- }
316
-
317
- .vg-btn-close {
318
- top: var(--vg-filepreview-modal-close-top);
319
- right: var(--vg-filepreview-modal-close-right);
320
- }
321
-
322
- &__body {
323
- padding: var(--vg-filepreview-modal-body-padding);
324
- }
325
-
326
- &__title {
327
- color: var(--vg-filepreview-panel-color);
328
- font-size: var(--vg-filepreview-modal-title-size);
329
- font-weight: var(--vg-filepreview-modal-title-weight);
330
- line-height: var(--vg-filepreview-modal-title-line-height);
331
- margin-bottom: var(--vg-filepreview-modal-title-margin-bottom);
332
- white-space: nowrap;
333
- overflow: hidden;
334
- text-overflow: ellipsis;
335
- }
336
- }
337
-
338
- .vg-filepreview-pdf-modal {
339
- &__toolbar {
340
- display: flex;
341
- align-items: center;
342
- flex-wrap: wrap;
343
- gap: var(--vg-filepreview-pdf-toolbar-gap);
344
- margin-bottom: var(--vg-filepreview-pdf-toolbar-margin-bottom);
345
- }
346
-
347
- &__btn {
348
- border: 0;
349
- border-radius: var(--vg-filepreview-pdf-btn-radius);
350
- padding: var(--vg-filepreview-pdf-btn-padding);
351
- font-size: var(--vg-filepreview-pdf-btn-font-size);
352
- font-weight: var(--vg-filepreview-pdf-btn-font-weight);
353
- cursor: pointer;
354
- background: var(--vg-filepreview-pdf-btn-bg);
355
- color: var(--vg-filepreview-panel-color);
356
- }
357
-
358
- &__meta {
359
- font-size: var(--vg-filepreview-pdf-meta-font-size);
360
- opacity: var(--vg-filepreview-pdf-meta-opacity);
361
- }
362
-
363
- &__frame {
364
- display: block;
365
- width: var(--vg-filepreview-pdf-frame-width);
366
- height: var(--vg-filepreview-pdf-frame-height);
367
- border: 0;
368
- border-radius: var(--vg-filepreview-pdf-frame-radius);
369
- background: var(--vg-filepreview-pdf-frame-bg);
370
- }
371
- }
372
-
373
- .vg-filepreview-office-modal {
374
- &__frame {
375
- display: block;
376
- width: var(--vg-filepreview-office-frame-width);
377
- height: var(--vg-filepreview-office-frame-height);
378
- border: 0;
379
- border-radius: var(--vg-filepreview-office-frame-radius);
380
- background: var(--vg-filepreview-office-frame-bg);
381
- }
382
-
383
- &__footer {
384
- display: flex;
385
- align-items: center;
386
- justify-content: space-between;
387
- gap: var(--vg-filepreview-office-footer-gap);
388
- margin-top: var(--vg-filepreview-office-footer-margin-top);
389
- }
390
-
391
- &__hint {
392
- font-size: var(--vg-filepreview-office-hint-font-size);
393
- opacity: var(--vg-filepreview-office-hint-opacity);
394
- }
395
-
396
- &__btn {
397
- border: 0;
398
- border-radius: var(--vg-filepreview-office-btn-radius);
399
- padding: var(--vg-filepreview-office-btn-padding);
400
- font-size: var(--vg-filepreview-office-btn-font-size);
401
- font-weight: var(--vg-filepreview-office-btn-font-weight);
402
- cursor: pointer;
403
- background: var(--vg-filepreview-office-btn-bg);
404
- color: var(--vg-filepreview-panel-color);
405
- }
406
- }
407
-
408
- .vg-filepreview-zip-modal {
409
- &__entry-btn {
410
- border: 0;
411
- border-radius: 6px;
412
- padding: 4px 8px;
413
- font-size: 11px;
414
- cursor: pointer;
415
- background: rgba(255, 255, 255, .12);
416
- color: var(--vg-filepreview-panel-color);
417
- }
418
-
419
- &__entry-preview {
420
- margin-top: 10px;
421
- padding-top: 10px;
422
- border-top: var(--vg-filepreview-zip-table-border);
423
- }
424
-
425
- &__entry-preview-title {
426
- font-size: 12px;
427
- font-weight: 600;
428
- margin-bottom: 8px;
429
- word-break: break-all;
430
- }
431
-
432
- &__entry-preview-text {
433
- margin: 0;
434
- padding: 10px;
435
- border-radius: 8px;
436
- background: rgba(255, 255, 255, .08);
437
- white-space: pre-wrap;
438
- word-break: break-word;
439
- }
440
-
441
- &__entry-preview-image {
442
- display: block;
443
- max-width: 100%;
444
- max-height: 360px;
445
- border-radius: 8px;
446
- }
447
-
448
- &__content {
449
- width: 100%;
450
- }
451
- }
452
-
453
- [data-vg-filepreview-state="loading"] .preview {
454
- opacity: .72;
455
- }
456
-
457
- [data-vg-filepreview-state="error"] .preview,
458
- [data-vg-filepreview-state="empty"] .preview {
459
- opacity: .9;
460
- }
1
+ /**
2
+ *--------------------------------------------------------------------------
3
+ * Модуль: VGFilePreview
4
+ * Автор: Vegas DEV
5
+ * Лицензия: смотри LICENSE
6
+ *--------------------------------------------------------------------------
7
+ **/
8
+
9
+ @import "../../../utils/scss/functions";
10
+ @import "../../../utils/scss/mixin";
11
+ @import "../../../utils/scss/variables";
12
+ @import "variables";
13
+
14
+ %vg-filepreview-vars {
15
+ @include mix-vars('filepreview', $filepreview-map);
16
+ }
17
+
18
+ @mixin filepreview-trigger($bg) {
19
+ border: 0;
20
+ cursor: pointer;
21
+ border-radius: var(--vg-filepreview-trigger-radius);
22
+ padding: var(--vg-filepreview-trigger-padding);
23
+ font-size: var(--vg-filepreview-trigger-font-size);
24
+ font-weight: var(--vg-filepreview-trigger-font-weight);
25
+ background: $bg;
26
+ color: var(--vg-filepreview-trigger-color);
27
+ }
28
+
29
+ .is-preview-action {
30
+ cursor: pointer;
31
+ }
32
+
33
+ .vg-filepreview-audio-inline {
34
+ @extend %vg-filepreview-vars;
35
+ display: inline-flex;
36
+ align-items: center;
37
+ gap: 8px;
38
+ min-width: 0;
39
+
40
+ &__toggle {
41
+ display: inline-flex;
42
+ align-items: center;
43
+ justify-content: center;
44
+ width: var(--vg-filepreview-audio-inline-toggle-size);
45
+ height: var(--vg-filepreview-audio-inline-toggle-size);
46
+ border: 0;
47
+ border-radius: var(--vg-filepreview-audio-inline-toggle-radius);
48
+ background: var(--vg-filepreview-audio-inline-toggle-bg);
49
+ color: var(--vg-filepreview-audio-inline-toggle-color);
50
+ cursor: pointer;
51
+ padding: 0;
52
+ flex: 0 0 auto;
53
+ }
54
+
55
+ &__icon {
56
+ display: inline-flex;
57
+ align-items: center;
58
+ justify-content: center;
59
+
60
+ svg {
61
+ width: var(--vg-filepreview-audio-inline-icon-size);
62
+ height: var(--vg-filepreview-audio-inline-icon-size);
63
+ }
64
+ }
65
+
66
+ &__name {
67
+ line-height: var(--vg-filepreview-audio-inline-name-line-height);
68
+ white-space: nowrap;
69
+ overflow: hidden;
70
+ text-overflow: ellipsis;
71
+ }
72
+ }
73
+
74
+ .vg-filepreview-image-modal,
75
+ .vg-filepreview-text-modal,
76
+ .vg-filepreview-video-modal,
77
+ .vg-filepreview-zip-modal {
78
+ @extend %vg-filepreview-vars;
79
+
80
+ .vg-modal-content {
81
+ background: var(--vg-filepreview-modal-content-bg);
82
+ color: var(--vg-filepreview-modal-content-color);
83
+ }
84
+
85
+ .vg-btn-close {
86
+ top: var(--vg-filepreview-modal-close-top);
87
+ right: var(--vg-filepreview-modal-close-right);
88
+ }
89
+ }
90
+
91
+ .vg-filepreview-image-modal {
92
+ &__body {
93
+ display: flex;
94
+ flex-direction: column;
95
+ align-items: center;
96
+ justify-content: center;
97
+ gap: var(--vg-filepreview-image-body-gap);
98
+ padding: var(--vg-filepreview-modal-body-padding);
99
+ }
100
+
101
+ &__title {
102
+ color: var(--vg-filepreview-panel-color);
103
+ font-size: var(--vg-filepreview-modal-title-size);
104
+ font-weight: var(--vg-filepreview-modal-title-weight);
105
+ line-height: var(--vg-filepreview-modal-title-line-height);
106
+ width: 100%;
107
+ text-align: center;
108
+ white-space: nowrap;
109
+ overflow: hidden;
110
+ text-overflow: ellipsis;
111
+ }
112
+
113
+ &__img {
114
+ display: block;
115
+ max-width: var(--vg-filepreview-image-img-max-width);
116
+ max-height: var(--vg-filepreview-image-img-max-height);
117
+ width: auto;
118
+ height: auto;
119
+ object-fit: contain;
120
+ border-radius: var(--vg-filepreview-image-img-radius);
121
+ }
122
+ }
123
+
124
+ .vg-filepreview-image-trigger {
125
+ @extend %vg-filepreview-vars;
126
+ @include filepreview-trigger(var(--vg-filepreview-trigger-image-bg));
127
+ }
128
+
129
+ .vg-filepreview-image-thumb {
130
+ @extend %vg-filepreview-vars;
131
+ display: block;
132
+ margin-top: var(--vg-filepreview-image-thumb-margin-top);
133
+ max-width: var(--vg-filepreview-image-thumb-max-width);
134
+ max-height: var(--vg-filepreview-image-thumb-max-height);
135
+ width: auto;
136
+ height: auto;
137
+ border-radius: var(--vg-filepreview-image-thumb-radius);
138
+ cursor: pointer;
139
+ object-fit: cover;
140
+ }
141
+
142
+ .vg-filepreview-text-modal,
143
+ .vg-filepreview-video-modal,
144
+ .vg-filepreview-zip-modal {
145
+ &__body {
146
+ padding: var(--vg-filepreview-modal-body-padding);
147
+ }
148
+
149
+ &__title {
150
+ color: var(--vg-filepreview-panel-color);
151
+ font-size: var(--vg-filepreview-modal-title-size);
152
+ font-weight: var(--vg-filepreview-modal-title-weight);
153
+ line-height: var(--vg-filepreview-modal-title-line-height);
154
+ margin-bottom: var(--vg-filepreview-modal-title-margin-bottom);
155
+ white-space: nowrap;
156
+ overflow: hidden;
157
+ text-overflow: ellipsis;
158
+ }
159
+ }
160
+
161
+ .vg-filepreview-text-modal {
162
+ &__content {
163
+ margin: 0;
164
+ padding: var(--vg-filepreview-text-content-padding);
165
+ max-height: var(--vg-filepreview-text-content-max-height);
166
+ overflow: auto;
167
+ background: var(--vg-filepreview-text-content-bg);
168
+ border-radius: var(--vg-filepreview-text-content-radius);
169
+ font-size: var(--vg-filepreview-text-content-font-size);
170
+ line-height: var(--vg-filepreview-text-content-line-height);
171
+ white-space: pre-wrap;
172
+ word-break: break-word;
173
+
174
+ &.is-markdown {
175
+ white-space: normal;
176
+
177
+ h1,
178
+ h2,
179
+ h3,
180
+ h4,
181
+ h5,
182
+ h6 {
183
+ margin: var(--vg-filepreview-text-markdown-block-margin);
184
+ line-height: var(--vg-filepreview-text-markdown-heading-line-height);
185
+ }
186
+
187
+ p {
188
+ margin: var(--vg-filepreview-text-markdown-block-margin);
189
+ }
190
+
191
+ ul {
192
+ margin: var(--vg-filepreview-text-markdown-list-margin);
193
+ padding: 0;
194
+ }
195
+
196
+ pre {
197
+ margin: var(--vg-filepreview-text-markdown-block-margin);
198
+ padding: var(--vg-filepreview-text-markdown-code-padding);
199
+ border-radius: var(--vg-filepreview-text-markdown-code-radius);
200
+ background: var(--vg-filepreview-text-markdown-code-bg);
201
+ overflow: auto;
202
+ }
203
+
204
+ a {
205
+ color: var(--vg-filepreview-text-markdown-link-color);
206
+ }
207
+ }
208
+ }
209
+ }
210
+
211
+ .vg-filepreview-text-trigger {
212
+ @extend %vg-filepreview-vars;
213
+ @include filepreview-trigger(var(--vg-filepreview-trigger-text-bg));
214
+ }
215
+
216
+ .vg-filepreview-video-modal {
217
+ &__video {
218
+ display: block;
219
+ width: var(--vg-filepreview-video-player-width);
220
+ max-height: var(--vg-filepreview-video-player-max-height);
221
+ height: auto;
222
+ border-radius: var(--vg-filepreview-video-player-radius);
223
+ background: var(--vg-filepreview-video-player-bg);
224
+ }
225
+
226
+ .vg-modal-header {
227
+ display: flex;
228
+ gap: 1rem;
229
+ }
230
+ }
231
+
232
+ .vg-filepreview-video-trigger {
233
+ @extend %vg-filepreview-vars;
234
+ @include filepreview-trigger(var(--vg-filepreview-trigger-video-bg));
235
+ }
236
+
237
+ .vg-filepreview-zip-modal {
238
+ &__content {
239
+ max-height: var(--vg-filepreview-zip-content-max-height);
240
+ overflow: auto;
241
+ background: var(--vg-filepreview-zip-content-bg);
242
+ border-radius: var(--vg-filepreview-zip-content-radius);
243
+ padding: var(--vg-filepreview-zip-content-padding);
244
+ }
245
+
246
+ &__table {
247
+ width: 100%;
248
+ border-collapse: collapse;
249
+ font-size: var(--vg-filepreview-zip-table-font-size);
250
+
251
+ th,
252
+ td {
253
+ padding: var(--vg-filepreview-zip-table-cell-padding);
254
+ border-bottom: var(--vg-filepreview-zip-table-border);
255
+ text-align: left;
256
+ vertical-align: top;
257
+ }
258
+
259
+ td.name {
260
+ word-break: break-word;
261
+ }
262
+ }
263
+
264
+ &__loading,
265
+ &__error,
266
+ &__empty {
267
+ font-size: var(--vg-filepreview-zip-status-font-size);
268
+ }
269
+ }
270
+
271
+ .vg-filepreview-zip-trigger {
272
+ @extend %vg-filepreview-vars;
273
+ @include filepreview-trigger(var(--vg-filepreview-trigger-zip-bg));
274
+ }
275
+
276
+ .vg-filepreview-pdf-trigger,
277
+ .vg-filepreview-office-trigger,
278
+ .vg-filepreview-download-trigger {
279
+ @extend %vg-filepreview-vars;
280
+ @include filepreview-trigger(var(--vg-filepreview-trigger-text-bg));
281
+ display: inline-flex;
282
+ align-items: center;
283
+ gap: 6px;
284
+
285
+ &__icon {
286
+ display: inline-flex;
287
+ align-items: center;
288
+
289
+ svg {
290
+ width: 14px;
291
+ height: 14px;
292
+ }
293
+ }
294
+ }
295
+
296
+ .vg-filepreview-video-modal__navigation {
297
+ display: inline-flex;
298
+ gap: 8px;
299
+ }
300
+
301
+ .vg-filepreview-video-modal__nav-btn {
302
+ border: 0;
303
+ border-radius: 8px;
304
+ padding: 6px 10px;
305
+ font-size: 12px;
306
+ font-weight: 600;
307
+ cursor: pointer;
308
+ background: rgba(255, 255, 255, .12);
309
+ color: var(--vg-filepreview-panel-color);
310
+ }
311
+
312
+ .vg-filepreview-pdf-modal,
313
+ .vg-filepreview-office-modal {
314
+ @extend %vg-filepreview-vars;
315
+
316
+ .vg-modal-content {
317
+ background: var(--vg-filepreview-modal-content-bg);
318
+ color: var(--vg-filepreview-modal-content-color);
319
+ }
320
+
321
+ .vg-btn-close {
322
+ top: var(--vg-filepreview-modal-close-top);
323
+ right: var(--vg-filepreview-modal-close-right);
324
+ }
325
+
326
+ &__body {
327
+ padding: var(--vg-filepreview-modal-body-padding);
328
+ }
329
+
330
+ &__title {
331
+ color: var(--vg-filepreview-panel-color);
332
+ font-size: var(--vg-filepreview-modal-title-size);
333
+ font-weight: var(--vg-filepreview-modal-title-weight);
334
+ line-height: var(--vg-filepreview-modal-title-line-height);
335
+ margin-bottom: var(--vg-filepreview-modal-title-margin-bottom);
336
+ white-space: nowrap;
337
+ overflow: hidden;
338
+ text-overflow: ellipsis;
339
+ }
340
+ }
341
+
342
+ .vg-filepreview-pdf-modal {
343
+ &__toolbar {
344
+ display: flex;
345
+ align-items: center;
346
+ flex-wrap: wrap;
347
+ gap: var(--vg-filepreview-pdf-toolbar-gap);
348
+ margin-bottom: var(--vg-filepreview-pdf-toolbar-margin-bottom);
349
+ }
350
+
351
+ &__btn {
352
+ border: 0;
353
+ border-radius: var(--vg-filepreview-pdf-btn-radius);
354
+ padding: var(--vg-filepreview-pdf-btn-padding);
355
+ font-size: var(--vg-filepreview-pdf-btn-font-size);
356
+ font-weight: var(--vg-filepreview-pdf-btn-font-weight);
357
+ cursor: pointer;
358
+ background: var(--vg-filepreview-pdf-btn-bg);
359
+ color: var(--vg-filepreview-panel-color);
360
+ }
361
+
362
+ &__meta {
363
+ font-size: var(--vg-filepreview-pdf-meta-font-size);
364
+ opacity: var(--vg-filepreview-pdf-meta-opacity);
365
+ }
366
+
367
+ &__frame {
368
+ display: block;
369
+ width: var(--vg-filepreview-pdf-frame-width);
370
+ height: var(--vg-filepreview-pdf-frame-height);
371
+ border: 0;
372
+ border-radius: var(--vg-filepreview-pdf-frame-radius);
373
+ background: var(--vg-filepreview-pdf-frame-bg);
374
+ }
375
+ }
376
+
377
+ .vg-filepreview-office-modal {
378
+ &__frame {
379
+ display: block;
380
+ width: var(--vg-filepreview-office-frame-width);
381
+ height: var(--vg-filepreview-office-frame-height);
382
+ border: 0;
383
+ border-radius: var(--vg-filepreview-office-frame-radius);
384
+ background: var(--vg-filepreview-office-frame-bg);
385
+ }
386
+
387
+ &__footer {
388
+ display: flex;
389
+ align-items: center;
390
+ justify-content: space-between;
391
+ gap: var(--vg-filepreview-office-footer-gap);
392
+ margin-top: var(--vg-filepreview-office-footer-margin-top);
393
+ }
394
+
395
+ &__hint {
396
+ font-size: var(--vg-filepreview-office-hint-font-size);
397
+ opacity: var(--vg-filepreview-office-hint-opacity);
398
+ }
399
+
400
+ &__btn {
401
+ border: 0;
402
+ border-radius: var(--vg-filepreview-office-btn-radius);
403
+ padding: var(--vg-filepreview-office-btn-padding);
404
+ font-size: var(--vg-filepreview-office-btn-font-size);
405
+ font-weight: var(--vg-filepreview-office-btn-font-weight);
406
+ cursor: pointer;
407
+ background: var(--vg-filepreview-office-btn-bg);
408
+ color: var(--vg-filepreview-panel-color);
409
+ }
410
+ }
411
+
412
+ .vg-filepreview-zip-modal {
413
+ &__entry-btn {
414
+ border: 0;
415
+ border-radius: 6px;
416
+ padding: 4px 8px;
417
+ font-size: 11px;
418
+ cursor: pointer;
419
+ background: rgba(255, 255, 255, .12);
420
+ color: var(--vg-filepreview-panel-color);
421
+ }
422
+
423
+ &__entry-preview {
424
+ margin-top: 10px;
425
+ padding-top: 10px;
426
+ border-top: var(--vg-filepreview-zip-table-border);
427
+ }
428
+
429
+ &__entry-preview-title {
430
+ font-size: 12px;
431
+ font-weight: 600;
432
+ margin-bottom: 8px;
433
+ word-break: break-all;
434
+ }
435
+
436
+ &__entry-preview-text {
437
+ margin: 0;
438
+ padding: 10px;
439
+ border-radius: 8px;
440
+ background: rgba(255, 255, 255, .08);
441
+ white-space: pre-wrap;
442
+ word-break: break-word;
443
+ }
444
+
445
+ &__entry-preview-image {
446
+ display: block;
447
+ max-width: 100%;
448
+ max-height: 360px;
449
+ border-radius: 8px;
450
+ }
451
+
452
+ &__content {
453
+ width: 100%;
454
+ }
455
+ }
456
+
457
+ [data-vg-filepreview-state="loading"] .preview {
458
+ opacity: .72;
459
+ }
460
+
461
+ [data-vg-filepreview-state="error"] .preview,
462
+ [data-vg-filepreview-state="empty"] .preview {
463
+ opacity: .9;
464
+ }