vgapp 1.1.2 → 1.1.3

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 (53) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/README.md +19 -16
  3. package/app/langs/en/buttons.json +17 -2
  4. package/app/langs/en/messages.json +36 -1
  5. package/app/langs/ru/buttons.json +17 -2
  6. package/app/langs/ru/messages.json +69 -34
  7. package/app/modules/module-fn.js +15 -9
  8. package/app/modules/vgfilepreview/index.js +3 -0
  9. package/app/modules/vgfilepreview/js/i18n.js +56 -0
  10. package/app/modules/vgfilepreview/js/renderers/image-modal.js +145 -0
  11. package/app/modules/vgfilepreview/js/renderers/image.js +92 -0
  12. package/app/modules/vgfilepreview/js/renderers/index.js +19 -0
  13. package/app/modules/vgfilepreview/js/renderers/office-modal.js +168 -0
  14. package/app/modules/vgfilepreview/js/renderers/office.js +79 -0
  15. package/app/modules/vgfilepreview/js/renderers/pdf-modal.js +260 -0
  16. package/app/modules/vgfilepreview/js/renderers/pdf.js +76 -0
  17. package/app/modules/vgfilepreview/js/renderers/playlist.js +71 -0
  18. package/app/modules/vgfilepreview/js/renderers/text-modal.js +343 -0
  19. package/app/modules/vgfilepreview/js/renderers/text.js +83 -0
  20. package/app/modules/vgfilepreview/js/renderers/video-modal.js +272 -0
  21. package/app/modules/vgfilepreview/js/renderers/video.js +80 -0
  22. package/app/modules/vgfilepreview/js/renderers/zip-modal.js +522 -0
  23. package/app/modules/vgfilepreview/js/renderers/zip.js +89 -0
  24. package/app/modules/vgfilepreview/js/vgfilepreview.js +532 -0
  25. package/app/modules/vgfilepreview/readme.md +68 -0
  26. package/app/modules/vgfilepreview/scss/_variables.scss +113 -0
  27. package/app/modules/vgfilepreview/scss/vgfilepreview.scss +460 -0
  28. package/app/modules/vgfiles/js/base.js +463 -175
  29. package/app/modules/vgfiles/js/droppable.js +260 -260
  30. package/app/modules/vgfiles/js/render.js +153 -153
  31. package/app/modules/vgfiles/js/vgfiles.js +41 -29
  32. package/app/modules/vgfiles/readme.md +116 -217
  33. package/app/modules/vgfiles/scss/_variables.scss +18 -10
  34. package/app/modules/vgfiles/scss/vgfiles.scss +153 -59
  35. package/app/modules/vgformsender/js/vgformsender.js +13 -13
  36. package/app/modules/vgmodal/js/vgmodal.js +12 -0
  37. package/app/modules/vgnav/js/vgnav.js +135 -135
  38. package/app/modules/vgnav/readme.md +67 -67
  39. package/app/modules/vgnestable/README.md +307 -307
  40. package/app/modules/vgnestable/scss/_variables.scss +60 -60
  41. package/app/modules/vgnestable/scss/vgnestable.scss +163 -163
  42. package/app/modules/vgselect/js/vgselect.js +39 -39
  43. package/app/modules/vgselect/scss/vgselect.scss +22 -22
  44. package/app/modules/vgspy/readme.md +28 -28
  45. package/app/utils/js/components/audio-metadata.js +240 -0
  46. package/app/utils/js/components/file-icon.js +109 -0
  47. package/app/utils/js/components/file-preview.js +304 -0
  48. package/app/utils/js/components/sanitize.js +150 -150
  49. package/build/vgapp.css +1 -1
  50. package/build/vgapp.css.map +1 -1
  51. package/index.js +1 -0
  52. package/index.scss +9 -6
  53. package/package.json +1 -1
@@ -0,0 +1,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
+ .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
+ }