@overvis/hmi-workspace-ui 0.1.1 → 0.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 (91) hide show
  1. package/README.md +6 -4
  2. package/dist/{alarm-list-sheAq-pb.js → alarm-list-TDg7nwkn.js} +4 -4
  3. package/dist/{alarm-rule-dialog-D_ml7V0v.js → alarm-rule-dialog-DwbRtPZD.js} +10 -10
  4. package/dist/{alarm-rule-lists-DaA4soF4.js → alarm-rule-lists-Ax7PzbQy.js} +4 -4
  5. package/dist/{alarm-rules-page-OFjOQ-dm.js → alarm-rules-page-DisATKLV.js} +11 -11
  6. package/dist/{alert-dialog-B60PF7S9.js → alert-dialog-CskdoiGZ.js} +1 -1
  7. package/dist/{base-revision-DYCOZS0R.js → base-revision-C-tNhqGq.js} +3 -3
  8. package/dist/{breadcrumbs-D2u8KZQo.js → breadcrumbs-B5O9let7.js} +3 -3
  9. package/dist/{catalog-list-LXuRix0-.js → catalog-list-3yaB4bJD.js} +1 -1
  10. package/dist/{code-editor-BMSyzAxu.js → code-editor-B6myrPQm.js} +6 -2
  11. package/dist/{dashboards-page-wnmmLpVC.js → dashboards-page-CoKevu-T.js} +9 -9
  12. package/dist/{de-hkEr2usK.js → de-CPxvTPak.js} +11 -0
  13. package/dist/{diagnostic-text-CsbENUNI.js → diagnostic-text-BS4rdZcE.js} +2 -2
  14. package/dist/{dialogs-AtIYlNSy.js → dialogs-BUyPGimM.js} +6 -6
  15. package/dist/{dialogs-DsHbKgZD.js → dialogs-CF7Baagf.js} +512 -510
  16. package/dist/{display-DSyEwQt8.js → display-DmldtHdd.js} +2 -2
  17. package/dist/{editor-language-CTfJBXMs.js → editor-language-8UJkvBgX.js} +1 -1
  18. package/dist/{editor-page-BWbVGJvU.js → editor-page-_6TxO_iT.js} +14 -14
  19. package/dist/{en-UW_k-Bd6.js → en-DoFtc9Sn.js} +11 -0
  20. package/dist/{entity-controls-BCuRx882.js → entity-controls-rdv-ttvP.js} +3 -3
  21. package/dist/{errors-Cawve9yD.js → errors-BFeJfnyz.js} +2 -2
  22. package/dist/{footer-B9XdpVzq.js → footer-DZUQHVnt.js} +4 -4
  23. package/dist/host.js +1175 -1063
  24. package/dist/{i18n-Dt6xbSK6.js → i18n-D54xfDUE.js} +5 -5
  25. package/dist/i18n.js +1 -1
  26. package/dist/index.js +64 -42
  27. package/dist/{list-page-agHupfNb.js → list-page-Cz5bdD8r.js} +11 -11
  28. package/dist/{location-map-renderer-kxU6cgFl.js → location-map-renderer-Hb5N0AYH.js} +1 -1
  29. package/dist/{notice-card-CH28rYUt.js → notice-card-BMNjc7qi.js} +3 -3
  30. package/dist/{page-CZPHJUmz.js → page-BKnwJyv5.js} +8 -8
  31. package/dist/{page-HCGXXGjy.js → page-CBWLmbIE.js} +11 -11
  32. package/dist/{page-DpdkOGGb.js → page-UoQRnsm3.js} +11 -11
  33. package/dist/{panel-BCwBlB_h.js → panel-Cr3OXiRs.js} +3 -3
  34. package/dist/{pl-BokvsP3J.js → pl-DEPfFtMO.js} +11 -0
  35. package/dist/{presence-code-cT6wxlTg.js → presence-code-DIKs9fBe.js} +2 -2
  36. package/dist/{query-gate-DqmHsZ07.js → query-gate-2sU8OvEb.js} +3 -3
  37. package/dist/{quick-report-DEqqwQxR.js → quick-report-ZvrI5Jkh.js} +3130 -3102
  38. package/dist/{retention-note-nequESpo.js → retention-note-BrkxE2Wo.js} +9 -6
  39. package/dist/{retention-DZ0reGGe.js → retention-wDvnFMbN.js} +2 -2
  40. package/dist/{ru-DZSlsRHq.js → ru-Ct2zNOs8.js} +15 -4
  41. package/dist/{run-text-DneX9rWh.js → run-text-Bmkf_u0N.js} +2 -2
  42. package/dist/{search-DP9_alSQ.js → search-ADhiRT_S.js} +3 -3
  43. package/dist/{sections-BU7NKUOQ.js → sections-BDtBUhxn.js} +1 -1
  44. package/dist/{select-Te6Qv1Zu.js → select-Cpeslz01.js} +2 -2
  45. package/dist/{spinner-BRcNKwjH.js → spinner-LbVGWBQq.js} +2 -2
  46. package/dist/src/code-editor/code-editor.d.ts +3 -0
  47. package/dist/src/code-editor/taskfile-language.d.ts +22 -2
  48. package/dist/src/i18n/catalogs/de/api-error.d.ts +3 -0
  49. package/dist/src/i18n/catalogs/de/audit.d.ts +1 -0
  50. package/dist/src/i18n/catalogs/de/edge-program.d.ts +4 -0
  51. package/dist/src/i18n/catalogs/de/parameter.d.ts +1 -0
  52. package/dist/src/i18n/catalogs/de/starter.d.ts +2 -0
  53. package/dist/src/i18n/catalogs/de.d.ts +11 -0
  54. package/dist/src/i18n/catalogs/en/api-error.d.ts +3 -0
  55. package/dist/src/i18n/catalogs/en/audit.d.ts +1 -0
  56. package/dist/src/i18n/catalogs/en/edge-program.d.ts +4 -0
  57. package/dist/src/i18n/catalogs/en/parameter.d.ts +1 -0
  58. package/dist/src/i18n/catalogs/en/starter.d.ts +2 -0
  59. package/dist/src/i18n/catalogs/en.d.ts +11 -0
  60. package/dist/src/i18n/catalogs/pl/api-error.d.ts +3 -0
  61. package/dist/src/i18n/catalogs/pl/audit.d.ts +1 -0
  62. package/dist/src/i18n/catalogs/pl/edge-program.d.ts +4 -0
  63. package/dist/src/i18n/catalogs/pl/parameter.d.ts +1 -0
  64. package/dist/src/i18n/catalogs/pl/starter.d.ts +2 -0
  65. package/dist/src/i18n/catalogs/pl.d.ts +11 -0
  66. package/dist/src/i18n/catalogs/ru/api-error.d.ts +3 -0
  67. package/dist/src/i18n/catalogs/ru/audit.d.ts +1 -0
  68. package/dist/src/i18n/catalogs/ru/edge-program.d.ts +6 -2
  69. package/dist/src/i18n/catalogs/ru/graphics.d.ts +2 -2
  70. package/dist/src/i18n/catalogs/ru/parameter.d.ts +1 -0
  71. package/dist/src/i18n/catalogs/ru/starter.d.ts +2 -0
  72. package/dist/src/i18n/catalogs/ru.d.ts +15 -4
  73. package/dist/src/i18n/catalogs/uk/api-error.d.ts +3 -0
  74. package/dist/src/i18n/catalogs/uk/audit.d.ts +1 -0
  75. package/dist/src/i18n/catalogs/uk/edge-program.d.ts +6 -2
  76. package/dist/src/i18n/catalogs/uk/graphics.d.ts +2 -2
  77. package/dist/src/i18n/catalogs/uk/parameter.d.ts +1 -0
  78. package/dist/src/i18n/catalogs/uk/starter.d.ts +2 -0
  79. package/dist/src/i18n/catalogs/uk.d.ts +15 -4
  80. package/dist/src/version.d.ts +1 -1
  81. package/dist/src/workspace/device-presets/layout.d.ts +2 -0
  82. package/dist/src/workspace/local-setup-link.d.ts +3 -0
  83. package/dist/src/workspace/parameters/errors.d.ts +5 -0
  84. package/dist/src/workspace/setup/starters/starter-form.d.ts +24 -6
  85. package/dist/starter-fields-BHNS6IQe.js +678 -0
  86. package/dist/styles.css +1 -1
  87. package/dist/ui.js +6 -6
  88. package/dist/{uk-CjXPq9Lk.js → uk-Dbm1i2uh.js} +15 -4
  89. package/dist/{wireguard-docs-CC8XKBR7.js → wireguard-docs-DIBtCviv.js} +3 -3
  90. package/package.json +2 -2
  91. package/dist/starter-fields-yM4B49nd.js +0 -583
@@ -1,7 +1,7 @@
1
- import { Gn as e } from "./quick-report-DEqqwQxR.js";
2
- import { f as t, m as n } from "./i18n-Dt6xbSK6.js";
3
- import { H as r, L as i, z as a } from "./spinner-BRcNKwjH.js";
4
- import { r as o, t as s } from "./retention-DZ0reGGe.js";
1
+ import { Gn as e } from "./quick-report-ZvrI5Jkh.js";
2
+ import { f as t, m as n } from "./i18n-D54xfDUE.js";
3
+ import { H as r, L as i, z as a } from "./spinner-LbVGWBQq.js";
4
+ import { r as o, t as s } from "./retention-wDvnFMbN.js";
5
5
  import { jsx as c, jsxs as l } from "react/jsx-runtime";
6
6
  import { Link as u } from "@tanstack/react-router";
7
7
  // src/workspace/parameters/errors.ts
@@ -21,8 +21,11 @@ function f(n) {
21
21
  required: a
22
22
  });
23
23
  }
24
+ function p(n) {
25
+ return e(n).details?.reason === "const_write_limit_exceeds_storage" ? () => t("parameter_field_write_limit_exceeds_storage") : null;
26
+ }
24
27
  // src/workspace/setup/storage/retention-note.tsx
25
- function p({ workspaceId: e, target: t }) {
28
+ function m({ workspaceId: e, target: t }) {
26
29
  let d = n(), f = o(e);
27
30
  if (f == null) return null;
28
31
  let p = t.kind === "parameter" ? f.resolver.parameter(t.id) : f.resolver.branch(t.id);
@@ -37,4 +40,4 @@ function p({ workspaceId: e, target: t }) {
37
40
  })
38
41
  ] })] });
39
42
  }
40
- export { f as n, d as r, p as t };
43
+ export { d as i, p as n, f as r, m as t };
@@ -1,5 +1,5 @@
1
- import { ii as e } from "./quick-report-DEqqwQxR.js";
2
- import { f as t, h as n } from "./i18n-Dt6xbSK6.js";
1
+ import { ii as e } from "./quick-report-ZvrI5Jkh.js";
2
+ import { f as t, h as n } from "./i18n-D54xfDUE.js";
3
3
  import { useMemo as r } from "react";
4
4
  import { resolveLocalized as i } from "@overvis/hmi-shared";
5
5
  import { createRetentionResolver as a } from "@overvis/hmi-shared/workspace";
@@ -106,6 +106,7 @@ var e = {
106
106
  }, s = {
107
107
  error_input_invalid: "Отправленные данные содержат ошибки.",
108
108
  error_workspace_no_access: "У вас нет доступа к этому рабочему пространству.",
109
+ error_workspace_public_link_not_found: "Этот публичный адрес недоступен.",
109
110
  error_workspace_suspended: "Это рабочее пространство приостановлено. Откройте его, чтобы узнать причину.",
110
111
  error_workspace_not_owner: "Только владелец рабочего пространства может это сделать.",
111
112
  error_workspace_not_admin: "Только администратор или владелец рабочего пространства может это сделать.",
@@ -333,6 +334,8 @@ var e = {
333
334
  error_authentication_required: "Войдите, чтобы продолжить.",
334
335
  error_admission_required: "У вашей учётной записи пока нет доступа. Используйте приглашение или код доступа, чтобы продолжить.",
335
336
  error_onboarding_required: "Заполните профиль в веб-приложении, чтобы продолжить.",
337
+ error_guest_not_allowed: "Войдите, чтобы сделать это. Гости могут только просматривать это рабочее пространство.",
338
+ error_guest_rate_limited: "Слишком много запросов из вашей сети. Подождите минуту или войдите.",
336
339
  error_audit_invalid_cursor: "Эта страница истории больше недействительна. Обновите историю.",
337
340
  error_audit_archived_workspace_required: "Выберите удалённое рабочее пространство, чтобы посмотреть его историю.",
338
341
  error_checkpoint_not_found: "Этой контрольной точки больше нет. Обновите историю.",
@@ -1252,6 +1255,7 @@ var e = {
1252
1255
  parameter_field_addresses_placeholder: "0, 1, 2",
1253
1256
  parameter_field_addresses_invalid: "Введите 1–64 адреса (0–65535) через запятую.",
1254
1257
  parameter_field_addresses_too_short: "Адреса дают {available} Б, а этому типу значения нужно {required} Б. Каждый регистр даёт 2 байта, каждый дискретный выход или вход — 1. Добавьте адреса или измените тип значения.",
1258
+ parameter_field_write_limit_exceeds_storage: "Этот предел записи не помещается в хранилище типа значения. Измените предел или измените тип значения и затем запишите значение заново.",
1255
1259
  parameter_field_write_function: "Функция записи",
1256
1260
  parameter_field_source_invalid: "Конфигурация источника некорректна.",
1257
1261
  parameter_field_value_type_invalid: "Конфигурация типа значения некорректна.",
@@ -1444,6 +1448,7 @@ var e = {
1444
1448
  audit_target_type_workspace: "Рабочее пространство",
1445
1449
  audit_target_type_workspace_permission: "Доступ к рабочему пространству",
1446
1450
  audit_target_type_workspace_invitation: "Приглашение",
1451
+ audit_target_type_workspace_public_link: "Публичный адрес",
1447
1452
  audit_target_type_workspace_file: "Файл рабочего пространства",
1448
1453
  audit_target_type_dashboard: "Панель",
1449
1454
  audit_target_type_endpoint: "Подключение",
@@ -1633,7 +1638,7 @@ var e = {
1633
1638
  graphics_review_saved: "Проверить сохранённую версию",
1634
1639
  graphics_keep_draft: "Оставить мой черновик",
1635
1640
  graphics_use_saved: "Использовать сохранённую версию",
1636
- graphics_discard: "Отменить несохранённые изменения?",
1641
+ graphics_discard: "Сбросить несохранённые изменения?",
1637
1642
  graphics_empty: "Добавьте фигуру или символ с панели инструментов, чтобы начать схему.",
1638
1643
  graphics_empty_view: "На этой схеме пока нет объектов.",
1639
1644
  graphics_action_title: "Сведения",
@@ -1820,7 +1825,7 @@ var e = {
1820
1825
  graphics_invalid_object: "{object}: проверьте настройки.",
1821
1826
  graphics_slot_object: "Назначение параметра «{name}»",
1822
1827
  graphics_discard_description: "Ваши изменения в этом рисунке будут потеряны.",
1823
- graphics_discard_confirm: "Отменить изменения",
1828
+ graphics_discard_confirm: "Сбросить изменения",
1824
1829
  graphics_keep_editing: "Продолжить",
1825
1830
  graphics_save_warnings: "Сохранено. Некоторые объекты требуют внимания:",
1826
1831
  graphics_dismiss: "Скрыть",
@@ -2603,6 +2608,8 @@ var e = {
2603
2608
  starter_add_row: "Добавить",
2604
2609
  starter_remove_row: "Удалить: {row}",
2605
2610
  starter_recipients_none: "Никого",
2611
+ starter_unit: "Единица измерения",
2612
+ starter_unit_ms: "мс",
2606
2613
  starter_unit_s: "с",
2607
2614
  starter_unit_min: "мин",
2608
2615
  starter_unit_h: "ч",
@@ -3140,6 +3147,8 @@ var e = {
3140
3147
  edge_program_delete_description: "Программа будет удалена с устройства при следующем развёртывании, а устройство перезапустит остальные программы.",
3141
3148
  edge_program_delete_submit: "Удалить",
3142
3149
  edge_program_delete_toast: "Программа удалена",
3150
+ edge_program_indent_if_actions: "Отступ для действий после IF",
3151
+ edge_program_indent_if_actions_hint: "Сдвигает действие после каждого IF на четыре пробела (Shift+Alt+F)",
3143
3152
  edge_program_enabled_label: "Программа включена",
3144
3153
  edge_program_enabled: "Включена",
3145
3154
  edge_program_disabled: "Выключена",
@@ -3156,9 +3165,9 @@ var e = {
3156
3165
  edge_program_insert_example: "Начать с примера",
3157
3166
  edge_program_disabled_hint: "Эта программа выключена: она не развёртывается и проверяется отдельно.",
3158
3167
  edge_program_read_only: "Вы можете просматривать эту программу. Для редактирования нужна роль «Редактор».",
3159
- edge_program_discard_title: "Отменить несохранённые изменения?",
3168
+ edge_program_discard_title: "Сбросить несохранённые изменения?",
3160
3169
  edge_program_discard_description: "Ваши изменения в {file} будут потеряны.",
3161
- edge_program_discard_confirm: "Отменить изменения",
3170
+ edge_program_discard_confirm: "Сбросить изменения",
3162
3171
  edge_program_keep_editing: "Продолжить редактирование",
3163
3172
  edge_program_keys_hint: "Ctrl+S или ⌘S — сохранить · Esc, затем Tab — выйти из редактора",
3164
3173
  edge_program_select: "Программа",
@@ -3270,11 +3279,13 @@ var e = {
3270
3279
  taskfile_error_param_map_multiple_writers: "Этот отображённый параметр записывает другая программа. Записывать его может только одна программа.",
3271
3280
  taskfile_error_obsolete_file_layout: "Файлы на устройстве имеют устаревшую структуру.",
3272
3281
  taskfile_error_unknown: "Устройство сообщило об ошибке {code}.",
3282
+ taskfile_warning_consecutive_if: "Этот IF проверяется, только когда IF перед ним истинен; иначе он пропускается, а действие после него выполняется. Чтобы требовать оба условия, используйте IF AND.",
3273
3283
  taskfile_warning_depends_on_invalid_definition: "Эта строка использует определение с ошибкой.",
3274
3284
  taskfile_warning_filename_ignored: "Устройство пропускает {filename}: файлы .MAP, .OBJ и .CNF зарезервированы.",
3275
3285
  taskfile_warning_filename_invalid: "{filename} не является именем файла 8.3, поэтому устройство его пропускает.",
3276
3286
  taskfile_warning_implicit_indirect_index: "Определите индексную переменную до её использования; с неопределённой устройство может вести себя непредсказуемо.",
3277
3287
  taskfile_warning_memory_log_target: "Журналирование параметра в памяти устройства завершается ошибкой и останавливает всё журналирование программ. Вместо этого отобразите его на регистр Modbus устройства.",
3288
+ taskfile_warning_missing_return: "{name} вызывается через CALL или TRYCALL, но её действия могут без RETURN перейти в другую функцию или за конец файла. RETURN сразу после IF выполняется, только когда условие истинно.",
3278
3289
  taskfile_warning_nonstandard_holding_name: "Устройство принимает здесь это имя, но оно не соответствует обычным правилам именования.",
3279
3290
  taskfile_warning_string_output_limit: "Эта строка может стать длиннее {limit} байт, и устройство обрежет остаток.",
3280
3291
  taskfile_warning_unknown: "Возможная проблема: {code}.",
@@ -1,5 +1,5 @@
1
- import { Zt as e } from "./quick-report-DEqqwQxR.js";
2
- import { f as t, p as n } from "./i18n-Dt6xbSK6.js";
1
+ import { Zt as e } from "./quick-report-ZvrI5Jkh.js";
2
+ import { f as t, p as n } from "./i18n-D54xfDUE.js";
3
3
  import { formatAppDateTime as r } from "@overvis/hmi-shared";
4
4
  import { Value as i } from "typebox/value";
5
5
  import { automationTypedValueType as a } from "@overvis/hmi-shared/automation";
@@ -1,6 +1,6 @@
1
- import { bn as e, dn as t } from "./quick-report-DEqqwQxR.js";
2
- import { m as n } from "./i18n-Dt6xbSK6.js";
3
- import { $ as r, Mt as i, jt as a } from "./alert-dialog-B60PF7S9.js";
1
+ import { bn as e, dn as t } from "./quick-report-ZvrI5Jkh.js";
2
+ import { m as n } from "./i18n-D54xfDUE.js";
3
+ import { $ as r, Mt as i, jt as a } from "./alert-dialog-CskdoiGZ.js";
4
4
  import { useEffect as o, useId as s, useState as c, useSyncExternalStore as l } from "react";
5
5
  import { jsx as u, jsxs as d } from "react/jsx-runtime";
6
6
  import { BellOffIcon as f, Volume2Icon as p, VolumeXIcon as m } from "lucide-react";
@@ -1,4 +1,4 @@
1
- import { f as e } from "./i18n-Dt6xbSK6.js";
1
+ import { f as e } from "./i18n-D54xfDUE.js";
2
2
  import { CableIcon as t, ChartLineIcon as n, FolderIcon as r, HardDriveIcon as i, HistoryIcon as a, LayoutDashboardIcon as o, ListTreeIcon as s, WorkflowIcon as c } from "lucide-react";
3
3
  // src/workspace/setup/sections.ts
4
4
  var l = [
@@ -1,5 +1,5 @@
1
- import { Nt as e } from "./alert-dialog-B60PF7S9.js";
2
- import { q as t } from "./spinner-BRcNKwjH.js";
1
+ import { Nt as e } from "./alert-dialog-CskdoiGZ.js";
2
+ import { q as t } from "./spinner-LbVGWBQq.js";
3
3
  import * as n from "react";
4
4
  import { useEffect as r, useId as i, useState as a } from "react";
5
5
  import { Fragment as o, jsx as s, jsxs as c } from "react/jsx-runtime";
@@ -1,5 +1,5 @@
1
- import { m as e } from "./i18n-Dt6xbSK6.js";
2
- import { At as t, Ct as n, Nt as r, Ot as i, jt as a, kt as o, wt as s, yt as c } from "./alert-dialog-B60PF7S9.js";
1
+ import { m as e } from "./i18n-D54xfDUE.js";
2
+ import { At as t, Ct as n, Nt as r, Ot as i, jt as a, kt as o, wt as s, yt as c } from "./alert-dialog-CskdoiGZ.js";
3
3
  import * as l from "react";
4
4
  import { useMemo as u, useSyncExternalStore as d } from "react";
5
5
  import { Fragment as ee, jsx as f, jsxs as p } from "react/jsx-runtime";
@@ -1,5 +1,6 @@
1
1
  import { type Ref } from "react";
2
2
  import { type Extension } from "@codemirror/state";
3
+ import { type Command } from "@codemirror/view";
3
4
  /** A change to make in the text: an edit, then the cursor, then completion when `complete`. */
4
5
  export interface CodeEditorEdit {
5
6
  readonly from: number;
@@ -32,6 +33,8 @@ export interface CodeEditorHandle {
32
33
  text(): string;
33
34
  /** Makes a change, as a fix does, and focuses the editor. */
34
35
  apply(edit: CodeEditorEdit): void;
36
+ /** Runs a command, as its key does, and focuses the editor. */
37
+ run(command: Command): void;
35
38
  }
36
39
  /**
37
40
  * A CodeMirror 6 code editor bound to `value`: typing calls `onChange` with the whole text, and a
@@ -1,10 +1,30 @@
1
1
  import { StreamLanguage } from "@codemirror/language";
2
+ import { type Command } from "@codemirror/view";
2
3
  interface TaskfileState {
3
4
  /** Nothing but blanks and a label came before on this line. */
4
5
  lineStart: boolean;
5
6
  /** The previous word was `DEF`: this one is the defined name. */
6
7
  defining: boolean;
7
8
  }
8
- /** MC252 taskfile highlighting for `CodeEditor`. Lines are case-insensitive, as on the device. */
9
- export declare function taskfile(): StreamLanguage<TaskfileState>;
9
+ /**
10
+ * The indent for a new line after `lines`: one step right of the level of an `IF` that comes
11
+ * right before, else the level of the action before. Null when no action comes before.
12
+ */
13
+ export declare function taskfileNewLineIndent(lines: readonly string[]): string | null;
14
+ /**
15
+ * The changes that put each action an `IF` covers four spaces right of the `IF`'s level, in the
16
+ * text itself. A line the spaces would make too long for the device stays as it is.
17
+ */
18
+ export declare function taskfileIfIndentEdits(text: string): {
19
+ readonly from: number;
20
+ readonly to: number;
21
+ readonly insert: string;
22
+ }[];
23
+ /** Indents each action an `IF` covers in the text, as one change to undo. */
24
+ export declare const indentIfActions: Command;
25
+ /**
26
+ * MC252 taskfile highlighting for `CodeEditor`, with Enter indenting the action after an `IF` and
27
+ * Shift-Alt-F indenting every such action. Lines are case-insensitive, as on the device.
28
+ */
29
+ export declare function taskfile(): (StreamLanguage<TaskfileState> | import("@codemirror/state").Extension)[];
10
30
  export {};
@@ -1,6 +1,7 @@
1
1
  declare const _default: {
2
2
  readonly error_input_invalid: "Die übermittelten Daten sind ungültig.";
3
3
  readonly error_workspace_no_access: "Sie haben keinen Zugriff auf diesen Arbeitsbereich.";
4
+ readonly error_workspace_public_link_not_found: "Diese öffentliche Adresse ist nicht verfügbar.";
4
5
  readonly error_workspace_suspended: "Dieser Arbeitsbereich ist gesperrt. Öffnen Sie ihn, um den Grund zu sehen.";
5
6
  readonly error_workspace_not_owner: "Nur der Eigentümer des Arbeitsbereichs kann diese Aktion ausführen.";
6
7
  readonly error_workspace_not_admin: "Nur Administratoren oder Eigentümer des Arbeitsbereichs können diese Aktion ausführen.";
@@ -228,6 +229,8 @@ declare const _default: {
228
229
  readonly error_authentication_required: "Melden Sie sich an, um fortzufahren.";
229
230
  readonly error_admission_required: "Ihr Konto hat noch keinen Zugang. Verwenden Sie eine Einladung oder einen Zugangscode, um fortzufahren.";
230
231
  readonly error_onboarding_required: "Vervollständigen Sie Ihr Profil in der Web-App, um fortzufahren.";
232
+ readonly error_guest_not_allowed: "Melden Sie sich an, um das zu tun. Gäste können diesen Arbeitsbereich nur ansehen.";
233
+ readonly error_guest_rate_limited: "Zu viele Anfragen aus Ihrem Netzwerk. Warten Sie eine Minute oder melden Sie sich an.";
231
234
  readonly error_audit_invalid_cursor: "Diese Verlaufsseite ist nicht mehr gültig. Laden Sie den Verlauf neu.";
232
235
  readonly error_audit_archived_workspace_required: "Wählen Sie einen gelöschten Arbeitsbereich, um seinen Verlauf anzuzeigen.";
233
236
  readonly error_checkpoint_not_found: "Dieser Checkpoint existiert nicht mehr. Laden Sie den Verlauf neu.";
@@ -41,6 +41,7 @@ declare const _default: {
41
41
  readonly audit_target_type_workspace: "Arbeitsbereich";
42
42
  readonly audit_target_type_workspace_permission: "Arbeitsbereichszugriff";
43
43
  readonly audit_target_type_workspace_invitation: "Einladung";
44
+ readonly audit_target_type_workspace_public_link: "Öffentliche Adresse";
44
45
  readonly audit_target_type_workspace_file: "Arbeitsbereichsdatei";
45
46
  readonly audit_target_type_dashboard: "Dashboard";
46
47
  readonly audit_target_type_endpoint: "Verbindung";
@@ -63,6 +63,8 @@ declare const _default: {
63
63
  readonly edge_program_delete_description: "Das Programm wird bei der nächsten Bereitstellung vom Gerät entfernt, und das Gerät startet seine anderen Programme neu.";
64
64
  readonly edge_program_delete_submit: "Löschen";
65
65
  readonly edge_program_delete_toast: "Programm gelöscht";
66
+ readonly edge_program_indent_if_actions: "Aktionen nach IF einrücken";
67
+ readonly edge_program_indent_if_actions_hint: "Rückt die Aktion nach jedem IF um vier Leerzeichen ein (Umschalt+Alt+F)";
66
68
  readonly edge_program_enabled_label: "Programm aktiviert";
67
69
  readonly edge_program_enabled: "Aktiviert";
68
70
  readonly edge_program_disabled: "Deaktiviert";
@@ -193,11 +195,13 @@ declare const _default: {
193
195
  readonly taskfile_error_param_map_multiple_writers: "Ein anderes Programm schreibt diesen abgebildeten Parameter. Nur ein Programm darf ihn schreiben.";
194
196
  readonly taskfile_error_obsolete_file_layout: "Die Dateien auf dem Gerät verwenden ein veraltetes Layout.";
195
197
  readonly taskfile_error_unknown: "Das Gerät hat den Fehler {code} gemeldet.";
198
+ readonly taskfile_warning_consecutive_if: "Dieses IF wird nur geprüft, wenn das IF davor wahr ist; sonst wird es übersprungen und die Aktion danach ausgeführt. Um beide Bedingungen zu verlangen, verwenden Sie IF AND.";
196
199
  readonly taskfile_warning_depends_on_invalid_definition: "Diese Zeile verwendet eine Definition, die einen Fehler enthält.";
197
200
  readonly taskfile_warning_filename_ignored: "Das Gerät überspringt {filename}: .MAP-, .OBJ- und .CNF-Dateien sind reserviert.";
198
201
  readonly taskfile_warning_filename_invalid: "{filename} ist kein 8.3-Dateiname, daher überspringt das Gerät die Datei.";
199
202
  readonly taskfile_warning_implicit_indirect_index: "Definieren Sie die Indexvariable vor ihrer Verwendung; mit einer undefinierten verhält sich das Gerät möglicherweise unvorhersehbar.";
200
203
  readonly taskfile_warning_memory_log_target: "Das Protokollieren eines Parameters im Gerätespeicher schlägt fehl und stoppt die gesamte Programmprotokollierung. Bilden Sie ihn stattdessen auf ein Modbus-Register eines Geräts ab.";
204
+ readonly taskfile_warning_missing_return: "{name} wird mit CALL oder TRYCALL aufgerufen, aber ihre Aktionen können ohne RETURN in eine andere Funktion oder über das Dateiende hinaus weiterlaufen. Ein RETURN direkt nach IF wird nur ausgeführt, wenn die Bedingung wahr ist.";
201
205
  readonly taskfile_warning_nonstandard_holding_name: "Das Gerät akzeptiert diesen Namen hier, er folgt aber nicht den üblichen Namensregeln.";
202
206
  readonly taskfile_warning_string_output_limit: "Dieser String kann länger als {limit} Byte werden, und das Gerät schneidet den Rest ab.";
203
207
  readonly taskfile_warning_unknown: "Mögliches Problem: {code}.";
@@ -220,6 +220,7 @@ declare const _default: {
220
220
  readonly parameter_field_addresses_placeholder: "0, 1, 2";
221
221
  readonly parameter_field_addresses_invalid: "Geben Sie 1–64 Adressen (0–65535) durch Kommas getrennt ein.";
222
222
  readonly parameter_field_addresses_too_short: "Die Adressen liefern {available} Bytes, dieser Werttyp benötigt aber {required}. Jedes Register liefert 2 Bytes, jeder digitale Ausgang oder diskrete Eingang 1. Fügen Sie Adressen hinzu oder ändern Sie den Werttyp.";
223
+ readonly parameter_field_write_limit_exceeds_storage: "Dieses Schreiblimit passt nicht in den Speicher des Werttyps. Ändern Sie das Limit, oder ändern Sie den Werttyp und schreiben Sie den Wert danach erneut.";
223
224
  readonly parameter_field_write_function: "Schreibfunktion";
224
225
  readonly parameter_field_source_invalid: "Die Quellkonfiguration ist ungültig.";
225
226
  readonly parameter_field_value_type_invalid: "Die Werttypkonfiguration ist ungültig.";
@@ -8,6 +8,8 @@ declare const _default: {
8
8
  readonly starter_add_row: "Hinzufügen";
9
9
  readonly starter_remove_row: "{row} entfernen";
10
10
  readonly starter_recipients_none: "Niemand";
11
+ readonly starter_unit: "Einheit";
12
+ readonly starter_unit_ms: "ms";
11
13
  readonly starter_unit_s: "s";
12
14
  readonly starter_unit_min: "min";
13
15
  readonly starter_unit_h: "h";
@@ -102,6 +102,7 @@ declare const _default: {
102
102
  readonly error_device_api_device_error_status: "Das Gerät hat mit Fehler {status} geantwortet.";
103
103
  readonly error_input_invalid: "Die übermittelten Daten sind ungültig.";
104
104
  readonly error_workspace_no_access: "Sie haben keinen Zugriff auf diesen Arbeitsbereich.";
105
+ readonly error_workspace_public_link_not_found: "Diese öffentliche Adresse ist nicht verfügbar.";
105
106
  readonly error_workspace_suspended: "Dieser Arbeitsbereich ist gesperrt. Öffnen Sie ihn, um den Grund zu sehen.";
106
107
  readonly error_workspace_not_owner: "Nur der Eigentümer des Arbeitsbereichs kann diese Aktion ausführen.";
107
108
  readonly error_workspace_not_admin: "Nur Administratoren oder Eigentümer des Arbeitsbereichs können diese Aktion ausführen.";
@@ -329,6 +330,8 @@ declare const _default: {
329
330
  readonly error_authentication_required: "Melden Sie sich an, um fortzufahren.";
330
331
  readonly error_admission_required: "Ihr Konto hat noch keinen Zugang. Verwenden Sie eine Einladung oder einen Zugangscode, um fortzufahren.";
331
332
  readonly error_onboarding_required: "Vervollständigen Sie Ihr Profil in der Web-App, um fortzufahren.";
333
+ readonly error_guest_not_allowed: "Melden Sie sich an, um das zu tun. Gäste können diesen Arbeitsbereich nur ansehen.";
334
+ readonly error_guest_rate_limited: "Zu viele Anfragen aus Ihrem Netzwerk. Warten Sie eine Minute oder melden Sie sich an.";
332
335
  readonly error_audit_invalid_cursor: "Diese Verlaufsseite ist nicht mehr gültig. Laden Sie den Verlauf neu.";
333
336
  readonly error_audit_archived_workspace_required: "Wählen Sie einen gelöschten Arbeitsbereich, um seinen Verlauf anzuzeigen.";
334
337
  readonly error_checkpoint_not_found: "Dieser Checkpoint existiert nicht mehr. Laden Sie den Verlauf neu.";
@@ -1240,6 +1243,7 @@ declare const _default: {
1240
1243
  readonly parameter_field_addresses_placeholder: "0, 1, 2";
1241
1244
  readonly parameter_field_addresses_invalid: "Geben Sie 1–64 Adressen (0–65535) durch Kommas getrennt ein.";
1242
1245
  readonly parameter_field_addresses_too_short: "Die Adressen liefern {available} Bytes, dieser Werttyp benötigt aber {required}. Jedes Register liefert 2 Bytes, jeder digitale Ausgang oder diskrete Eingang 1. Fügen Sie Adressen hinzu oder ändern Sie den Werttyp.";
1246
+ readonly parameter_field_write_limit_exceeds_storage: "Dieses Schreiblimit passt nicht in den Speicher des Werttyps. Ändern Sie das Limit, oder ändern Sie den Werttyp und schreiben Sie den Wert danach erneut.";
1243
1247
  readonly parameter_field_write_function: "Schreibfunktion";
1244
1248
  readonly parameter_field_source_invalid: "Die Quellkonfiguration ist ungültig.";
1245
1249
  readonly parameter_field_value_type_invalid: "Die Werttypkonfiguration ist ungültig.";
@@ -1431,6 +1435,7 @@ declare const _default: {
1431
1435
  readonly audit_target_type_workspace: "Arbeitsbereich";
1432
1436
  readonly audit_target_type_workspace_permission: "Arbeitsbereichszugriff";
1433
1437
  readonly audit_target_type_workspace_invitation: "Einladung";
1438
+ readonly audit_target_type_workspace_public_link: "Öffentliche Adresse";
1434
1439
  readonly audit_target_type_workspace_file: "Arbeitsbereichsdatei";
1435
1440
  readonly audit_target_type_dashboard: "Dashboard";
1436
1441
  readonly audit_target_type_endpoint: "Verbindung";
@@ -2582,6 +2587,8 @@ declare const _default: {
2582
2587
  readonly starter_add_row: "Hinzufügen";
2583
2588
  readonly starter_remove_row: "{row} entfernen";
2584
2589
  readonly starter_recipients_none: "Niemand";
2590
+ readonly starter_unit: "Einheit";
2591
+ readonly starter_unit_ms: "ms";
2585
2592
  readonly starter_unit_s: "s";
2586
2593
  readonly starter_unit_min: "min";
2587
2594
  readonly starter_unit_h: "h";
@@ -3115,6 +3122,8 @@ declare const _default: {
3115
3122
  readonly edge_program_delete_description: "Das Programm wird bei der nächsten Bereitstellung vom Gerät entfernt, und das Gerät startet seine anderen Programme neu.";
3116
3123
  readonly edge_program_delete_submit: "Löschen";
3117
3124
  readonly edge_program_delete_toast: "Programm gelöscht";
3125
+ readonly edge_program_indent_if_actions: "Aktionen nach IF einrücken";
3126
+ readonly edge_program_indent_if_actions_hint: "Rückt die Aktion nach jedem IF um vier Leerzeichen ein (Umschalt+Alt+F)";
3118
3127
  readonly edge_program_enabled_label: "Programm aktiviert";
3119
3128
  readonly edge_program_enabled: "Aktiviert";
3120
3129
  readonly edge_program_disabled: "Deaktiviert";
@@ -3245,11 +3254,13 @@ declare const _default: {
3245
3254
  readonly taskfile_error_param_map_multiple_writers: "Ein anderes Programm schreibt diesen abgebildeten Parameter. Nur ein Programm darf ihn schreiben.";
3246
3255
  readonly taskfile_error_obsolete_file_layout: "Die Dateien auf dem Gerät verwenden ein veraltetes Layout.";
3247
3256
  readonly taskfile_error_unknown: "Das Gerät hat den Fehler {code} gemeldet.";
3257
+ readonly taskfile_warning_consecutive_if: "Dieses IF wird nur geprüft, wenn das IF davor wahr ist; sonst wird es übersprungen und die Aktion danach ausgeführt. Um beide Bedingungen zu verlangen, verwenden Sie IF AND.";
3248
3258
  readonly taskfile_warning_depends_on_invalid_definition: "Diese Zeile verwendet eine Definition, die einen Fehler enthält.";
3249
3259
  readonly taskfile_warning_filename_ignored: "Das Gerät überspringt {filename}: .MAP-, .OBJ- und .CNF-Dateien sind reserviert.";
3250
3260
  readonly taskfile_warning_filename_invalid: "{filename} ist kein 8.3-Dateiname, daher überspringt das Gerät die Datei.";
3251
3261
  readonly taskfile_warning_implicit_indirect_index: "Definieren Sie die Indexvariable vor ihrer Verwendung; mit einer undefinierten verhält sich das Gerät möglicherweise unvorhersehbar.";
3252
3262
  readonly taskfile_warning_memory_log_target: "Das Protokollieren eines Parameters im Gerätespeicher schlägt fehl und stoppt die gesamte Programmprotokollierung. Bilden Sie ihn stattdessen auf ein Modbus-Register eines Geräts ab.";
3263
+ readonly taskfile_warning_missing_return: "{name} wird mit CALL oder TRYCALL aufgerufen, aber ihre Aktionen können ohne RETURN in eine andere Funktion oder über das Dateiende hinaus weiterlaufen. Ein RETURN direkt nach IF wird nur ausgeführt, wenn die Bedingung wahr ist.";
3253
3264
  readonly taskfile_warning_nonstandard_holding_name: "Das Gerät akzeptiert diesen Namen hier, er folgt aber nicht den üblichen Namensregeln.";
3254
3265
  readonly taskfile_warning_string_output_limit: "Dieser String kann länger als {limit} Byte werden, und das Gerät schneidet den Rest ab.";
3255
3266
  readonly taskfile_warning_unknown: "Mögliches Problem: {code}.";
@@ -1,6 +1,7 @@
1
1
  declare const _default: {
2
2
  readonly error_input_invalid: "The submitted data is invalid.";
3
3
  readonly error_workspace_no_access: "You do not have access to this workspace.";
4
+ readonly error_workspace_public_link_not_found: "This public address is not available.";
4
5
  readonly error_workspace_suspended: "This workspace is suspended. Open it to see why.";
5
6
  readonly error_workspace_not_owner: "Only the workspace owner can do that.";
6
7
  readonly error_workspace_not_admin: "Only a workspace admin or owner can do that.";
@@ -228,6 +229,8 @@ declare const _default: {
228
229
  readonly error_authentication_required: "Sign in to continue.";
229
230
  readonly error_admission_required: "Your account does not have access yet. Use an invitation or access code to continue.";
230
231
  readonly error_onboarding_required: "Complete your profile in the web app to continue.";
232
+ readonly error_guest_not_allowed: "Sign in to do this. Guests can only view this workspace.";
233
+ readonly error_guest_rate_limited: "Too many requests from your network. Wait a minute, or sign in.";
231
234
  readonly error_audit_invalid_cursor: "This history page is no longer valid. Reload the history.";
232
235
  readonly error_audit_archived_workspace_required: "Choose a deleted workspace to view its history.";
233
236
  readonly error_checkpoint_not_found: "This checkpoint no longer exists. Reload the history.";
@@ -41,6 +41,7 @@ declare const _default: {
41
41
  readonly audit_target_type_workspace: "Workspace";
42
42
  readonly audit_target_type_workspace_permission: "Workspace access";
43
43
  readonly audit_target_type_workspace_invitation: "Invitation";
44
+ readonly audit_target_type_workspace_public_link: "Public address";
44
45
  readonly audit_target_type_workspace_file: "Workspace file";
45
46
  readonly audit_target_type_dashboard: "Dashboard";
46
47
  readonly audit_target_type_endpoint: "Endpoint";
@@ -63,6 +63,8 @@ declare const _default: {
63
63
  readonly edge_program_delete_description: "The program is removed from the device at the next deploy, and the device restarts its other programs.";
64
64
  readonly edge_program_delete_submit: "Delete";
65
65
  readonly edge_program_delete_toast: "Program deleted";
66
+ readonly edge_program_indent_if_actions: "Indent actions after IF";
67
+ readonly edge_program_indent_if_actions_hint: "Indents the action after each IF by four spaces (Shift+Alt+F)";
66
68
  readonly edge_program_enabled_label: "Program enabled";
67
69
  readonly edge_program_enabled: "Enabled";
68
70
  readonly edge_program_disabled: "Disabled";
@@ -193,11 +195,13 @@ declare const _default: {
193
195
  readonly taskfile_error_param_map_multiple_writers: "Another program writes this mapped parameter. Only one program may write it.";
194
196
  readonly taskfile_error_obsolete_file_layout: "The files on the device use an obsolete layout.";
195
197
  readonly taskfile_error_unknown: "The device reported error {code}.";
198
+ readonly taskfile_warning_consecutive_if: "This IF is checked only when the IF before it is true; otherwise it is skipped and the action after it runs. To require both conditions, use IF AND.";
196
199
  readonly taskfile_warning_depends_on_invalid_definition: "This line uses a definition that has an error.";
197
200
  readonly taskfile_warning_filename_ignored: "The device skips {filename}: .MAP, .OBJ and .CNF files are reserved.";
198
201
  readonly taskfile_warning_filename_invalid: "{filename} is not an 8.3 file name, so the device skips it.";
199
202
  readonly taskfile_warning_implicit_indirect_index: "Define the index variable before using it; the device may handle an undefined one unpredictably.";
200
203
  readonly taskfile_warning_memory_log_target: "Logging a parameter kept in device memory fails and stops all program logging. Map it to a Modbus register of a device instead.";
204
+ readonly taskfile_warning_missing_return: "{name} is called with CALL or TRYCALL, but its actions can run on without a RETURN into another function or past the end of the file. A RETURN right after IF runs only when the condition is true.";
201
205
  readonly taskfile_warning_nonstandard_holding_name: "The device accepts this name here, but it does not follow the usual naming rules.";
202
206
  readonly taskfile_warning_string_output_limit: "This string can grow longer than {limit} bytes, and the device cuts off the rest.";
203
207
  readonly taskfile_warning_unknown: "Possible problem: {code}.";
@@ -220,6 +220,7 @@ declare const _default: {
220
220
  readonly parameter_field_addresses_placeholder: "0, 1, 2";
221
221
  readonly parameter_field_addresses_invalid: "Enter 1–64 addresses (0–65535), comma-separated.";
222
222
  readonly parameter_field_addresses_too_short: "The addresses supply {available} bytes, but this value type needs {required}. Each register supplies 2 bytes, each coil or discrete input 1. Add addresses or change the value type.";
223
+ readonly parameter_field_write_limit_exceeds_storage: "This write limit does not fit the value type's storage. Change the limit, or change the value type and then write the value again.";
223
224
  readonly parameter_field_write_function: "Write function";
224
225
  readonly parameter_field_source_invalid: "Source configuration is invalid.";
225
226
  readonly parameter_field_value_type_invalid: "Value type configuration is invalid.";
@@ -8,6 +8,8 @@ declare const _default: {
8
8
  readonly starter_add_row: "Add";
9
9
  readonly starter_remove_row: "Remove {row}";
10
10
  readonly starter_recipients_none: "Nobody";
11
+ readonly starter_unit: "Unit";
12
+ readonly starter_unit_ms: "ms";
11
13
  readonly starter_unit_s: "s";
12
14
  readonly starter_unit_min: "min";
13
15
  readonly starter_unit_h: "h";
@@ -102,6 +102,7 @@ declare const _default: {
102
102
  readonly error_device_api_device_error_status: "The device answered with error {status}.";
103
103
  readonly error_input_invalid: "The submitted data is invalid.";
104
104
  readonly error_workspace_no_access: "You do not have access to this workspace.";
105
+ readonly error_workspace_public_link_not_found: "This public address is not available.";
105
106
  readonly error_workspace_suspended: "This workspace is suspended. Open it to see why.";
106
107
  readonly error_workspace_not_owner: "Only the workspace owner can do that.";
107
108
  readonly error_workspace_not_admin: "Only a workspace admin or owner can do that.";
@@ -329,6 +330,8 @@ declare const _default: {
329
330
  readonly error_authentication_required: "Sign in to continue.";
330
331
  readonly error_admission_required: "Your account does not have access yet. Use an invitation or access code to continue.";
331
332
  readonly error_onboarding_required: "Complete your profile in the web app to continue.";
333
+ readonly error_guest_not_allowed: "Sign in to do this. Guests can only view this workspace.";
334
+ readonly error_guest_rate_limited: "Too many requests from your network. Wait a minute, or sign in.";
332
335
  readonly error_audit_invalid_cursor: "This history page is no longer valid. Reload the history.";
333
336
  readonly error_audit_archived_workspace_required: "Choose a deleted workspace to view its history.";
334
337
  readonly error_checkpoint_not_found: "This checkpoint no longer exists. Reload the history.";
@@ -1240,6 +1243,7 @@ declare const _default: {
1240
1243
  readonly parameter_field_addresses_placeholder: "0, 1, 2";
1241
1244
  readonly parameter_field_addresses_invalid: "Enter 1–64 addresses (0–65535), comma-separated.";
1242
1245
  readonly parameter_field_addresses_too_short: "The addresses supply {available} bytes, but this value type needs {required}. Each register supplies 2 bytes, each coil or discrete input 1. Add addresses or change the value type.";
1246
+ readonly parameter_field_write_limit_exceeds_storage: "This write limit does not fit the value type's storage. Change the limit, or change the value type and then write the value again.";
1243
1247
  readonly parameter_field_write_function: "Write function";
1244
1248
  readonly parameter_field_source_invalid: "Source configuration is invalid.";
1245
1249
  readonly parameter_field_value_type_invalid: "Value type configuration is invalid.";
@@ -1431,6 +1435,7 @@ declare const _default: {
1431
1435
  readonly audit_target_type_workspace: "Workspace";
1432
1436
  readonly audit_target_type_workspace_permission: "Workspace access";
1433
1437
  readonly audit_target_type_workspace_invitation: "Invitation";
1438
+ readonly audit_target_type_workspace_public_link: "Public address";
1434
1439
  readonly audit_target_type_workspace_file: "Workspace file";
1435
1440
  readonly audit_target_type_dashboard: "Dashboard";
1436
1441
  readonly audit_target_type_endpoint: "Endpoint";
@@ -2582,6 +2587,8 @@ declare const _default: {
2582
2587
  readonly starter_add_row: "Add";
2583
2588
  readonly starter_remove_row: "Remove {row}";
2584
2589
  readonly starter_recipients_none: "Nobody";
2590
+ readonly starter_unit: "Unit";
2591
+ readonly starter_unit_ms: "ms";
2585
2592
  readonly starter_unit_s: "s";
2586
2593
  readonly starter_unit_min: "min";
2587
2594
  readonly starter_unit_h: "h";
@@ -3115,6 +3122,8 @@ declare const _default: {
3115
3122
  readonly edge_program_delete_description: "The program is removed from the device at the next deploy, and the device restarts its other programs.";
3116
3123
  readonly edge_program_delete_submit: "Delete";
3117
3124
  readonly edge_program_delete_toast: "Program deleted";
3125
+ readonly edge_program_indent_if_actions: "Indent actions after IF";
3126
+ readonly edge_program_indent_if_actions_hint: "Indents the action after each IF by four spaces (Shift+Alt+F)";
3118
3127
  readonly edge_program_enabled_label: "Program enabled";
3119
3128
  readonly edge_program_enabled: "Enabled";
3120
3129
  readonly edge_program_disabled: "Disabled";
@@ -3245,11 +3254,13 @@ declare const _default: {
3245
3254
  readonly taskfile_error_param_map_multiple_writers: "Another program writes this mapped parameter. Only one program may write it.";
3246
3255
  readonly taskfile_error_obsolete_file_layout: "The files on the device use an obsolete layout.";
3247
3256
  readonly taskfile_error_unknown: "The device reported error {code}.";
3257
+ readonly taskfile_warning_consecutive_if: "This IF is checked only when the IF before it is true; otherwise it is skipped and the action after it runs. To require both conditions, use IF AND.";
3248
3258
  readonly taskfile_warning_depends_on_invalid_definition: "This line uses a definition that has an error.";
3249
3259
  readonly taskfile_warning_filename_ignored: "The device skips {filename}: .MAP, .OBJ and .CNF files are reserved.";
3250
3260
  readonly taskfile_warning_filename_invalid: "{filename} is not an 8.3 file name, so the device skips it.";
3251
3261
  readonly taskfile_warning_implicit_indirect_index: "Define the index variable before using it; the device may handle an undefined one unpredictably.";
3252
3262
  readonly taskfile_warning_memory_log_target: "Logging a parameter kept in device memory fails and stops all program logging. Map it to a Modbus register of a device instead.";
3263
+ readonly taskfile_warning_missing_return: "{name} is called with CALL or TRYCALL, but its actions can run on without a RETURN into another function or past the end of the file. A RETURN right after IF runs only when the condition is true.";
3253
3264
  readonly taskfile_warning_nonstandard_holding_name: "The device accepts this name here, but it does not follow the usual naming rules.";
3254
3265
  readonly taskfile_warning_string_output_limit: "This string can grow longer than {limit} bytes, and the device cuts off the rest.";
3255
3266
  readonly taskfile_warning_unknown: "Possible problem: {code}.";
@@ -1,6 +1,7 @@
1
1
  declare const _default: {
2
2
  readonly error_input_invalid: "Przesłane dane są nieprawidłowe.";
3
3
  readonly error_workspace_no_access: "Nie masz dostępu do tego obszaru roboczego.";
4
+ readonly error_workspace_public_link_not_found: "Ten publiczny adres jest niedostępny.";
4
5
  readonly error_workspace_suspended: "Ten obszar roboczy jest zawieszony. Otwórz go, aby zobaczyć powód.";
5
6
  readonly error_workspace_not_owner: "Tylko właściciel obszaru może to zrobić.";
6
7
  readonly error_workspace_not_admin: "Tylko administrator lub właściciel obszaru może to zrobić.";
@@ -228,6 +229,8 @@ declare const _default: {
228
229
  readonly error_authentication_required: "Zaloguj się, aby kontynuować.";
229
230
  readonly error_admission_required: "Twoje konto nie ma jeszcze dostępu. Użyj zaproszenia lub kodu dostępu, aby kontynuować.";
230
231
  readonly error_onboarding_required: "Uzupełnij swój profil w aplikacji internetowej, aby kontynuować.";
232
+ readonly error_guest_not_allowed: "Zaloguj się, aby to zrobić. Goście mogą tylko przeglądać ten obszar roboczy.";
233
+ readonly error_guest_rate_limited: "Zbyt wiele żądań z Twojej sieci. Odczekaj minutę lub zaloguj się.";
231
234
  readonly error_audit_invalid_cursor: "Ta strona historii jest już nieaktualna. Wczytaj historię ponownie.";
232
235
  readonly error_audit_archived_workspace_required: "Wybierz usunięty obszar roboczy, aby wyświetlić jego historię.";
233
236
  readonly error_checkpoint_not_found: "Ten punkt kontrolny już nie istnieje. Odśwież historię.";
@@ -41,6 +41,7 @@ declare const _default: {
41
41
  readonly audit_target_type_workspace: "Obszar roboczy";
42
42
  readonly audit_target_type_workspace_permission: "Dostęp do obszaru roboczego";
43
43
  readonly audit_target_type_workspace_invitation: "Zaproszenie";
44
+ readonly audit_target_type_workspace_public_link: "Adres publiczny";
44
45
  readonly audit_target_type_workspace_file: "Plik obszaru roboczego";
45
46
  readonly audit_target_type_dashboard: "Pulpit";
46
47
  readonly audit_target_type_endpoint: "Połączenie";
@@ -63,6 +63,8 @@ declare const _default: {
63
63
  readonly edge_program_delete_description: "Program zostanie usunięty z urządzenia przy następnym wdrożeniu, a urządzenie uruchomi ponownie pozostałe programy.";
64
64
  readonly edge_program_delete_submit: "Usuń";
65
65
  readonly edge_program_delete_toast: "Usunięto program";
66
+ readonly edge_program_indent_if_actions: "Wcięcie akcji po IF";
67
+ readonly edge_program_indent_if_actions_hint: "Wcina akcję po każdym IF o cztery spacje (Shift+Alt+F)";
66
68
  readonly edge_program_enabled_label: "Program włączony";
67
69
  readonly edge_program_enabled: "Włączony";
68
70
  readonly edge_program_disabled: "Wyłączony";
@@ -193,11 +195,13 @@ declare const _default: {
193
195
  readonly taskfile_error_param_map_multiple_writers: "Inny program zapisuje ten odwzorowany parametr. Zapisywać go może tylko jeden program.";
194
196
  readonly taskfile_error_obsolete_file_layout: "Pliki na urządzeniu mają przestarzały układ.";
195
197
  readonly taskfile_error_unknown: "Urządzenie zgłosiło błąd {code}.";
198
+ readonly taskfile_warning_consecutive_if: "To IF jest sprawdzane tylko wtedy, gdy IF przed nim jest prawdziwe; w przeciwnym razie jest pomijane, a akcja po nim zostaje wykonana. Aby wymagać obu warunków, użyj IF AND.";
196
199
  readonly taskfile_warning_depends_on_invalid_definition: "Ten wiersz używa definicji, która zawiera błąd.";
197
200
  readonly taskfile_warning_filename_ignored: "Urządzenie pomija {filename}: pliki .MAP, .OBJ i .CNF są zarezerwowane.";
198
201
  readonly taskfile_warning_filename_invalid: "{filename} nie jest nazwą pliku 8.3, więc urządzenie go pomija.";
199
202
  readonly taskfile_warning_implicit_indirect_index: "Zdefiniuj zmienną indeksu przed jej użyciem; z niezdefiniowaną urządzenie może działać nieprzewidywalnie.";
200
203
  readonly taskfile_warning_memory_log_target: "Rejestrowanie parametru w pamięci urządzenia kończy się błędem i zatrzymuje całe rejestrowanie programów. Zamiast tego odwzoruj go na rejestr Modbus urządzenia.";
204
+ readonly taskfile_warning_missing_return: "{name} jest wywoływana przez CALL lub TRYCALL, ale jej akcje mogą bez RETURN przejść do innej funkcji lub poza koniec pliku. RETURN tuż po IF wykonuje się tylko wtedy, gdy warunek jest prawdziwy.";
201
205
  readonly taskfile_warning_nonstandard_holding_name: "Urządzenie przyjmuje tu tę nazwę, ale nie jest ona zgodna ze zwykłymi zasadami nazewnictwa.";
202
206
  readonly taskfile_warning_string_output_limit: "Ten ciąg może przekroczyć {limit} bajtów, a urządzenie obetnie resztę.";
203
207
  readonly taskfile_warning_unknown: "Możliwy problem: {code}.";
@@ -220,6 +220,7 @@ declare const _default: {
220
220
  readonly parameter_field_addresses_placeholder: "0, 1, 2";
221
221
  readonly parameter_field_addresses_invalid: "Wpisz 1–64 adresy (0–65535), oddzielone przecinkami.";
222
222
  readonly parameter_field_addresses_too_short: "Adresy dostarczają {available} B, a ten typ wartości wymaga {required} B. Każdy rejestr dostarcza 2 bajty, każde wyjście lub wejście dyskretne 1. Dodaj adresy lub zmień typ wartości.";
223
+ readonly parameter_field_write_limit_exceeds_storage: "Ten limit zapisu nie mieści się w pamięci typu wartości. Zmień limit albo zmień typ wartości i zapisz wartość ponownie.";
223
224
  readonly parameter_field_write_function: "Funkcja zapisu";
224
225
  readonly parameter_field_source_invalid: "Konfiguracja źródła jest nieprawidłowa.";
225
226
  readonly parameter_field_value_type_invalid: "Konfiguracja typu wartości jest nieprawidłowa.";
@@ -8,6 +8,8 @@ declare const _default: {
8
8
  readonly starter_add_row: "Dodaj";
9
9
  readonly starter_remove_row: "Usuń: {row}";
10
10
  readonly starter_recipients_none: "Nikt";
11
+ readonly starter_unit: "Jednostka";
12
+ readonly starter_unit_ms: "ms";
11
13
  readonly starter_unit_s: "s";
12
14
  readonly starter_unit_min: "min";
13
15
  readonly starter_unit_h: "h";