chuijs 4.0.2 → 4.0.4

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 (292) hide show
  1. package/CHANGELOG.md +597 -0
  2. package/README.md +43 -644
  3. package/framework/appLayout/default/chui_app_layout.js +602 -496
  4. package/framework/appLayout/default/global_style.css +288 -97
  5. package/framework/appLayout/default/main_theme_style.css +188 -101
  6. package/framework/components/chui_accordion/accordion.js +38 -35
  7. package/framework/components/chui_accordion/styles.css +13 -12
  8. package/framework/components/chui_action_sheet/action_sheet.js +93 -64
  9. package/framework/components/chui_action_sheet/styles.css +12 -5
  10. package/framework/components/chui_actions_bar/actions_bar.js +338 -0
  11. package/framework/components/chui_actions_bar/styles.css +139 -0
  12. package/framework/components/chui_affix/affix.js +16 -11
  13. package/framework/components/chui_affix/styles.css +5 -0
  14. package/framework/components/chui_alert/alert.js +34 -19
  15. package/framework/components/chui_alert/styles.css +7 -0
  16. package/framework/components/chui_avatar/avatar.js +36 -35
  17. package/framework/components/chui_avatar/styles.css +1 -1
  18. package/framework/components/chui_avatar_group/avatar_group.js +25 -23
  19. package/framework/components/chui_avatar_group/styles.css +1 -1
  20. package/framework/components/chui_backtop/backtop.js +60 -21
  21. package/framework/components/chui_backtop/styles.css +21 -0
  22. package/framework/components/chui_badge/badge.js +30 -28
  23. package/framework/components/chui_badge/styles.css +6 -6
  24. package/framework/components/chui_banner/banner.js +222 -0
  25. package/framework/components/chui_banner/styles.css +170 -0
  26. package/framework/components/chui_breadcrumb/breadcrumb.js +15 -13
  27. package/framework/components/chui_breadcrumb/styles.css +1 -1
  28. package/framework/components/chui_button/button.js +52 -36
  29. package/framework/components/chui_button/styles.css +7 -7
  30. package/framework/components/chui_calendar/calendar.js +18 -16
  31. package/framework/components/chui_card/card.js +52 -32
  32. package/framework/components/chui_card_scroll/card_scroll.js +169 -0
  33. package/framework/components/chui_card_scroll/styles.css +86 -0
  34. package/framework/components/chui_chat/chat.js +140 -79
  35. package/framework/components/chui_chat/styles.css +18 -7
  36. package/framework/components/chui_clipboard_history/clipboard_history.js +53 -39
  37. package/framework/components/chui_clipboard_history/styles.css +13 -9
  38. package/framework/components/chui_code/code.js +10 -10
  39. package/framework/components/chui_code/styles.css +4 -4
  40. package/framework/components/chui_code_editor/code_editor.js +73 -57
  41. package/framework/components/chui_code_editor/styles.css +6 -5
  42. package/framework/components/chui_command_palette/command_palette.js +87 -64
  43. package/framework/components/chui_command_palette/styles.css +5 -5
  44. package/framework/components/chui_console/console.js +13 -13
  45. package/framework/components/chui_console/styles.css +6 -3
  46. package/framework/components/chui_content_block/content_block.js +35 -21
  47. package/framework/components/chui_content_block/styles.css +2 -2
  48. package/framework/components/chui_context_menu/context_menu.js +171 -58
  49. package/framework/components/chui_context_menu/styles.css +82 -8
  50. package/framework/components/chui_custom_element/custom_element.js +25 -18
  51. package/framework/components/chui_data_grid/data_grid.js +633 -471
  52. package/framework/components/chui_data_grid/styles.css +24 -22
  53. package/framework/components/chui_descriptions/descriptions.js +34 -17
  54. package/framework/components/chui_descriptions/styles.css +1 -1
  55. package/framework/components/chui_details/details.js +42 -36
  56. package/framework/components/chui_details/styles.css +12 -11
  57. package/framework/components/chui_diff_viewer/diff_viewer.js +172 -147
  58. package/framework/components/chui_diff_viewer/styles.css +10 -10
  59. package/framework/components/chui_divider/divider.js +19 -17
  60. package/framework/components/chui_divider/styles.css +2 -2
  61. package/framework/components/chui_drawer/drawer.js +63 -38
  62. package/framework/components/chui_drawer/styles.css +18 -4
  63. package/framework/components/chui_drop_zone/drop_zone.js +37 -27
  64. package/framework/components/chui_drop_zone/styles.css +10 -6
  65. package/framework/components/chui_empty_state/empty_state.js +20 -15
  66. package/framework/components/chui_fieldset/fieldset.js +40 -23
  67. package/framework/components/chui_fieldset/styles.css +6 -6
  68. package/framework/components/chui_file_explorer/file_explorer.js +260 -189
  69. package/framework/components/chui_file_explorer/styles.css +8 -7
  70. package/framework/components/chui_form/form.js +40 -28
  71. package/framework/components/chui_form/styles.css +1 -1
  72. package/framework/components/chui_gantt/gantt.js +102 -78
  73. package/framework/components/chui_gantt/styles.css +5 -5
  74. package/framework/components/chui_graphs/graphs.js +376 -239
  75. package/framework/components/chui_graphs/styles.css +27 -6
  76. package/framework/components/chui_hero/hero.js +98 -37
  77. package/framework/components/chui_hero/styles.css +176 -7
  78. package/framework/components/chui_html_block/html_block.js +8 -8
  79. package/framework/components/chui_html_block/styles.css +3 -3
  80. package/framework/components/chui_hx/hx.js +3 -3
  81. package/framework/components/chui_hx/styles.css +13 -6
  82. package/framework/components/chui_icons/icons.js +2115 -2115
  83. package/framework/components/chui_icons/styles.css +4 -3
  84. package/framework/components/chui_inputs/chui_check_box/check_box.js +31 -19
  85. package/framework/components/chui_inputs/chui_check_box/styles.css +30 -21
  86. package/framework/components/chui_inputs/chui_chips/chips.js +141 -70
  87. package/framework/components/chui_inputs/chui_chips/styles.css +32 -7
  88. package/framework/components/chui_inputs/chui_color_picker/color_picker.js +55 -38
  89. package/framework/components/chui_inputs/chui_color_picker/styles.css +7 -7
  90. package/framework/components/chui_inputs/chui_combo_box/combo_box.js +127 -109
  91. package/framework/components/chui_inputs/chui_combo_box/styles.css +23 -21
  92. package/framework/components/chui_inputs/chui_date/date.js +161 -127
  93. package/framework/components/chui_inputs/chui_date/styles.css +20 -19
  94. package/framework/components/chui_inputs/chui_date_range/date_range.js +61 -50
  95. package/framework/components/chui_inputs/chui_date_range/styles.css +3 -3
  96. package/framework/components/chui_inputs/chui_datetime/datetime.js +47 -39
  97. package/framework/components/chui_inputs/chui_datetime/styles.css +3 -3
  98. package/framework/components/chui_inputs/chui_email/email.js +48 -36
  99. package/framework/components/chui_inputs/chui_email/styles.css +11 -11
  100. package/framework/components/chui_inputs/chui_file/file.js +71 -44
  101. package/framework/components/chui_inputs/chui_file/styles.css +23 -19
  102. package/framework/components/chui_inputs/chui_hotkey/hotkey.js +101 -76
  103. package/framework/components/chui_inputs/chui_hotkey/styles.css +6 -6
  104. package/framework/components/chui_inputs/chui_masked/masked.js +83 -72
  105. package/framework/components/chui_inputs/chui_masked/styles.css +5 -5
  106. package/framework/components/chui_inputs/chui_mention/mention.js +87 -40
  107. package/framework/components/chui_inputs/chui_mention/styles.css +14 -8
  108. package/framework/components/chui_inputs/chui_multi_combo_box/multi_combo_box.js +242 -212
  109. package/framework/components/chui_inputs/chui_multi_combo_box/styles.css +23 -15
  110. package/framework/components/chui_inputs/chui_number/number.js +84 -70
  111. package/framework/components/chui_inputs/chui_number/styles.css +13 -13
  112. package/framework/components/chui_inputs/chui_otp/otp.js +71 -62
  113. package/framework/components/chui_inputs/chui_otp/styles.css +5 -5
  114. package/framework/components/chui_inputs/chui_password/password.js +72 -56
  115. package/framework/components/chui_inputs/chui_password/styles.css +15 -15
  116. package/framework/components/chui_inputs/chui_radio_button/radio_button.js +37 -25
  117. package/framework/components/chui_inputs/chui_radio_button/styles.css +22 -22
  118. package/framework/components/chui_inputs/chui_rating/rating.js +54 -50
  119. package/framework/components/chui_inputs/chui_rating/styles.css +3 -3
  120. package/framework/components/chui_inputs/chui_select_box/select_box.js +132 -108
  121. package/framework/components/chui_inputs/chui_select_box/styles.css +21 -21
  122. package/framework/components/chui_inputs/chui_slider/slider.js +41 -38
  123. package/framework/components/chui_inputs/chui_slider/styles.css +7 -5
  124. package/framework/components/chui_inputs/chui_text/styles.css +14 -14
  125. package/framework/components/chui_inputs/chui_text/text.js +69 -52
  126. package/framework/components/chui_inputs/chui_text_area/styles.css +14 -14
  127. package/framework/components/chui_inputs/chui_text_area/text_area.js +59 -36
  128. package/framework/components/chui_inputs/chui_time/styles.css +18 -20
  129. package/framework/components/chui_inputs/chui_time/time.js +71 -49
  130. package/framework/components/chui_inputs/chui_toggle/styles.css +13 -6
  131. package/framework/components/chui_inputs/chui_toggle/toggle.js +27 -27
  132. package/framework/components/chui_json_editor/json_editor.js +137 -127
  133. package/framework/components/chui_json_editor/styles.css +5 -5
  134. package/framework/components/chui_json_viewer/json_viewer.js +133 -114
  135. package/framework/components/chui_json_viewer/styles.css +9 -8
  136. package/framework/components/chui_kanban/kanban.js +78 -60
  137. package/framework/components/chui_kanban/styles.css +8 -4
  138. package/framework/components/chui_kbd/kbd.js +12 -10
  139. package/framework/components/chui_kbd/styles.css +1 -1
  140. package/framework/components/chui_label/label.js +31 -29
  141. package/framework/components/chui_label/styles.css +3 -3
  142. package/framework/components/chui_link/link.js +36 -29
  143. package/framework/components/chui_link/styles.css +11 -4
  144. package/framework/components/chui_list/list.js +42 -38
  145. package/framework/components/chui_list/styles.css +4 -3
  146. package/framework/components/chui_markdown_editor/markdown_editor.js +125 -109
  147. package/framework/components/chui_markdown_editor/styles.css +5 -5
  148. package/framework/components/chui_media/audio.js +457 -364
  149. package/framework/components/chui_media/audio_styles.css +74 -37
  150. package/framework/components/chui_media/image.js +99 -64
  151. package/framework/components/chui_media/image_compare.js +86 -55
  152. package/framework/components/chui_media/image_compare_styles.css +5 -5
  153. package/framework/components/chui_media/image_styles.css +4 -4
  154. package/framework/components/chui_media/video.js +264 -171
  155. package/framework/components/chui_media/video_styles.css +57 -24
  156. package/framework/components/chui_menu_bar/menu_bar.js +67 -65
  157. package/framework/components/chui_menu_bar/styles.css +14 -12
  158. package/framework/components/chui_message_bar/message_bar.js +551 -0
  159. package/framework/components/chui_message_bar/styles.css +248 -0
  160. package/framework/components/chui_modal/modal.js +81 -56
  161. package/framework/components/chui_modal/styles.css +3 -2
  162. package/framework/components/chui_notification/notification.js +107 -69
  163. package/framework/components/chui_notification/notification_download.js +28 -77
  164. package/framework/components/chui_notification/notification_download_card.js +115 -0
  165. package/framework/components/chui_notification/notification_download_progress.css +5 -4
  166. package/framework/components/chui_notification/notification_download_progress.js +73 -105
  167. package/framework/components/chui_notification/notification_update.js +44 -37
  168. package/framework/components/chui_notification/status_plate.css +3 -3
  169. package/framework/components/chui_notification/status_plate.js +2 -2
  170. package/framework/components/chui_notification/styles.css +6 -1
  171. package/framework/components/chui_notification/styles_download.css +2 -2
  172. package/framework/components/chui_notification/styles_update.css +3 -3
  173. package/framework/components/chui_org_chart/org_chart.js +101 -62
  174. package/framework/components/chui_org_chart/styles.css +2 -2
  175. package/framework/components/chui_pagination/pagination.js +65 -30
  176. package/framework/components/chui_pagination/styles.css +1 -1
  177. package/framework/components/chui_paragraph/paragraph.js +2 -2
  178. package/framework/components/chui_paragraph/styles.css +3 -3
  179. package/framework/components/chui_popover/popover.js +77 -50
  180. package/framework/components/chui_popover/styles.css +1 -1
  181. package/framework/components/chui_popups/popups.js +210 -181
  182. package/framework/components/chui_popups/styles.css +7 -7
  183. package/framework/components/chui_print_button/print_button.js +48 -33
  184. package/framework/components/chui_progress_bar/progress_bar.js +49 -19
  185. package/framework/components/chui_progress_bar/styles.css +6 -6
  186. package/framework/components/chui_progress_ring/progress_ring.js +32 -30
  187. package/framework/components/chui_progress_ring/styles.css +1 -1
  188. package/framework/components/chui_qrcode/qrcode.js +85 -41
  189. package/framework/components/chui_query_builder/query_builder.js +263 -170
  190. package/framework/components/chui_query_builder/styles.css +4 -4
  191. package/framework/components/chui_radio_group/radio_group.js +36 -26
  192. package/framework/components/chui_radio_group/styles.css +2 -2
  193. package/framework/components/chui_result/result.js +41 -31
  194. package/framework/components/chui_result/styles.css +3 -3
  195. package/framework/components/chui_scheduler/scheduler.js +126 -104
  196. package/framework/components/chui_scheduler/styles.css +11 -7
  197. package/framework/components/chui_screen_spinner/screen_spinner.js +167 -0
  198. package/framework/components/chui_screen_spinner/styles.css +49 -0
  199. package/framework/components/chui_segmented_control/segmented_control.js +90 -27
  200. package/framework/components/chui_segmented_control/styles.css +32 -6
  201. package/framework/components/chui_settings/settings.js +160 -87
  202. package/framework/components/chui_settings/styles.css +4 -4
  203. package/framework/components/chui_shortcut_help/shortcut_help.js +82 -61
  204. package/framework/components/chui_sidebar_nav/sidebar_nav.js +132 -53
  205. package/framework/components/chui_sidebar_nav/styles.css +9 -3
  206. package/framework/components/chui_skeleton/skeleton.js +29 -24
  207. package/framework/components/chui_slideshow/slideshow.js +122 -103
  208. package/framework/components/chui_slideshow/styles.css +22 -16
  209. package/framework/components/chui_spinner/spinner.js +17 -17
  210. package/framework/components/chui_spinner/styles.css +0 -1
  211. package/framework/components/chui_split_button/split_button.js +53 -30
  212. package/framework/components/chui_split_button/styles.css +22 -6
  213. package/framework/components/chui_splitter/splitter.js +46 -39
  214. package/framework/components/chui_splitter/styles.css +2 -2
  215. package/framework/components/chui_statistic/statistic.js +111 -84
  216. package/framework/components/chui_status_bar/status_bar.js +11 -9
  217. package/framework/components/chui_status_bar/styles.css +2 -2
  218. package/framework/components/chui_stepper/stepper.js +230 -54
  219. package/framework/components/chui_stepper/styles.css +79 -14
  220. package/framework/components/chui_sticky_bar/sticky_bar.js +53 -17
  221. package/framework/components/chui_sticky_bar/styles.css +11 -7
  222. package/framework/components/chui_tabs/chui_tabs.js +100 -46
  223. package/framework/components/chui_tabs/styles.css +43 -15
  224. package/framework/components/chui_text_editor/styles.css +24 -23
  225. package/framework/components/chui_text_editor/text_editor.js +103 -79
  226. package/framework/components/chui_text_editor/text_editor_panel.js +428 -367
  227. package/framework/components/chui_theme_toggle/theme_toggle.js +46 -25
  228. package/framework/components/chui_timeline/styles.css +3 -1
  229. package/framework/components/chui_timeline/timeline.js +14 -12
  230. package/framework/components/chui_toast_queue/styles.css +11 -11
  231. package/framework/components/chui_toast_queue/toast_queue.js +82 -73
  232. package/framework/components/chui_toolbar/styles.css +2 -2
  233. package/framework/components/chui_toolbar/toolbar.js +20 -13
  234. package/framework/components/chui_tooltip/styles.css +2 -2
  235. package/framework/components/chui_tooltip/tooltip.js +40 -27
  236. package/framework/components/chui_tour/styles.css +12 -7
  237. package/framework/components/chui_tour/tour.js +132 -98
  238. package/framework/components/chui_transfer/styles.css +8 -7
  239. package/framework/components/chui_transfer/transfer.js +143 -123
  240. package/framework/components/chui_tree_table/styles.css +4 -4
  241. package/framework/components/chui_tree_table/tree_table.js +88 -74
  242. package/framework/components/chui_tree_view/styles.css +14 -10
  243. package/framework/components/chui_tree_view/tree_view.js +298 -253
  244. package/framework/components/chui_user_bar/styles.css +145 -0
  245. package/framework/components/chui_user_bar/user_bar.js +402 -0
  246. package/framework/components/chui_user_list_bar/styles.css +173 -0
  247. package/framework/components/chui_user_list_bar/user_list_bar.js +485 -0
  248. package/framework/components/chui_watermark/watermark.js +41 -33
  249. package/framework/components/chui_webview/styles.css +2 -2
  250. package/framework/components/chui_webview/webview.js +64 -52
  251. package/framework/components/chui_write_bar/styles.css +172 -0
  252. package/framework/components/chui_write_bar/write_bar.js +320 -0
  253. package/framework/main_window.js +1234 -0
  254. package/framework/modules/chui_a11y/chui_a11y.js +153 -123
  255. package/framework/modules/chui_animations/animations.js +105 -43
  256. package/framework/modules/chui_animations/motion.js +120 -0
  257. package/framework/modules/chui_animations/styles.css +37 -4
  258. package/framework/modules/chui_bridge/preload.js +36 -25
  259. package/framework/modules/chui_functions.js +69 -63
  260. package/framework/modules/chui_highlight/chui_highlight.js +25 -22
  261. package/framework/modules/chui_highlight/styles.css +13 -10
  262. package/framework/modules/chui_i18n/chui_i18n.js +12 -10
  263. package/framework/modules/chui_i18n/locales/a11y.js +5 -5
  264. package/framework/modules/chui_i18n/locales/app_layout.js +5 -5
  265. package/framework/modules/chui_i18n/locales/calendar.js +3 -3
  266. package/framework/modules/chui_i18n/locales/common.js +3 -3
  267. package/framework/modules/chui_i18n/locales/data.js +36 -26
  268. package/framework/modules/chui_i18n/locales/editors.js +40 -13
  269. package/framework/modules/chui_i18n/locales/feedback.js +65 -3
  270. package/framework/modules/chui_i18n/locales/forms.js +8 -8
  271. package/framework/modules/chui_i18n/locales/graphics.js +8 -8
  272. package/framework/modules/chui_i18n/locales/media.js +4 -4
  273. package/framework/modules/chui_i18n/locales/navigation.js +12 -8
  274. package/framework/modules/chui_i18n/locales/validate.js +3 -3
  275. package/framework/modules/chui_json/chui_json.js +11 -11
  276. package/framework/modules/chui_layout/chui_layout.js +12 -10
  277. package/framework/modules/chui_logger/chui_logger.js +47 -28
  278. package/framework/modules/chui_page/page.js +39 -33
  279. package/framework/modules/chui_palette/palette.js +61 -0
  280. package/framework/modules/chui_qr/chui_qr.js +179 -88
  281. package/framework/modules/chui_scrollbar/chui_scrollbar.js +79 -68
  282. package/framework/modules/chui_scrollbar/styles.css +4 -2
  283. package/framework/modules/chui_services/chui_channels.js +27 -13
  284. package/framework/modules/chui_services/chui_services.js +47 -39
  285. package/framework/modules/chui_services/desktop.js +108 -101
  286. package/framework/modules/chui_sortable/chui_sortable.js +33 -28
  287. package/framework/modules/chui_validate/chui_validate.js +10 -7
  288. package/framework/tray_bar/chui_menu_items.js +136 -46
  289. package/index.d.ts +5046 -0
  290. package/index.js +199 -1254
  291. package/package.json +81 -68
  292. package/framework/components/telegram_bot/chui_telegram_bot.js +0 -184
@@ -69,7 +69,12 @@ module.exports = {
69
69
  "data.orgChartEmpty": "В схеме нет сотрудников",
70
70
  "data.orgChartExpanded": "Развёрнуто: {name}, подчинённых {count}",
71
71
  "data.orgChartCollapsed": "Свёрнуто: {name}, скрыто подчинённых {count}",
72
- "data.orgChartReports": {one: "{count} подчинённый", few: "{count} подчинённых", many: "{count} подчинённых", other: "{count} подчинённых"},
72
+ "data.orgChartReports": {
73
+ one: "{count} подчинённый",
74
+ few: "{count} подчинённых",
75
+ many: "{count} подчинённых",
76
+ other: "{count} подчинённых",
77
+ },
73
78
 
74
79
  "transfer.title": "Перенос значений",
75
80
  "transfer.available": "Доступно",
@@ -154,7 +159,12 @@ module.exports = {
154
159
  "queryBuilder.yes": "Да",
155
160
  "queryBuilder.no": "Нет",
156
161
  "queryBuilder.unset": "Не выбрано",
157
- "queryBuilder.rulesCount": {one: "{count} условие", few: "{count} условия", many: "{count} условий", other: "{count} условия"},
162
+ "queryBuilder.rulesCount": {
163
+ one: "{count} условие",
164
+ few: "{count} условия",
165
+ many: "{count} условий",
166
+ other: "{count} условия",
167
+ },
158
168
  "queryBuilder.operator.equals": "равно",
159
169
  "queryBuilder.operator.notEquals": "не равно",
160
170
  "queryBuilder.operator.contains": "содержит",
@@ -166,7 +176,7 @@ module.exports = {
166
176
  "queryBuilder.operator.less": "меньше",
167
177
  "queryBuilder.operator.lessOrEqual": "меньше или равно",
168
178
  "queryBuilder.operator.isEmpty": "пусто",
169
- "queryBuilder.operator.isNotEmpty": "не пусто"
179
+ "queryBuilder.operator.isNotEmpty": "не пусто",
170
180
  },
171
181
  en: {
172
182
  "data.empty": "No data",
@@ -199,28 +209,28 @@ module.exports = {
199
209
  "dataGrid.groupTitle": "{key} — rows: {count}",
200
210
  "dataGrid.columns": "Columns",
201
211
  "dataGrid.showAll": "Show all",
202
- "dataGrid.columnMove": "Moving column \"{title}\"",
203
- "dataGrid.columnPlace": "Column \"{title}\" is at position {place} of {total}",
212
+ "dataGrid.columnMove": 'Moving column "{title}"',
213
+ "dataGrid.columnPlace": 'Column "{title}" is at position {place} of {total}',
204
214
  "dataGrid.emptyValue": "empty",
205
215
  "dataGrid.yes": "yes",
206
216
  "dataGrid.no": "no",
207
- "dataGrid.editStart": "Editing: \"{title}\", row {row}",
208
- "dataGrid.enterNumber": "\"{title}\": enter a number",
209
- "dataGrid.notNumber": "\"{title}\": \"{text}\" is not a number",
210
- "dataGrid.editCanceled": "\"{title}\": editing canceled",
217
+ "dataGrid.editStart": 'Editing: "{title}", row {row}',
218
+ "dataGrid.enterNumber": '"{title}": enter a number',
219
+ "dataGrid.notNumber": '"{title}": "{text}" is not a number',
220
+ "dataGrid.editCanceled": '"{title}": editing canceled',
211
221
  "dataGrid.editCanceledReason": "{message} — editing canceled",
212
- "dataGrid.saved": "Saved: \"{title}\" = {value}",
222
+ "dataGrid.saved": 'Saved: "{title}" = {value}',
213
223
  "dataGrid.loadedRows": "Rows loaded: {shown}",
214
224
  "dataGrid.loadedRowsOf": "Rows loaded: {shown} of {total}",
215
- "dataGrid.filterActive": "filter \"{filter}\"",
216
- "dataGrid.filterSummary": "Filter \"{filter}\": {shown} of {total}",
225
+ "dataGrid.filterActive": 'filter "{filter}"',
226
+ "dataGrid.filterSummary": 'Filter "{filter}": {shown} of {total}',
217
227
  "dataGrid.rowsSummary": "Rows: {shown}",
218
228
  "dataGrid.groupsSummary": "groups: {count}",
219
- "dataGrid.sortSummary": "sorted by \"{title}\" {direction}",
229
+ "dataGrid.sortSummary": 'sorted by "{title}" {direction}',
220
230
 
221
- "table.sortBy": "Sort by \"{head}\"",
231
+ "table.sortBy": 'Sort by "{head}"',
222
232
  "table.filter": "Filter",
223
- "table.filterBy": "Filter by \"{title}\"",
233
+ "table.filterBy": 'Filter by "{title}"',
224
234
  "table.filterFound": "Filter: {found} of {total} found",
225
235
  "table.selectedRows": "Rows selected: {count}",
226
236
 
@@ -230,23 +240,23 @@ module.exports = {
230
240
  "data.orgChartEmpty": "No employees in the chart",
231
241
  "data.orgChartExpanded": "Expanded: {name}, {count} reports",
232
242
  "data.orgChartCollapsed": "Collapsed: {name}, {count} reports hidden",
233
- "data.orgChartReports": {one: "{count} report", other: "{count} reports"},
243
+ "data.orgChartReports": { one: "{count} report", other: "{count} reports" },
234
244
 
235
245
  "transfer.title": "Transfer values",
236
246
  "transfer.available": "Available",
237
247
  "transfer.chosen": "Selected",
238
- "transfer.addMarked": "Add marked to \"{title}\"",
239
- "transfer.removeMarked": "Remove marked from \"{title}\"",
248
+ "transfer.addMarked": 'Add marked to "{title}"',
249
+ "transfer.removeMarked": 'Remove marked from "{title}"',
240
250
  "transfer.nothingChosen": "Nothing selected",
241
251
  "transfer.nothingMarked": "Nothing marked",
242
252
  "transfer.search": "Search",
243
- "transfer.searchIn": "Search in \"{title}\"",
244
- "transfer.clearSearchIn": "Clear search in \"{title}\"",
253
+ "transfer.searchIn": 'Search in "{title}"',
254
+ "transfer.clearSearchIn": 'Clear search in "{title}"',
245
255
  "transfer.selectMin": "Select at least {min}",
246
256
  "transfer.selectMax": "Select at most {max}",
247
257
  "transfer.maxReached": "You can select at most {max}",
248
- "transfer.emptyList": "The list \"{title}\" is empty",
249
- "transfer.moved": "Moved to \"{title}\": {titles}. Selected {count} of {total}",
258
+ "transfer.emptyList": 'The list "{title}" is empty',
259
+ "transfer.moved": 'Moved to "{title}": {titles}. Selected {count} of {total}',
250
260
 
251
261
  "treeTable.label": "Tree table",
252
262
  "treeTable.shownRows": "Rows shown: {shown} of {total}",
@@ -315,7 +325,7 @@ module.exports = {
315
325
  "queryBuilder.yes": "Yes",
316
326
  "queryBuilder.no": "No",
317
327
  "queryBuilder.unset": "Not selected",
318
- "queryBuilder.rulesCount": {one: "{count} condition", other: "{count} conditions"},
328
+ "queryBuilder.rulesCount": { one: "{count} condition", other: "{count} conditions" },
319
329
  "queryBuilder.operator.equals": "equals",
320
330
  "queryBuilder.operator.notEquals": "does not equal",
321
331
  "queryBuilder.operator.contains": "contains",
@@ -327,6 +337,6 @@ module.exports = {
327
337
  "queryBuilder.operator.less": "less than",
328
338
  "queryBuilder.operator.lessOrEqual": "less than or equal",
329
339
  "queryBuilder.operator.isEmpty": "is empty",
330
- "queryBuilder.operator.isNotEmpty": "is not empty"
331
- }
332
- };
340
+ "queryBuilder.operator.isNotEmpty": "is not empty",
341
+ },
342
+ };
@@ -104,10 +104,30 @@ module.exports = {
104
104
  "jsonViewer.dataTree": "{name}: дерево данных",
105
105
  "jsonViewer.expanded": "Развёрнуто: {name}",
106
106
  "jsonViewer.collapsed": "Свёрнуто: {name}",
107
- "jsonViewer.elements": {one: "{count} элемент", few: "{count} элемента", many: "{count} элементов", other: "{count} элемента"},
108
- "jsonViewer.properties": {one: "{count} свойство", few: "{count} свойства", many: "{count} свойств", other: "{count} свойства"},
109
- "jsonViewer.found": {one: "Найден {count} узел", few: "Найдено {count} узла", many: "Найдено {count} узлов", other: "Найдено {count} узла"},
110
- "jsonViewer.visible": {one: "Виден {count} узел", few: "Видно {count} узла", many: "Видно {count} узлов", other: "Видно {count} узла"},
107
+ "jsonViewer.elements": {
108
+ one: "{count} элемент",
109
+ few: "{count} элемента",
110
+ many: "{count} элементов",
111
+ other: "{count} элемента",
112
+ },
113
+ "jsonViewer.properties": {
114
+ one: "{count} свойство",
115
+ few: "{count} свойства",
116
+ many: "{count} свойств",
117
+ other: "{count} свойства",
118
+ },
119
+ "jsonViewer.found": {
120
+ one: "Найден {count} узел",
121
+ few: "Найдено {count} узла",
122
+ many: "Найдено {count} узлов",
123
+ other: "Найдено {count} узла",
124
+ },
125
+ "jsonViewer.visible": {
126
+ one: "Виден {count} узел",
127
+ few: "Видно {count} узла",
128
+ many: "Видно {count} узлов",
129
+ other: "Видно {count} узла",
130
+ },
111
131
 
112
132
  "diffViewer.title": "Сравнение текста",
113
133
  "diffViewer.before": "Было",
@@ -119,8 +139,14 @@ module.exports = {
119
139
  "diffViewer.lineAdded": "Добавлена строка {number}",
120
140
  "diffViewer.lineRemoved": "Удалена строка {number}",
121
141
  "diffViewer.lineChanged": "Заменена строка {number}",
122
- "diffViewer.showLines": {one: "Показать {count} строку", few: "Показать {count} строки", many: "Показать {count} строк", other: "Показать {count} строки"},
123
- "diffViewer.summary": "Изменений: {groups}, добавлено строк: {added}, удалено строк: {removed}, заменено строк: {changed}"
142
+ "diffViewer.showLines": {
143
+ one: "Показать {count} строку",
144
+ few: "Показать {count} строки",
145
+ many: "Показать {count} строк",
146
+ other: "Показать {count} строки",
147
+ },
148
+ "diffViewer.summary":
149
+ "Изменений: {groups}, добавлено строк: {added}, удалено строк: {removed}, заменено строк: {changed}",
124
150
  },
125
151
  en: {
126
152
  "editor.formatting": "Formatting",
@@ -219,10 +245,10 @@ module.exports = {
219
245
  "jsonViewer.dataTree": "{name}: data tree",
220
246
  "jsonViewer.expanded": "Expanded: {name}",
221
247
  "jsonViewer.collapsed": "Collapsed: {name}",
222
- "jsonViewer.elements": {one: "{count} element", other: "{count} elements"},
223
- "jsonViewer.properties": {one: "{count} property", other: "{count} properties"},
224
- "jsonViewer.found": {one: "{count} node found", other: "{count} nodes found"},
225
- "jsonViewer.visible": {one: "{count} node visible", other: "{count} nodes visible"},
248
+ "jsonViewer.elements": { one: "{count} element", other: "{count} elements" },
249
+ "jsonViewer.properties": { one: "{count} property", other: "{count} properties" },
250
+ "jsonViewer.found": { one: "{count} node found", other: "{count} nodes found" },
251
+ "jsonViewer.visible": { one: "{count} node visible", other: "{count} nodes visible" },
226
252
 
227
253
  "diffViewer.title": "Text comparison",
228
254
  "diffViewer.before": "Before",
@@ -234,7 +260,8 @@ module.exports = {
234
260
  "diffViewer.lineAdded": "Line {number} added",
235
261
  "diffViewer.lineRemoved": "Line {number} removed",
236
262
  "diffViewer.lineChanged": "Line {number} changed",
237
- "diffViewer.showLines": {one: "Show {count} line", other: "Show {count} lines"},
238
- "diffViewer.summary": "Changes: {groups}, lines added: {added}, lines removed: {removed}, lines changed: {changed}"
239
- }
263
+ "diffViewer.showLines": { one: "Show {count} line", other: "Show {count} lines" },
264
+ "diffViewer.summary":
265
+ "Changes: {groups}, lines added: {added}, lines removed: {removed}, lines changed: {changed}",
266
+ },
240
267
  };
@@ -27,6 +27,37 @@ module.exports = {
27
27
  "feedback.chatRead": "Прочитано",
28
28
  "feedback.chatFailed": "Не отправлено",
29
29
 
30
+ "feedback.writeBar": "Панель ввода",
31
+ "feedback.writeBarField": "Текст сообщения",
32
+ "feedback.writeBarPlaceholder": "Напишите сообщение…",
33
+ "feedback.writeBarSend": "Отправить",
34
+ "feedback.writeBarButton": "Действие панели ввода",
35
+ "feedback.writeBarBadge": "выбрано: {value}",
36
+ "feedback.writeBarHint": "Enter — отправить, Shift+Enter — новая строка",
37
+ "feedback.messageBar": "Сообщения",
38
+ "feedback.messageBarEmpty": "Сообщений пока нет",
39
+ "feedback.messageBarNew": "Новые сообщения",
40
+ "feedback.messageBarNewCount": "Новые сообщения: {value}",
41
+ "feedback.messageBarDown": "К низу",
42
+ "feedback.userBar": "Пользователь",
43
+ "feedback.userBarBack": "Назад",
44
+ "feedback.userBarMore": "Ещё",
45
+ "feedback.userBarAction": "Действие",
46
+ "feedback.userBarBadge": "{value}",
47
+ "feedback.userBarOpen": "Открыть профиль: {name}",
48
+ "feedback.userListBar": "Разговоры",
49
+ "feedback.userListBarSearch": "Поиск разговоров",
50
+ "feedback.userListBarEmpty": "Разговоров нет",
51
+ "feedback.userListBarNoMatch": "Ничего не найдено",
52
+ "feedback.userListBarUnread": "непрочитанных: {value}",
53
+ "feedback.actionsBar": "Действия",
54
+ "feedback.actionsBarButton": "Действие",
55
+ "feedback.actionsBarBadge": "{value}",
56
+ "feedback.banner": "Объявление",
57
+ "feedback.cardScroll": "Карточки",
58
+ "feedback.cardScrollPrev": "Назад",
59
+ "feedback.cardScrollNext": "Вперёд",
60
+
30
61
  "feedback.centerTitle": "Уведомления",
31
62
  "feedback.centerEmpty": "Уведомлений нет",
32
63
  "feedback.centerNew": "Новое уведомление: {title}",
@@ -63,7 +94,7 @@ module.exports = {
63
94
  "feedback.previousSlide": "Предыдущий слайд",
64
95
  "feedback.slideshowControls": "Управление слайд-шоу",
65
96
  "feedback.autoplayStart": "Запустить автопрокрутку",
66
- "feedback.autoplayPause": "Пауза автопрокрутки"
97
+ "feedback.autoplayPause": "Пауза автопрокрутки",
67
98
  },
68
99
  en: {
69
100
  "feedback.loading": "Loading",
@@ -89,6 +120,37 @@ module.exports = {
89
120
  "feedback.chatRead": "Read",
90
121
  "feedback.chatFailed": "Not sent",
91
122
 
123
+ "feedback.writeBar": "Write bar",
124
+ "feedback.writeBarField": "Message text",
125
+ "feedback.writeBarPlaceholder": "Write a message…",
126
+ "feedback.writeBarSend": "Send",
127
+ "feedback.writeBarButton": "Write bar action",
128
+ "feedback.writeBarBadge": "selected: {value}",
129
+ "feedback.writeBarHint": "Enter to send, Shift+Enter for a new line",
130
+ "feedback.messageBar": "Messages",
131
+ "feedback.messageBarEmpty": "No messages yet",
132
+ "feedback.messageBarNew": "New messages",
133
+ "feedback.messageBarNewCount": "New messages: {value}",
134
+ "feedback.messageBarDown": "Go to bottom",
135
+ "feedback.userBar": "User",
136
+ "feedback.userBarBack": "Back",
137
+ "feedback.userBarMore": "More",
138
+ "feedback.userBarAction": "Action",
139
+ "feedback.userBarBadge": "{value}",
140
+ "feedback.userBarOpen": "Open profile: {name}",
141
+ "feedback.userListBar": "Conversations",
142
+ "feedback.userListBarSearch": "Search conversations",
143
+ "feedback.userListBarEmpty": "No conversations",
144
+ "feedback.userListBarNoMatch": "Nothing found",
145
+ "feedback.userListBarUnread": "unread: {value}",
146
+ "feedback.actionsBar": "Actions",
147
+ "feedback.actionsBarButton": "Action",
148
+ "feedback.actionsBarBadge": "{value}",
149
+ "feedback.banner": "Announcement",
150
+ "feedback.cardScroll": "Cards",
151
+ "feedback.cardScrollPrev": "Previous",
152
+ "feedback.cardScrollNext": "Next",
153
+
92
154
  "feedback.centerTitle": "Notifications",
93
155
  "feedback.centerEmpty": "No notifications",
94
156
  "feedback.centerNew": "New notification: {title}",
@@ -125,6 +187,6 @@ module.exports = {
125
187
  "feedback.previousSlide": "Previous slide",
126
188
  "feedback.slideshowControls": "Slideshow controls",
127
189
  "feedback.autoplayStart": "Start autoplay",
128
- "feedback.autoplayPause": "Pause autoplay"
129
- }
190
+ "feedback.autoplayPause": "Pause autoplay",
191
+ },
130
192
  };
@@ -70,7 +70,7 @@ module.exports = {
70
70
  "forms.mentionLabel": "Упоминание",
71
71
  "forms.mentionOptions": "Подсказки",
72
72
  "forms.mentionHint": "Введите {trigger} — появятся подсказки",
73
- "forms.mentionInserted": "Добавлено: {value}"
73
+ "forms.mentionInserted": "Добавлено: {value}",
74
74
  },
75
75
  en: {
76
76
  "forms.sliderValue": "Value",
@@ -114,14 +114,14 @@ module.exports = {
114
114
  "forms.chipsInputLabel": "Tags field",
115
115
  "forms.chipsPlaceholder": "Add a tag",
116
116
  "forms.chipsHint": "Enter or comma adds a tag, Backspace on an empty field removes the last one",
117
- "forms.chipsAdded": "Tag \"{value}\" added. Tags total: {count}",
118
- "forms.chipsRemoved": "Tag \"{value}\" removed. Tags total: {count}",
117
+ "forms.chipsAdded": 'Tag "{value}" added. Tags total: {count}',
118
+ "forms.chipsRemoved": 'Tag "{value}" removed. Tags total: {count}',
119
119
  "forms.chipsCleared": "All tags removed",
120
- "forms.chipsRemove": "Remove \"{value}\"",
120
+ "forms.chipsRemove": 'Remove "{value}"',
121
121
  "forms.chipsLimitPlaceholder": "Limit: {count}",
122
122
  "forms.chipsLimitReached": "Limit reached: {count} tags",
123
- "forms.chipsDuplicate": "Tag \"{value}\" is already added",
124
- "forms.chipsNotSuggested": "\"{value}\" is not among the suggestions",
123
+ "forms.chipsDuplicate": 'Tag "{value}" is already added',
124
+ "forms.chipsNotSuggested": '"{value}" is not among the suggestions',
125
125
  "forms.chipsMore": "Tags that did not fit on the line: {count}",
126
126
  "forms.multiComboMore": "Selected values that did not fit on the line: {count}",
127
127
 
@@ -139,6 +139,6 @@ module.exports = {
139
139
  "forms.mentionLabel": "Mention",
140
140
  "forms.mentionOptions": "Suggestions",
141
141
  "forms.mentionHint": "Type {trigger} to see suggestions",
142
- "forms.mentionInserted": "Added: {value}"
143
- }
142
+ "forms.mentionInserted": "Added: {value}",
143
+ },
144
144
  };
@@ -68,7 +68,7 @@ module.exports = {
68
68
  "graphics.qrModeMismatch": "Режим «{mode}» не подходит для этого текста",
69
69
  "graphics.qrMode.numeric": "цифры",
70
70
  "graphics.qrMode.alphanumeric": "буквы и цифры",
71
- "graphics.qrMode.byte": "байты"
71
+ "graphics.qrMode.byte": "байты",
72
72
  },
73
73
  en: {
74
74
  "graphics.barChart": "Bar chart",
@@ -95,13 +95,13 @@ module.exports = {
95
95
  "graphics.kanbanBoard": "Kanban board",
96
96
  "graphics.kanbanColumn": "Column {index}",
97
97
  "graphics.kanbanCard": "Card",
98
- "graphics.quotedName": "\"{name}\"",
98
+ "graphics.quotedName": '"{name}"',
99
99
  "graphics.kanbanTags": "tags: {value}",
100
100
  "graphics.kanbanColumnOf": "column: {value}",
101
101
  "graphics.kanbanColumnCount": "{title}, cards: {count}",
102
102
  "graphics.kanbanColumnCountLimit": "{title}, cards: {count} of {limit}",
103
103
  "graphics.kanbanEmpty": "Empty",
104
- "graphics.kanbanMovedTo": "Card {card} moved to \"{column}\"",
104
+ "graphics.kanbanMovedTo": 'Card {card} moved to "{column}"',
105
105
  "graphics.kanbanMoved": "Card {card} moved",
106
106
  "graphics.kanbanMoveRefused": "Card {card} was not moved: the column limit is reached",
107
107
 
@@ -109,8 +109,8 @@ module.exports = {
109
109
  "graphics.clipboardEmpty": "History is empty",
110
110
  "graphics.clipboardCopied": "Copied: {value}",
111
111
  "graphics.clipboardCleared": "History cleared",
112
- "graphics.clipboardCopy": "Copy \"{value}\"",
113
- "graphics.clipboardRemove": "Delete \"{value}\"",
112
+ "graphics.clipboardCopy": 'Copy "{value}"',
113
+ "graphics.clipboardRemove": 'Delete "{value}"',
114
114
 
115
115
  "graphics.settingsTheme": "Theme",
116
116
  "graphics.settingsAppearance": "Color theme",
@@ -132,9 +132,9 @@ module.exports = {
132
132
  "graphics.qrEmpty": "No value",
133
133
  "graphics.qrTooLongChars": "Does not fit: {needed} characters, {capacity} max",
134
134
  "graphics.qrTooLongBytes": "Does not fit: {needed} bytes, {capacity} max",
135
- "graphics.qrModeMismatch": "Mode \"{mode}\" cannot encode this text",
135
+ "graphics.qrModeMismatch": 'Mode "{mode}" cannot encode this text',
136
136
  "graphics.qrMode.numeric": "digits",
137
137
  "graphics.qrMode.alphanumeric": "letters and digits",
138
- "graphics.qrMode.byte": "bytes"
139
- }
138
+ "graphics.qrMode.byte": "bytes",
139
+ },
140
140
  };
@@ -59,7 +59,7 @@ module.exports = {
59
59
  "media.imageCompareLabel": "Сравнение до и после",
60
60
  "media.imageCompareBefore": "До",
61
61
  "media.imageCompareAfter": "После",
62
- "media.imageCompareValue": "{value} %"
62
+ "media.imageCompareValue": "{value} %",
63
63
  },
64
64
  en: {
65
65
  "media.audioPlayer": "Audio player",
@@ -77,7 +77,7 @@ module.exports = {
77
77
  "media.soundOff": "Sound off",
78
78
  "media.soundOn": "Sound on",
79
79
  "media.noSource": "The track has no source",
80
- "media.cannotOpen": "Could not open \"{source}\"",
80
+ "media.cannotOpen": 'Could not open "{source}"',
81
81
  "media.trackStatus": "Track: {title}",
82
82
  "media.track": "Track",
83
83
  "media.tracks": "Tracks",
@@ -118,6 +118,6 @@ module.exports = {
118
118
  "media.imageCompareLabel": "Before and after comparison",
119
119
  "media.imageCompareBefore": "Before",
120
120
  "media.imageCompareAfter": "After",
121
- "media.imageCompareValue": "{value} %"
122
- }
121
+ "media.imageCompareValue": "{value} %",
122
+ },
123
123
  };
@@ -25,6 +25,8 @@ module.exports = {
25
25
  "navigation.stepper": "Шаги",
26
26
  "navigation.stepOf": "Шаг {index} из {total}",
27
27
  "navigation.stepDone": "выполнено",
28
+ "navigation.stepError": "ошибка",
29
+ "navigation.stepPending": "ожидает выполнения",
28
30
  "navigation.stepCurrent": "текущий шаг",
29
31
  "navigation.stepTodo": "не начат",
30
32
 
@@ -41,7 +43,7 @@ module.exports = {
41
43
  "navigation.toolbar": "Панель инструментов",
42
44
  "navigation.statusBar": "Строка состояния",
43
45
  "navigation.moreActions": "Дополнительные действия",
44
- "navigation.mainAction": "Основное действие"
46
+ "navigation.mainAction": "Основное действие",
45
47
  },
46
48
  en: {
47
49
  "navigation.pagination": "Pagination",
@@ -56,14 +58,16 @@ module.exports = {
56
58
  "navigation.breadcrumb": "Breadcrumb",
57
59
 
58
60
  "navigation.tab": "Tab",
59
- "navigation.closeTab": "Close tab \"{title}\"",
60
- "navigation.tabClosed": "Tab \"{title}\" closed",
61
- "navigation.tabClosedOpened": "Tab \"{title}\" closed, \"{active}\" opened",
62
- "navigation.tabClosedNothing": "Tab \"{title}\" closed, no tabs left",
61
+ "navigation.closeTab": 'Close tab "{title}"',
62
+ "navigation.tabClosed": 'Tab "{title}" closed',
63
+ "navigation.tabClosedOpened": 'Tab "{title}" closed, "{active}" opened',
64
+ "navigation.tabClosedNothing": 'Tab "{title}" closed, no tabs left',
63
65
 
64
66
  "navigation.stepper": "Steps",
65
67
  "navigation.stepOf": "Step {index} of {total}",
66
68
  "navigation.stepDone": "done",
69
+ "navigation.stepError": "error",
70
+ "navigation.stepPending": "in progress",
67
71
  "navigation.stepCurrent": "current step",
68
72
  "navigation.stepTodo": "not started",
69
73
 
@@ -75,11 +79,11 @@ module.exports = {
75
79
  "navigation.commandPlaceholder": "Find a command…",
76
80
  "navigation.recentGroup": "Recent",
77
81
  "navigation.commandsFound": "Commands found: {count}",
78
- "navigation.commandsFoundFor": "Commands found: {count} for \"{query}\"",
82
+ "navigation.commandsFoundFor": 'Commands found: {count} for "{query}"',
79
83
 
80
84
  "navigation.toolbar": "Toolbar",
81
85
  "navigation.statusBar": "Status bar",
82
86
  "navigation.moreActions": "More actions",
83
- "navigation.mainAction": "Main action"
84
- }
87
+ "navigation.mainAction": "Main action",
88
+ },
85
89
  };
@@ -10,7 +10,7 @@ module.exports = {
10
10
  "validate.minLength": "Минимум {minLength} символов",
11
11
  "validate.maxLength": "Максимум {maxLength} символов",
12
12
  "validate.pattern": "Неверный формат",
13
- "validate.email": "Неверный адрес электронной почты"
13
+ "validate.email": "Неверный адрес электронной почты",
14
14
  },
15
15
  en: {
16
16
  "validate.required": "Required field",
@@ -19,6 +19,6 @@ module.exports = {
19
19
  "validate.minLength": "At least {minLength} characters",
20
20
  "validate.maxLength": "At most {maxLength} characters",
21
21
  "validate.pattern": "Invalid format",
22
- "validate.email": "Invalid email address"
23
- }
22
+ "validate.email": "Invalid email address",
23
+ },
24
24
  };
@@ -10,7 +10,7 @@
10
10
  * Слушателей модуль не заводит, поэтому `destroy()` не нужен.
11
11
  */
12
12
 
13
- const {I18n} = require("../chui_i18n/chui_i18n");
13
+ const { I18n } = require("../chui_i18n/chui_i18n");
14
14
 
15
15
  /** Смещение символа в позицию «строка/столбец» (нумерация с единицы) */
16
16
  function placeOf(text = String(), offset = Number()) {
@@ -18,9 +18,9 @@ function placeOf(text = String(), offset = Number()) {
18
18
  const limit = Math.max(0, Math.min(Number(offset) || 0, value.length));
19
19
  const before = value.slice(0, limit);
20
20
  const line = before.split("\n").length;
21
- const last_break = before.lastIndexOf("\n");
22
- const column = limit - last_break;
23
- return {line: line, column: column, offset: limit};
21
+ const lastBreak = before.lastIndexOf("\n");
22
+ const column = limit - lastBreak;
23
+ return { line: line, column: column, offset: limit };
24
24
  }
25
25
 
26
26
  /** Место ошибки из текста исключения `JSON.parse`; `undefined`, если движок места не назвал */
@@ -28,7 +28,7 @@ function errorPlace(message = String(), text = String()) {
28
28
  const named = /\(line (\d+) column (\d+)\)/.exec(String(message));
29
29
  if (named !== null) {
30
30
  const offset = offsetOf(text, Number(named[1]), Number(named[2]));
31
- return {line: Number(named[1]), column: Number(named[2]), offset: offset};
31
+ return { line: Number(named[1]), column: Number(named[2]), offset: offset };
32
32
  }
33
33
  const positioned = /at position (\d+)/.exec(String(message));
34
34
  if (positioned !== null) return placeOf(text, Number(positioned[1]));
@@ -59,25 +59,25 @@ function cleanMessage(message = String()) {
59
59
  function parse(text = String()) {
60
60
  const value = text === undefined || text === null ? "" : String(text);
61
61
  try {
62
- return {ok: true, value: JSON.parse(value)};
62
+ return { ok: true, value: JSON.parse(value) };
63
63
  } catch (error) {
64
64
  const message = error instanceof Error ? error.message : String(error);
65
65
  const place = errorPlace(message, value);
66
- const result = {message: cleanMessage(message)};
66
+ const result = { message: cleanMessage(message) };
67
67
  if (place !== undefined) {
68
68
  result.line = place.line;
69
69
  result.column = place.column;
70
70
  result.offset = place.offset;
71
71
  }
72
- return {ok: false, error: result};
72
+ return { ok: false, error: result };
73
73
  }
74
74
  }
75
75
 
76
76
  /** Текст ошибки на языке интерфейса: с местом, если оно известно */
77
77
  function errorText(error) {
78
78
  if (error === undefined || error === null) return "";
79
- if (error.line === undefined) return I18n.t("json.invalid", {message: error.message});
80
- return I18n.t("json.invalidAt", {line: error.line, column: error.column, message: error.message});
79
+ if (error.line === undefined) return I18n.t("json.invalid", { message: error.message });
80
+ return I18n.t("json.invalidAt", { line: error.line, column: error.column, message: error.message });
81
81
  }
82
82
 
83
83
  /** Красивый JSON (`indent` — число пробелов), иначе исходный текст */
@@ -101,5 +101,5 @@ exports.Json = {
101
101
  offsetOf: offsetOf,
102
102
  errorPlace: errorPlace,
103
103
  format: format,
104
- minify: minify
104
+ minify: minify,
105
105
  };
@@ -21,7 +21,7 @@ const ROLE = {
21
21
  ROUTE_VIEWS: "route_views",
22
22
  NOTIFICATION_PANEL: "notification_panel",
23
23
  NOTIFICATION_BOX: "notification_box",
24
- NOTIFICATION_BOX_MAIN: "notification_box_main"
24
+ NOTIFICATION_BOX_MAIN: "notification_box_main",
25
25
  };
26
26
 
27
27
  /** Узлы одного layout'а: роль → узел */
@@ -76,7 +76,7 @@ function unregisterLayout(layout = new LayoutRefs()) {
76
76
  /** Layout, которому принадлежит узел, иначе — последний созданный */
77
77
  function getLayout(scope = undefined) {
78
78
  if (scope !== undefined && scope !== null) {
79
- const owner = layouts.find(layout => layout.owns(scope));
79
+ const owner = layouts.find((layout) => layout.owns(scope));
80
80
  if (owner !== undefined) return owner;
81
81
  }
82
82
  return layouts[layouts.length - 1];
@@ -92,15 +92,17 @@ function findLayoutNode(role = String(), scope = undefined) {
92
92
  function requireLayoutNode(role = String(), scope = undefined) {
93
93
  const node = findLayoutNode(role, scope);
94
94
  if (node === undefined) {
95
- throw new Error(`chui_layout: узел «${role}» не найден — layout не создан (new AppLayout()) или часть не зарегистрирована`);
95
+ throw new Error(
96
+ `chui_layout: узел «${role}» не найден — layout не создан (new AppLayout()) или часть не зарегистрирована`
97
+ );
96
98
  }
97
99
  return node;
98
100
  }
99
101
 
100
- exports.LAYOUT_ROLE = ROLE
101
- exports.LayoutRefs = LayoutRefs
102
- exports.registerLayout = registerLayout
103
- exports.unregisterLayout = unregisterLayout
104
- exports.getLayout = getLayout
105
- exports.findLayoutNode = findLayoutNode
106
- exports.requireLayoutNode = requireLayoutNode
102
+ exports.LAYOUT_ROLE = ROLE;
103
+ exports.LayoutRefs = LayoutRefs;
104
+ exports.registerLayout = registerLayout;
105
+ exports.unregisterLayout = unregisterLayout;
106
+ exports.getLayout = getLayout;
107
+ exports.findLayoutNode = findLayoutNode;
108
+ exports.requireLayoutNode = requireLayoutNode;