vgapp 1.1.6 → 1.1.7

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 +10 -1
  2. package/README.md +48 -48
  3. package/app/langs/en/buttons.json +17 -17
  4. package/app/langs/en/messages.json +36 -36
  5. package/app/langs/ru/buttons.json +17 -17
  6. package/app/langs/ru/messages.json +36 -36
  7. package/app/modules/vgfilepreview/js/i18n.js +56 -56
  8. package/app/modules/vgfilepreview/js/renderers/image-modal.js +145 -145
  9. package/app/modules/vgfilepreview/js/renderers/image.js +92 -92
  10. package/app/modules/vgfilepreview/js/renderers/index.js +19 -19
  11. package/app/modules/vgfilepreview/js/renderers/office-modal.js +168 -168
  12. package/app/modules/vgfilepreview/js/renderers/office.js +79 -79
  13. package/app/modules/vgfilepreview/js/renderers/pdf-modal.js +260 -260
  14. package/app/modules/vgfilepreview/js/renderers/pdf.js +76 -76
  15. package/app/modules/vgfilepreview/js/renderers/playlist.js +71 -71
  16. package/app/modules/vgfilepreview/js/renderers/text-modal.js +343 -343
  17. package/app/modules/vgfilepreview/js/renderers/text.js +83 -83
  18. package/app/modules/vgfilepreview/js/renderers/video-modal.js +272 -272
  19. package/app/modules/vgfilepreview/js/renderers/video.js +80 -80
  20. package/app/modules/vgfilepreview/js/renderers/zip-modal.js +522 -522
  21. package/app/modules/vgfilepreview/js/renderers/zip.js +89 -89
  22. package/app/modules/vgfilepreview/js/vgfilepreview.js +7 -7
  23. package/app/modules/vgfilepreview/readme.md +68 -68
  24. package/app/modules/vgfilepreview/scss/_variables.scss +113 -113
  25. package/app/modules/vgfilepreview/scss/vgfilepreview.scss +464 -464
  26. package/app/modules/vgfiles/js/base.js +26 -26
  27. package/app/modules/vgfiles/js/droppable.js +260 -260
  28. package/app/modules/vgfiles/js/render.js +153 -153
  29. package/app/modules/vgfiles/js/vgfiles.js +41 -41
  30. package/app/modules/vgfiles/readme.md +123 -123
  31. package/app/modules/vgfiles/scss/_variables.scss +18 -18
  32. package/app/modules/vgfiles/scss/vgfiles.scss +148 -148
  33. package/app/modules/vgformsender/js/vgformsender.js +1 -1
  34. package/app/modules/vgmodal/js/vgmodal.drag.js +332 -332
  35. package/app/modules/vgmodal/js/vgmodal.js +33 -33
  36. package/app/modules/vgmodal/js/vgmodal.resize.js +435 -435
  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 -240
  46. package/app/utils/js/components/file-icon.js +109 -109
  47. package/app/utils/js/components/file-preview.js +304 -304
  48. package/app/utils/js/components/sanitize.js +150 -150
  49. package/app/utils/js/components/video-metadata.js +140 -140
  50. package/build/vgapp.css +1 -1
  51. package/build/vgapp.css.map +1 -1
  52. package/build/vgapp.js.map +1 -1
  53. package/index.scss +9 -9
  54. package/package.json +1 -1
package/CHANGELOG.md CHANGED
@@ -1,4 +1,13 @@
1
- # VEGAS-APP 1.1.6 (Апрель, 10, 2026)
1
+ # VEGAS-APP 1.1.7 (Апрель, 13, 2026)
2
+ ## Новые фичи
3
+ * В VGFilePreview добавлена поддержка атрибута `data-name` для явной установки отображаемого имени файла (в приоритете над `data-vg-filepreview-display-name`).
4
+
5
+ ## Изменения
6
+ * Обновлена версия пакета в `package.json`: `1.1.6` -> `1.1.7`.
7
+
8
+ ---
9
+
10
+ # VEGAS-APP 1.1.6 (Апрель, 10, 2026)
2
11
  ## Новые фичи
3
12
  * **VGToast**: добавлены встроенные модули VGToastDrag и VGToastResize с поддержкой параметров drag/resize (enable, threshold, edgeSize, minWidth/minHeight, debug).
4
13
 
package/README.md CHANGED
@@ -1,48 +1,48 @@
1
- # VEGAS APP (VGApp)
2
- [FUNC.TRUE?!](http://func-true.ru)
3
-
4
- VGApp — набор фронтенд‑модулей (UI‑компонентов и утилит) на чистом JavaScript от Vegas Studio.
5
- Проект объединяет типовые элементы интерфейса и сценарии (модалки, табы, формы, загрузка файлов и т.д.) с едиными подходами к инициализации, data‑API, событиям и локализации.
6
-
7
- [![npm](https://img.shields.io/npm/v/vgapp.svg?style=flat-square&maxAge=600)](https://www.npmjs.com/package/vgapp) [![npm](https://img.shields.io/npm/l/vgapp.svg?style=flat-square)]()
8
-
9
- ## Install
10
- ```
11
- npm i vgapp
12
- ```
13
-
14
- ## Что умеет
15
-
16
- ### Общие возможности
17
- - Работает без jQuery, ориентирован на ES6+.
18
- - Поддерживает инициализацию через JS и `data-*` атрибуты.
19
- - События на DOM для интеграции и расширения поведения.
20
- - AJAX‑интеграция в ключевых модулях.
21
- - Локализация интерфейсных текстов.
22
- - Расширяемая архитектура модулей и рендереров.
23
-
24
- ### Основные модули
25
- - `VGAlert` — диалоги подтверждения и уведомления с поддержкой AJAX‑сценариев.
26
- - `VGCollapse` — сворачиваемые секции и аккордеоны с анимацией.
27
- - `VGDropdown` — выпадающие меню с гибким открытием и позиционированием.
28
- - `VGFiles` — загрузка и управление файлами (dropzone, валидация, AJAX, сортировка).
29
- - `VGFilePreview` — предпросмотр файлов разных типов и действия по файлу (preview/download).
30
- - `VGFormSender` — отправка форм (AJAX/нативно), обработка состояний и ответов.
31
- - `VGLawCookie` — баннер cookies с сохранением выбора пользователя.
32
- - `VGLoadMore` — подгрузка контента кнопкой или при прокрутке.
33
- - `VGModal` — базовый модуль модальных окон.
34
- - `VGNav` — навигация и мобильное меню.
35
- - `VGNestable` — drag‑and‑drop вложенных списков с обновлением структуры.
36
- - `VGRollup` — ограничение контента по высоте/элементам с кнопкой разворота.
37
- - `VGSelect` — кастомный select с поиском, мультивыбором и i18n.
38
- - `VGSidebar` — боковые панели с управлением открытием/закрытием.
39
- - `VGSpy` — scroll‑spy для подсветки активных ссылок по секциям.
40
- - `VGTabs` — вкладки с переключением контента и поддержкой URL/hash.
41
- - `VGToast` — всплывающие уведомления со стеком и автозакрытием.
42
-
43
- ## Authors
44
-
45
- [VEGAS STUDIO](https://vegas-dev.com) Russia
46
-
47
- ## License
48
- Is published under the [MIT license](http://www.opensource.org/licenses/mit-license)
1
+ # VEGAS APP (VGApp)
2
+ [FUNC.TRUE?!](http://func-true.ru)
3
+
4
+ VGApp — набор фронтенд‑модулей (UI‑компонентов и утилит) на чистом JavaScript от Vegas Studio.
5
+ Проект объединяет типовые элементы интерфейса и сценарии (модалки, табы, формы, загрузка файлов и т.д.) с едиными подходами к инициализации, data‑API, событиям и локализации.
6
+
7
+ [![npm](https://img.shields.io/npm/v/vgapp.svg?style=flat-square&maxAge=600)](https://www.npmjs.com/package/vgapp) [![npm](https://img.shields.io/npm/l/vgapp.svg?style=flat-square)]()
8
+
9
+ ## Install
10
+ ```
11
+ npm i vgapp
12
+ ```
13
+
14
+ ## Что умеет
15
+
16
+ ### Общие возможности
17
+ - Работает без jQuery, ориентирован на ES6+.
18
+ - Поддерживает инициализацию через JS и `data-*` атрибуты.
19
+ - События на DOM для интеграции и расширения поведения.
20
+ - AJAX‑интеграция в ключевых модулях.
21
+ - Локализация интерфейсных текстов.
22
+ - Расширяемая архитектура модулей и рендереров.
23
+
24
+ ### Основные модули
25
+ - `VGAlert` — диалоги подтверждения и уведомления с поддержкой AJAX‑сценариев.
26
+ - `VGCollapse` — сворачиваемые секции и аккордеоны с анимацией.
27
+ - `VGDropdown` — выпадающие меню с гибким открытием и позиционированием.
28
+ - `VGFiles` — загрузка и управление файлами (dropzone, валидация, AJAX, сортировка).
29
+ - `VGFilePreview` — предпросмотр файлов разных типов и действия по файлу (preview/download).
30
+ - `VGFormSender` — отправка форм (AJAX/нативно), обработка состояний и ответов.
31
+ - `VGLawCookie` — баннер cookies с сохранением выбора пользователя.
32
+ - `VGLoadMore` — подгрузка контента кнопкой или при прокрутке.
33
+ - `VGModal` — базовый модуль модальных окон.
34
+ - `VGNav` — навигация и мобильное меню.
35
+ - `VGNestable` — drag‑and‑drop вложенных списков с обновлением структуры.
36
+ - `VGRollup` — ограничение контента по высоте/элементам с кнопкой разворота.
37
+ - `VGSelect` — кастомный select с поиском, мультивыбором и i18n.
38
+ - `VGSidebar` — боковые панели с управлением открытием/закрытием.
39
+ - `VGSpy` — scroll‑spy для подсветки активных ссылок по секциям.
40
+ - `VGTabs` — вкладки с переключением контента и поддержкой URL/hash.
41
+ - `VGToast` — всплывающие уведомления со стеком и автозакрытием.
42
+
43
+ ## Authors
44
+
45
+ [VEGAS STUDIO](https://vegas-dev.com) Russia
46
+
47
+ ## License
48
+ Is published under the [MIT license](http://www.opensource.org/licenses/mit-license)
@@ -7,22 +7,22 @@
7
7
  "agree": "Yeah, I agree",
8
8
  "cancel": "Cancel"
9
9
  },
10
- "filepreview": {
11
- "open_audio": "Open player",
12
- "open_image": "Open image",
13
- "open_text": "Open text",
14
- "open_video": "Open video",
15
- "open_archive": "Open archive",
16
- "open_pdf": "Open PDF",
17
- "open_office": "Open document",
18
- "download": "Download",
19
- "preview": "Preview",
20
- "prev": "Prev",
21
- "next": "Next",
22
- "zoom_in": "Zoom +",
23
- "zoom_out": "Zoom -"
24
- },
25
- "loadmore": {
10
+ "filepreview": {
11
+ "open_audio": "Open player",
12
+ "open_image": "Open image",
13
+ "open_text": "Open text",
14
+ "open_video": "Open video",
15
+ "open_archive": "Open archive",
16
+ "open_pdf": "Open PDF",
17
+ "open_office": "Open document",
18
+ "download": "Download",
19
+ "preview": "Preview",
20
+ "prev": "Prev",
21
+ "next": "Next",
22
+ "zoom_in": "Zoom +",
23
+ "zoom_out": "Zoom -"
24
+ },
25
+ "loadmore": {
26
26
  "send": "Uploading...",
27
27
  "show": "I'm showing you...",
28
28
  "text-ajax": "Upload more",
@@ -36,4 +36,4 @@
36
36
  "select": {
37
37
  "load-more": "Upload more"
38
38
  }
39
- }
39
+ }
@@ -25,42 +25,42 @@
25
25
  "description": "It will not be possible to return it",
26
26
  "drop-active": "Release to upload"
27
27
  },
28
- "filepreview": {
29
- "audio_title": "Audio file",
30
- "image_title": "Image preview",
31
- "image_thumbnail_alt": "Image thumbnail",
32
- "text_title": "Text preview",
33
- "video_title": "Video preview",
34
- "pdf_title": "PDF preview",
35
- "office_title": "Office preview",
36
- "archive_title": "Archive preview",
37
- "loading_text": "Loading...",
38
- "loading_archive": "Loading archive...",
39
- "loading_entry": "Loading entry...",
40
- "cannot_open_file": "Cannot open file",
41
- "cannot_open_archive": "Cannot open archive",
42
- "cannot_preview_entry": "Cannot preview entry",
43
- "office_fallback": "If embedded preview is unavailable, download the file.",
44
- "invalid_zip": "Invalid ZIP file",
45
- "central_directory_not_found": "Central directory not found",
46
- "archive_buffer_missing": "Archive buffer is missing",
47
- "entry_corrupted": "Archive entry is corrupted",
48
- "compression_not_supported": "Compression method is not supported",
49
- "deflate_not_supported": "Deflate decompression is not supported by the browser",
50
- "unknown_error": "Unknown error",
51
- "empty_file": "(empty file)",
52
- "archive_empty_unsupported": "Archive is empty or unsupported.",
53
- "archive_type_dir": "dir",
54
- "archive_type_file": "file",
55
- "archive_table_name": "Name",
56
- "archive_table_type": "Type",
57
- "archive_table_packed": "Packed",
58
- "archive_table_size": "Size",
59
- "archive_table_preview": "Preview",
60
- "pdf_page": "Page",
61
- "pdf_zoom": "Zoom"
62
- },
63
- "alert": {
28
+ "filepreview": {
29
+ "audio_title": "Audio file",
30
+ "image_title": "Image preview",
31
+ "image_thumbnail_alt": "Image thumbnail",
32
+ "text_title": "Text preview",
33
+ "video_title": "Video preview",
34
+ "pdf_title": "PDF preview",
35
+ "office_title": "Office preview",
36
+ "archive_title": "Archive preview",
37
+ "loading_text": "Loading...",
38
+ "loading_archive": "Loading archive...",
39
+ "loading_entry": "Loading entry...",
40
+ "cannot_open_file": "Cannot open file",
41
+ "cannot_open_archive": "Cannot open archive",
42
+ "cannot_preview_entry": "Cannot preview entry",
43
+ "office_fallback": "If embedded preview is unavailable, download the file.",
44
+ "invalid_zip": "Invalid ZIP file",
45
+ "central_directory_not_found": "Central directory not found",
46
+ "archive_buffer_missing": "Archive buffer is missing",
47
+ "entry_corrupted": "Archive entry is corrupted",
48
+ "compression_not_supported": "Compression method is not supported",
49
+ "deflate_not_supported": "Deflate decompression is not supported by the browser",
50
+ "unknown_error": "Unknown error",
51
+ "empty_file": "(empty file)",
52
+ "archive_empty_unsupported": "Archive is empty or unsupported.",
53
+ "archive_type_dir": "dir",
54
+ "archive_type_file": "file",
55
+ "archive_table_name": "Name",
56
+ "archive_table_type": "Type",
57
+ "archive_table_packed": "Packed",
58
+ "archive_table_size": "Size",
59
+ "archive_table_preview": "Preview",
60
+ "pdf_page": "Page",
61
+ "pdf_zoom": "Zoom"
62
+ },
63
+ "alert": {
64
64
  "title": "Default header",
65
65
  "description": "Description of the current action",
66
66
  "reason": "Alert already open"
@@ -7,22 +7,22 @@
7
7
  "agree": "Да",
8
8
  "cancel": "Нет"
9
9
  },
10
- "filepreview": {
11
- "open_audio": "\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u043f\u043b\u0435\u0435\u0440",
12
- "open_image": "\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435",
13
- "open_text": "\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0442\u0435\u043a\u0441\u0442",
14
- "open_video": "\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0432\u0438\u0434\u0435\u043e",
15
- "open_archive": "\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0430\u0440\u0445\u0438\u0432",
16
- "open_pdf": "\u041e\u0442\u043a\u0440\u044b\u0442\u044c PDF",
17
- "open_office": "\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442",
18
- "download": "\u0421\u043a\u0430\u0447\u0430\u0442\u044c",
19
- "preview": "\u041f\u0440\u0435\u0432\u044c\u044e",
20
- "prev": "\u041d\u0430\u0437\u0430\u0434",
21
- "next": "\u0412\u043f\u0435\u0440\u0435\u0434",
22
- "zoom_in": "\u0423\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c",
23
- "zoom_out": "\u0423\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c"
24
- },
25
- "loadmore": {
10
+ "filepreview": {
11
+ "open_audio": "\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u043f\u043b\u0435\u0435\u0440",
12
+ "open_image": "\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u0435",
13
+ "open_text": "\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0442\u0435\u043a\u0441\u0442",
14
+ "open_video": "\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0432\u0438\u0434\u0435\u043e",
15
+ "open_archive": "\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0430\u0440\u0445\u0438\u0432",
16
+ "open_pdf": "\u041e\u0442\u043a\u0440\u044b\u0442\u044c PDF",
17
+ "open_office": "\u041e\u0442\u043a\u0440\u044b\u0442\u044c \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442",
18
+ "download": "\u0421\u043a\u0430\u0447\u0430\u0442\u044c",
19
+ "preview": "\u041f\u0440\u0435\u0432\u044c\u044e",
20
+ "prev": "\u041d\u0430\u0437\u0430\u0434",
21
+ "next": "\u0412\u043f\u0435\u0440\u0435\u0434",
22
+ "zoom_in": "\u0423\u0432\u0435\u043b\u0438\u0447\u0438\u0442\u044c",
23
+ "zoom_out": "\u0423\u043c\u0435\u043d\u044c\u0448\u0438\u0442\u044c"
24
+ },
25
+ "loadmore": {
26
26
  "send": "Загружаю...",
27
27
  "show": "Показываю...",
28
28
  "text-ajax": "Загрузить еще",
@@ -36,4 +36,4 @@
36
36
  "select": {
37
37
  "load-more": "Загрузить еще"
38
38
  }
39
- }
39
+ }
@@ -25,42 +25,42 @@
25
25
  "description": "Вернуть будет невозможно",
26
26
  "drop-active": "Отпустите, чтобы загрузить"
27
27
  },
28
- "filepreview": {
29
- "audio_title": "\u0410\u0443\u0434\u0438\u043e \u0444\u0430\u0439\u043b",
30
- "image_title": "\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f",
31
- "image_thumbnail_alt": "\u041c\u0438\u043d\u0438\u0430\u0442\u044e\u0440\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f",
32
- "text_title": "\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0442\u0435\u043a\u0441\u0442\u0430",
33
- "video_title": "\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0432\u0438\u0434\u0435\u043e",
34
- "pdf_title": "\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 PDF",
35
- "office_title": "\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430",
36
- "archive_title": "\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0430\u0440\u0445\u0438\u0432\u0430",
37
- "loading_text": "\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430...",
38
- "loading_archive": "\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0430\u0440\u0445\u0438\u0432\u0430...",
39
- "loading_entry": "\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0444\u0430\u0439\u043b\u0430 \u0438\u0437 \u0430\u0440\u0445\u0438\u0432\u0430...",
40
- "cannot_open_file": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0444\u0430\u0439\u043b",
41
- "cannot_open_archive": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0430\u0440\u0445\u0438\u0432",
42
- "cannot_preview_entry": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0432\u043b\u043e\u0436\u0435\u043d\u0438\u0435",
43
- "office_fallback": "\u0415\u0441\u043b\u0438 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u043f\u0440\u0435\u0432\u044c\u044e \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u0441\u043a\u0430\u0447\u0430\u0439\u0442\u0435 \u0444\u0430\u0439\u043b.",
44
- "invalid_zip": "\u041d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 ZIP-\u0444\u0430\u0439\u043b",
45
- "central_directory_not_found": "\u0426\u0435\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d",
46
- "archive_buffer_missing": "\u0411\u0443\u0444\u0435\u0440 \u0430\u0440\u0445\u0438\u0432\u0430 \u043d\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d",
47
- "entry_corrupted": "\u0424\u0430\u0439\u043b \u0432 \u0430\u0440\u0445\u0438\u0432\u0435 \u043f\u043e\u0432\u0440\u0435\u0436\u0434\u0435\u043d",
48
- "compression_not_supported": "\u041c\u0435\u0442\u043e\u0434 \u0441\u0436\u0430\u0442\u0438\u044f \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f",
49
- "deflate_not_supported": "\u0411\u0440\u0430\u0443\u0437\u0435\u0440 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u043a\u0443 Deflate",
50
- "unknown_error": "\u041d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430",
51
- "empty_file": "(\u043f\u0443\u0441\u0442\u043e\u0439 \u0444\u0430\u0439\u043b)",
52
- "archive_empty_unsupported": "\u0410\u0440\u0445\u0438\u0432 \u043f\u0443\u0441\u0442\u043e\u0439 \u0438\u043b\u0438 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f.",
53
- "archive_type_dir": "\u043f\u0430\u043f\u043a\u0430",
54
- "archive_type_file": "\u0444\u0430\u0439\u043b",
55
- "archive_table_name": "\u0418\u043c\u044f",
56
- "archive_table_type": "\u0422\u0438\u043f",
57
- "archive_table_packed": "\u0421\u0436\u0430\u0442\u044b\u0439",
58
- "archive_table_size": "\u0420\u0430\u0437\u043c\u0435\u0440",
59
- "archive_table_preview": "\u041f\u0440\u0435\u0432\u044c\u044e",
60
- "pdf_page": "\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u0430",
61
- "pdf_zoom": "\u041c\u0430\u0441\u0448\u0442\u0430\u0431"
62
- },
63
- "alert": {
28
+ "filepreview": {
29
+ "audio_title": "\u0410\u0443\u0434\u0438\u043e \u0444\u0430\u0439\u043b",
30
+ "image_title": "\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f",
31
+ "image_thumbnail_alt": "\u041c\u0438\u043d\u0438\u0430\u0442\u044e\u0440\u0430 \u0438\u0437\u043e\u0431\u0440\u0430\u0436\u0435\u043d\u0438\u044f",
32
+ "text_title": "\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0442\u0435\u043a\u0441\u0442\u0430",
33
+ "video_title": "\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0432\u0438\u0434\u0435\u043e",
34
+ "pdf_title": "\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 PDF",
35
+ "office_title": "\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0434\u043e\u043a\u0443\u043c\u0435\u043d\u0442\u0430",
36
+ "archive_title": "\u041f\u0440\u043e\u0441\u043c\u043e\u0442\u0440 \u0430\u0440\u0445\u0438\u0432\u0430",
37
+ "loading_text": "\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430...",
38
+ "loading_archive": "\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0430\u0440\u0445\u0438\u0432\u0430...",
39
+ "loading_entry": "\u0417\u0430\u0433\u0440\u0443\u0437\u043a\u0430 \u0444\u0430\u0439\u043b\u0430 \u0438\u0437 \u0430\u0440\u0445\u0438\u0432\u0430...",
40
+ "cannot_open_file": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0444\u0430\u0439\u043b",
41
+ "cannot_open_archive": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0430\u0440\u0445\u0438\u0432",
42
+ "cannot_preview_entry": "\u041d\u0435 \u0443\u0434\u0430\u043b\u043e\u0441\u044c \u043e\u0442\u043a\u0440\u044b\u0442\u044c \u0432\u043b\u043e\u0436\u0435\u043d\u0438\u0435",
43
+ "office_fallback": "\u0415\u0441\u043b\u0438 \u0432\u0441\u0442\u0440\u043e\u0435\u043d\u043d\u044b\u0439 \u043f\u0440\u0435\u0432\u044c\u044e \u043d\u0435 \u0440\u0430\u0431\u043e\u0442\u0430\u0435\u0442, \u0441\u043a\u0430\u0447\u0430\u0439\u0442\u0435 \u0444\u0430\u0439\u043b.",
44
+ "invalid_zip": "\u041d\u0435\u043a\u043e\u0440\u0440\u0435\u043a\u0442\u043d\u044b\u0439 ZIP-\u0444\u0430\u0439\u043b",
45
+ "central_directory_not_found": "\u0426\u0435\u043d\u0442\u0440\u0430\u043b\u044c\u043d\u044b\u0439 \u043a\u0430\u0442\u0430\u043b\u043e\u0433 \u043d\u0435 \u043d\u0430\u0439\u0434\u0435\u043d",
46
+ "archive_buffer_missing": "\u0411\u0443\u0444\u0435\u0440 \u0430\u0440\u0445\u0438\u0432\u0430 \u043d\u0435 \u0434\u043e\u0441\u0442\u0443\u043f\u0435\u043d",
47
+ "entry_corrupted": "\u0424\u0430\u0439\u043b \u0432 \u0430\u0440\u0445\u0438\u0432\u0435 \u043f\u043e\u0432\u0440\u0435\u0436\u0434\u0435\u043d",
48
+ "compression_not_supported": "\u041c\u0435\u0442\u043e\u0434 \u0441\u0436\u0430\u0442\u0438\u044f \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f",
49
+ "deflate_not_supported": "\u0411\u0440\u0430\u0443\u0437\u0435\u0440 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442 \u0440\u0430\u0441\u043f\u0430\u043a\u043e\u0432\u043a\u0443 Deflate",
50
+ "unknown_error": "\u041d\u0435\u0438\u0437\u0432\u0435\u0441\u0442\u043d\u0430\u044f \u043e\u0448\u0438\u0431\u043a\u0430",
51
+ "empty_file": "(\u043f\u0443\u0441\u0442\u043e\u0439 \u0444\u0430\u0439\u043b)",
52
+ "archive_empty_unsupported": "\u0410\u0440\u0445\u0438\u0432 \u043f\u0443\u0441\u0442\u043e\u0439 \u0438\u043b\u0438 \u043d\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f.",
53
+ "archive_type_dir": "\u043f\u0430\u043f\u043a\u0430",
54
+ "archive_type_file": "\u0444\u0430\u0439\u043b",
55
+ "archive_table_name": "\u0418\u043c\u044f",
56
+ "archive_table_type": "\u0422\u0438\u043f",
57
+ "archive_table_packed": "\u0421\u0436\u0430\u0442\u044b\u0439",
58
+ "archive_table_size": "\u0420\u0430\u0437\u043c\u0435\u0440",
59
+ "archive_table_preview": "\u041f\u0440\u0435\u0432\u044c\u044e",
60
+ "pdf_page": "\u0421\u0442\u0440\u0430\u043d\u0438\u0446\u0430",
61
+ "pdf_zoom": "\u041c\u0430\u0441\u0448\u0442\u0430\u0431"
62
+ },
63
+ "alert": {
64
64
  "title": "Заголовок по умолчанию",
65
65
  "description": "Описание текущего действия",
66
66
  "reason": "Алерт уже открыт"
@@ -1,56 +1,56 @@
1
- import { lang_buttons, lang_messages } from "../../../utils/js/components/lang";
2
-
3
- const SUPPORTED_LANGS = new Set(["ru", "en"]);
4
-
5
- const normalizeLang = (value, fallback = "ru") => {
6
- const candidate = String(value || "").trim().toLowerCase();
7
- if (!candidate) {
8
- return fallback;
9
- }
10
-
11
- const short = candidate.split("-")[0];
12
- return SUPPORTED_LANGS.has(short) ? short : fallback;
13
- };
14
-
15
- const resolveFilePreviewLang = (paramsLang, element) => {
16
- const fromParams = normalizeLang(paramsLang, "");
17
- if (fromParams) {
18
- return fromParams;
19
- }
20
-
21
- const fromElement = normalizeLang(element?.getAttribute("lang"), "");
22
- if (fromElement) {
23
- return fromElement;
24
- }
25
-
26
- const fromClosest = normalizeLang(element?.closest("[lang]")?.getAttribute("lang"), "");
27
- if (fromClosest) {
28
- return fromClosest;
29
- }
30
-
31
- const fromHtml = normalizeLang(document?.documentElement?.getAttribute("lang"), "");
32
- if (fromHtml) {
33
- return fromHtml;
34
- }
35
-
36
- const fromNavigator = normalizeLang(window?.navigator?.language, "");
37
- if (fromNavigator) {
38
- return fromNavigator;
39
- }
40
-
41
- return "ru";
42
- };
43
-
44
- const createFilePreviewI18n = (lang = "ru") => {
45
- const normalizedLang = normalizeLang(lang, "ru");
46
- const messages = lang_messages(normalizedLang, "filepreview") || {};
47
- const buttons = lang_buttons(normalizedLang, "filepreview") || {};
48
-
49
- return {
50
- lang: normalizedLang,
51
- message: (key, fallback = "") => messages[key] || fallback,
52
- button: (key, fallback = "") => buttons[key] || fallback
53
- };
54
- };
55
-
56
- export { createFilePreviewI18n, resolveFilePreviewLang };
1
+ import { lang_buttons, lang_messages } from "../../../utils/js/components/lang";
2
+
3
+ const SUPPORTED_LANGS = new Set(["ru", "en"]);
4
+
5
+ const normalizeLang = (value, fallback = "ru") => {
6
+ const candidate = String(value || "").trim().toLowerCase();
7
+ if (!candidate) {
8
+ return fallback;
9
+ }
10
+
11
+ const short = candidate.split("-")[0];
12
+ return SUPPORTED_LANGS.has(short) ? short : fallback;
13
+ };
14
+
15
+ const resolveFilePreviewLang = (paramsLang, element) => {
16
+ const fromParams = normalizeLang(paramsLang, "");
17
+ if (fromParams) {
18
+ return fromParams;
19
+ }
20
+
21
+ const fromElement = normalizeLang(element?.getAttribute("lang"), "");
22
+ if (fromElement) {
23
+ return fromElement;
24
+ }
25
+
26
+ const fromClosest = normalizeLang(element?.closest("[lang]")?.getAttribute("lang"), "");
27
+ if (fromClosest) {
28
+ return fromClosest;
29
+ }
30
+
31
+ const fromHtml = normalizeLang(document?.documentElement?.getAttribute("lang"), "");
32
+ if (fromHtml) {
33
+ return fromHtml;
34
+ }
35
+
36
+ const fromNavigator = normalizeLang(window?.navigator?.language, "");
37
+ if (fromNavigator) {
38
+ return fromNavigator;
39
+ }
40
+
41
+ return "ru";
42
+ };
43
+
44
+ const createFilePreviewI18n = (lang = "ru") => {
45
+ const normalizedLang = normalizeLang(lang, "ru");
46
+ const messages = lang_messages(normalizedLang, "filepreview") || {};
47
+ const buttons = lang_buttons(normalizedLang, "filepreview") || {};
48
+
49
+ return {
50
+ lang: normalizedLang,
51
+ message: (key, fallback = "") => messages[key] || fallback,
52
+ button: (key, fallback = "") => buttons[key] || fallback
53
+ };
54
+ };
55
+
56
+ export { createFilePreviewI18n, resolveFilePreviewLang };