urfu-ui-kit-react 2.1.7-next.2 → 2.1.7-next.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.
- package/README.md +2 -2
- package/dist/components/ErrorScreen/ErrorScreen.js +117 -115
- package/dist/components/Table/Filter/FilterStringBox.js +8 -8
- package/dist/components/Table/Filter/useFilterOptionsPreload.js +2 -2
- package/dist/components/Table/Table.types.d.ts +1 -1
- package/dist/components/Table/Table.types.d.ts.map +1 -1
- package/dist/dev/index.js +1 -1
- package/dist/index.d.ts +3 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/shared/kitCopy.js +1 -1
- package/dist/style-no-fonts.css +1 -1
- package/dist/style.css +1 -1
- package/dist/style.layer.css +1 -1
- package/dist/style.shell.css +1 -1
- package/dist/urfu-ui-kit-react.js +12 -12
- package/dist/utils/describeError.d.ts +27 -0
- package/dist/utils/describeError.d.ts.map +1 -1
- package/dist/vanilla/core/describeError.js +44 -39
- package/package.json +1 -1
|
@@ -14,9 +14,9 @@ import { OfflineBanner$u as F } from "./components/OfflineBanner/OfflineBanner.j
|
|
|
14
14
|
import { useOnlineStatus$u as U } from "./hooks/useOnlineStatus.js";
|
|
15
15
|
import { useCollapseMotion$u as R } from "./hooks/useCollapseMotion.js";
|
|
16
16
|
import { useEnterMotion$u as h } from "./hooks/useEnterMotion.js";
|
|
17
|
-
import { Checkbox$u as
|
|
18
|
-
import { ConfirmModal$u as
|
|
19
|
-
import { ColumnSettings$u as
|
|
17
|
+
import { Checkbox$u as D } from "./components/Checkbox/Checkbox.js";
|
|
18
|
+
import { ConfirmModal$u as _ } from "./components/ConfirmModal/ConfirmModal.js";
|
|
19
|
+
import { ColumnSettings$u as B } from "./components/ColumnSettings/ColumnSettings.js";
|
|
20
20
|
import { FormField$u as K } from "./components/FormField/FormField.js";
|
|
21
21
|
import { Icon$u as N } from "./components/Icon/Icon.js";
|
|
22
22
|
import { InputExpandTextarea$u as X } from "./components/InputExpandTextarea/InputExpandTextarea.js";
|
|
@@ -28,7 +28,7 @@ import { Menu$u as $ } from "./components/Menu/Menu.js";
|
|
|
28
28
|
import { Message$u as or } from "./components/Message/Message.js";
|
|
29
29
|
import { Modal$u as tr } from "./components/Modal/Modal.js";
|
|
30
30
|
import { Drawer$u as mr } from "./components/Drawer/Drawer.js";
|
|
31
|
-
import { Multiselect$u as
|
|
31
|
+
import { Multiselect$u as fr } from "./components/Multiselect/Multiselect.js";
|
|
32
32
|
import { NotificationProvider$u as ar, useNotification$u as nr } from "./components/Notification/Notification.js";
|
|
33
33
|
import { Preloader$u as lr } from "./components/Preloader/Preloader.js";
|
|
34
34
|
import { Radio$u as cr } from "./components/Radio/Radio.js";
|
|
@@ -40,9 +40,9 @@ import { Switch$u as Ir } from "./components/Switch/Switch.js";
|
|
|
40
40
|
import { StickyActionBar$u as Lr } from "./components/StickyActionBar/StickyActionBar.js";
|
|
41
41
|
import { Table$u as Or } from "./components/Table/Table.js";
|
|
42
42
|
import { Pagination$u as Ar } from "./components/Pagination/Pagination.js";
|
|
43
|
-
import { Tabs$u as
|
|
44
|
-
import { TabPanels$u as
|
|
45
|
-
import { Textarea$u as
|
|
43
|
+
import { Tabs$u as wr } from "./components/Tabs/Tabs.js";
|
|
44
|
+
import { TabPanels$u as Vr } from "./components/TabPanels/TabPanels.js";
|
|
45
|
+
import { Textarea$u as kr } from "./components/Textarea/Textarea.js";
|
|
46
46
|
import { Tooltip$u as yr } from "./components/Tooltip/Tooltip.js";
|
|
47
47
|
import { TreeView$u as vr } from "./components/TreeView/TreeView.js";
|
|
48
48
|
import { VirtualList$u as Hr } from "./components/VirtualList/VirtualList.js";
|
|
@@ -53,13 +53,13 @@ import { useTableSort$u as Wr } from "./hooks/useTableSort.js";
|
|
|
53
53
|
import { usePagination$u as Zr } from "./hooks/usePagination.js";
|
|
54
54
|
import { compareValues$u as ro, nextSort$u as oo, sortRows$u as eo } from "./shared/sortRows.js";
|
|
55
55
|
import { configureUiKit$u as po, useUiKitViewport$u as mo } from "./responsive/uiKitResponsive.js";
|
|
56
|
-
import { TableFilterOptions$u as
|
|
56
|
+
import { TableFilterOptions$u as fo } from "./components/Table/Filter/TableFilterOptions.js";
|
|
57
57
|
import { TableFilterDates$u as ao } from "./components/Table/Filter/FilterDateBox.js";
|
|
58
58
|
import { Skeleton$u as so } from "./components/Skeleton/Skeleton.js";
|
|
59
59
|
import { installInputModeTracking$u as o } from "./vanilla/core/inputMode.js";
|
|
60
|
-
import { DEFAULT_ERROR_TEXTS$u as uo, DEFAULT_SUPPORT_EMAIL$u as co, DEFAULT_SUPPORT_LABEL$u as To, configureErrorReport$u as So, configureErrorTexts$u as Eo, describeError$u as go, describeFieldErrors$u as bo,
|
|
61
|
-
import { hasPreviousPage$u as
|
|
62
|
-
import { reconcileColumnOrder$u as
|
|
60
|
+
import { DEFAULT_ERROR_TEXTS$u as uo, DEFAULT_SUPPORT_EMAIL$u as co, DEFAULT_SUPPORT_LABEL$u as To, configureErrorReport$u as So, configureErrorTexts$u as Eo, describeError$u as go, describeFieldErrors$u as bo, errorView$u as Mo, formatErrorDetails$u as Po, isHumanMessage$u as Co, supportMailto$u as Io } from "./vanilla/core/describeError.js";
|
|
61
|
+
import { hasPreviousPage$u as Lo } from "./vanilla/core/hasPreviousPage.js";
|
|
62
|
+
import { reconcileColumnOrder$u as Oo } from "./vanilla/core/reconcileColumnOrder.js";
|
|
63
63
|
r();
|
|
64
64
|
o();
|
|
65
|
-
export { u as Accordion, T as BreadCrumbs, d as Button, g as Calendar, M as Card,
|
|
65
|
+
export { u as Accordion, T as BreadCrumbs, d as Button, g as Calendar, M as Card, D as Checkbox, B as ColumnSettings, _ as ConfirmModal, uo as DEFAULT_ERROR_TEXTS, co as DEFAULT_SUPPORT_EMAIL, To as DEFAULT_SUPPORT_LABEL, mr as Drawer, C as ErrorScreen, K as FormField, N as Icon, jr as InfiniteScroll, X as InputExpandTextarea, q as InputFile, G as InputNumber, Q as InputText, Y as InputTime, $ as Menu, or as Message, tr as Modal, fr as Multiselect, ar as NotificationProvider, F as OfflineBanner, Ar as Pagination, lr as Preloader, cr as Radio, Sr as Search, Er as SearchSelect, br as Select, so as Skeleton, Pr as Status, Lr as StickyActionBar, Ir as Switch, Vr as TabPanels, Or as Table, ao as TableFilterDates, fo as TableFilterOptions, wr as Tabs, kr as Textarea, yr as Tooltip, vr as TreeView, Hr as VirtualList, ro as compareValues, So as configureErrorReport, Eo as configureErrorTexts, po as configureUiKit, go as describeError, bo as describeFieldErrors, Mo as errorView, Po as formatErrorDetails, n as getUiKitCopies, s as hasLegacyUiKitOverlay, Lo as hasPreviousPage, Co as isHumanMessage, oo as nextSort, Oo as reconcileColumnOrder, eo as sortRows, Io as supportMailto, R as useCollapseMotion, h as useEnterMotion, Jr as useInfiniteScroll, nr as useNotification, U as useOnlineStatus, Zr as usePagination, Wr as useTableSort, mo as useUiKitViewport, zr as useVirtualList };
|
|
@@ -79,6 +79,33 @@ export declare function isHumanMessage(message: string | undefined): message is
|
|
|
79
79
|
/** Описать ошибку для человека. Отмену запроса возвращает с group 'aborted' и action 'none' — её не показывают. */
|
|
80
80
|
export declare function describeError(error: unknown, options?: DescribeErrorOptions): ErrorDescription;
|
|
81
81
|
/** Ошибки валидации по полям формы — разбор ответа 400/422 (решение дизайнера 20.10.2026: причину — у поля). */
|
|
82
|
+
/**
|
|
83
|
+
* Что запрос значит для экрана — единственное, что сервис решает сам:
|
|
84
|
+
* record — основной ресурс (запись, форма): без него экран не показать;
|
|
85
|
+
* list — основной список экрана: пустая таблица с условиями — тоже содержимое;
|
|
86
|
+
* part — часть экрана в своей карточке (вкладка, чат);
|
|
87
|
+
* extra — вспомогательный запрос или действие: только уведомление, ничего не закрывает.
|
|
88
|
+
*/
|
|
89
|
+
export type ErrorViewRole = 'record' | 'list' | 'part' | 'extra';
|
|
90
|
+
/**
|
|
91
|
+
* content — ошибки нет или запрос отменён; page — ErrorScreen на месте содержимого (крошки и заголовок
|
|
92
|
+
* остаются, действия скрыты); block — ErrorScreen в карточке списка или части, остальное на месте;
|
|
93
|
+
* notice — уведомление при содержимом.
|
|
94
|
+
*/
|
|
95
|
+
export type ErrorView = 'content' | 'page' | 'block' | 'notice';
|
|
96
|
+
export interface ErrorViewInput {
|
|
97
|
+
error: unknown;
|
|
98
|
+
role: ErrorViewRole;
|
|
99
|
+
/** Есть что показать: ранее загруженные данные. */
|
|
100
|
+
hasData?: boolean;
|
|
101
|
+
/** Активны поиск или фильтры: они сохраняются между визитами, без них запрос не исправить. */
|
|
102
|
+
hasQuery?: boolean;
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Заглушка или уведомление — одно правило для всех сервисов:
|
|
106
|
+
* показать нечего и не загрузилось основное — ErrorScreen, иначе уведомление.
|
|
107
|
+
*/
|
|
108
|
+
export declare function errorView({ error, role, hasData, hasQuery }: ErrorViewInput): ErrorView;
|
|
82
109
|
export interface FieldErrors {
|
|
83
110
|
/** Текст ошибки по ключу поля — показывать под полем (проп `error` у полей кита). */
|
|
84
111
|
fields: Record<string, string>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"describeError.d.ts","sourceRoot":"","sources":["../../src/utils/describeError.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"describeError.d.ts","sourceRoot":"","sources":["../../src/utils/describeError.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { startRequestLog$u as
|
|
1
|
+
import { startRequestLog$u as k, getRequestLog$u as j } from "./requestLog.js";
|
|
2
2
|
const N = {
|
|
3
3
|
auth: { title: "Требуется вход", text: "Сессия закончилась. Войдите снова — данные на странице сохранятся.", action: "login", actionLabel: "Войти снова" },
|
|
4
4
|
forbidden: { title: "Нет доступа", text: "У вашей роли нет прав на это действие или раздел. Если доступ нужен для работы, обратитесь к руководителю подразделения.", action: "home", actionLabel: "На главную" },
|
|
@@ -28,7 +28,7 @@ function $(t) {
|
|
|
28
28
|
return t === 401 ? "auth" : t === 403 ? "forbidden" : t === 404 || t === 410 ? "notFound" : t === 400 || t === 422 ? "invalid" : t === 409 || t === 412 ? "conflict" : t === 413 ? "tooLarge" : t === 429 ? "rateLimit" : t === 408 || t === 504 ? "timeout" : "server";
|
|
29
29
|
}
|
|
30
30
|
const l = (t) => typeof t == "object" && t !== null;
|
|
31
|
-
function
|
|
31
|
+
function _(t) {
|
|
32
32
|
const n = t, e = l(n.response) ? n.response : void 0;
|
|
33
33
|
return [n.status, n.statusCode, e == null ? void 0 : e.status].find((r) => typeof r == "number");
|
|
34
34
|
}
|
|
@@ -55,21 +55,21 @@ function D(t) {
|
|
|
55
55
|
if (typeof e == "string" && e) return e;
|
|
56
56
|
}
|
|
57
57
|
}
|
|
58
|
-
function
|
|
58
|
+
function O(t) {
|
|
59
59
|
return !t || t.length > 300 || /\n\s+at |<\/?[a-z][\s\S]*>|Exception|Error:|ОШИБКА:|SQLSTATE|^[A-Z_]+$/.test(t) ? !1 : /[А-Яа-яЁё]/.test(t);
|
|
60
60
|
}
|
|
61
|
-
function
|
|
61
|
+
function R(t) {
|
|
62
62
|
if (typeof t == "number") return { group: $(t), code: t };
|
|
63
63
|
if (typeof Response < "u" && t instanceof Response) return { group: $(t.status), code: t.status };
|
|
64
64
|
if (!l(t)) return { group: "server", code: null };
|
|
65
|
-
if (
|
|
65
|
+
if (_(t) === void 0) {
|
|
66
66
|
const r = typeof t.status == "string" ? t.status : void 0;
|
|
67
67
|
if (r === "TIMEOUT_ERROR") return { group: "timeout", code: null, status: r, message: h(t) };
|
|
68
68
|
const i = B(t);
|
|
69
69
|
if (i) return { group: i, code: null, status: r, message: h(t) };
|
|
70
70
|
if (t instanceof Error && r === void 0) return { group: "render", code: null, message: t.message };
|
|
71
71
|
}
|
|
72
|
-
const n = l(t.response) ? t.response : void 0, e =
|
|
72
|
+
const n = l(t.response) ? t.response : void 0, e = _(t) ?? t.status, o = "data" in t ? t.data : n == null ? void 0 : n.data;
|
|
73
73
|
if (typeof e == "number") return { group: $(e), code: e, body: o, message: C(o) };
|
|
74
74
|
if (e === "PARSING_ERROR") {
|
|
75
75
|
const r = typeof t.originalStatus == "number" ? t.originalStatus : null, i = r !== null && r >= 400 ? r : null;
|
|
@@ -81,7 +81,7 @@ function P(t) {
|
|
|
81
81
|
return t === "forbidden" || t === "auth" ? "forbidden" : t === "notFound" ? "notFound" : "serverError";
|
|
82
82
|
}
|
|
83
83
|
function w(t, n = {}) {
|
|
84
|
-
const e =
|
|
84
|
+
const e = R(t);
|
|
85
85
|
let o = e.group;
|
|
86
86
|
o === "notFound" && n.notFoundIsPage === !1 && (o = "server");
|
|
87
87
|
const r = {
|
|
@@ -95,11 +95,16 @@ function w(t, n = {}) {
|
|
|
95
95
|
};
|
|
96
96
|
if (o === "aborted")
|
|
97
97
|
return { group: o, code: null, variant: "serverError", title: "", text: "", action: "none", actionLabel: "", message: "", details: r };
|
|
98
|
-
const i = p[o], a = n.operation ? `Не удалось ${n.operation}` : n.subject ? `Не удалось загрузить ${n.subject}` : void 0, c = (a && (o === "server" || o === "parsing") ? a : void 0) ?? i.title, d =
|
|
98
|
+
const i = p[o], a = n.operation ? `Не удалось ${n.operation}` : n.subject ? `Не удалось загрузить ${n.subject}` : void 0, c = (a && (o === "server" || o === "parsing") ? a : void 0) ?? i.title, d = O(e.message) ? e.message : void 0, v = a && (o === "network" || o === "timeout") ? `${a}. ${i.text}` : void 0, y = d ?? v ?? i.text, E = d ? `${c}. ${d}` : c;
|
|
99
99
|
return { group: o, code: e.code, variant: P(o), title: c, text: y, action: i.action, actionLabel: i.actionLabel, message: E, details: r };
|
|
100
100
|
}
|
|
101
|
+
function ot({ error: t, role: n, hasData: e = !1, hasQuery: o = !1 }) {
|
|
102
|
+
if (t == null) return "content";
|
|
103
|
+
const { group: r } = R(t);
|
|
104
|
+
return r === "aborted" ? "content" : n === "extra" || e || (r === "invalid" || r === "tooLarge") && n !== "record" ? "notice" : n === "part" || o ? "block" : "page";
|
|
105
|
+
}
|
|
101
106
|
const U = ["field", "property", "path", "name", "key"], W = ["message", "msg", "detail", "error"];
|
|
102
|
-
function
|
|
107
|
+
function L(t) {
|
|
103
108
|
if (typeof t == "string") return t.trim() || void 0;
|
|
104
109
|
if (Array.isArray(t)) {
|
|
105
110
|
const n = t.filter((e) => typeof e == "string" && !!e.trim());
|
|
@@ -115,13 +120,13 @@ function M(t) {
|
|
|
115
120
|
}
|
|
116
121
|
function K(t) {
|
|
117
122
|
for (const n of W) {
|
|
118
|
-
const e =
|
|
123
|
+
const e = L(t[n]);
|
|
119
124
|
if (e) return e;
|
|
120
125
|
}
|
|
121
|
-
return l(t.constraints) ?
|
|
126
|
+
return l(t.constraints) ? L(Object.values(t.constraints)) : void 0;
|
|
122
127
|
}
|
|
123
|
-
function
|
|
124
|
-
const { requiredText: e = "Заполните обязательное поле", ...o } = n, r =
|
|
128
|
+
function rt(t, n = {}) {
|
|
129
|
+
const { requiredText: e = "Заполните обязательное поле", ...o } = n, r = R(t), i = r.group === "invalid" && l(r.body) ? r.body : void 0, a = /* @__PURE__ */ new Map(), g = [], c = (u, m) => {
|
|
125
130
|
const f = a.get(u);
|
|
126
131
|
a.set(u, f && f !== m ? `${f}; ${m}` : m);
|
|
127
132
|
};
|
|
@@ -140,7 +145,7 @@ function ot(t, n = {}) {
|
|
|
140
145
|
} else if (i && l(i.errors)) {
|
|
141
146
|
d = !0;
|
|
142
147
|
for (const [u, m] of Object.entries(i.errors)) {
|
|
143
|
-
const f =
|
|
148
|
+
const f = L(m);
|
|
144
149
|
f && c(u, f);
|
|
145
150
|
}
|
|
146
151
|
}
|
|
@@ -151,29 +156,29 @@ function ot(t, n = {}) {
|
|
|
151
156
|
if (!y.length) return { fields: v, message: w(t, o).message };
|
|
152
157
|
if (!d)
|
|
153
158
|
return { fields: v, firstField: y[0], message: w(t, o).message };
|
|
154
|
-
const E = g.filter(
|
|
159
|
+
const E = g.filter(O), I = E.length ? E.join("; ") : g.length ? w(t, o).title : "";
|
|
155
160
|
return { fields: v, firstField: y[0], message: I };
|
|
156
161
|
}
|
|
157
|
-
const Y = "support@urfu.ru",
|
|
162
|
+
const Y = "support@urfu.ru", it = "Написать в техподдержку";
|
|
158
163
|
let s = {}, b = null;
|
|
159
|
-
function
|
|
160
|
-
s.diagnostics && !b ? b =
|
|
164
|
+
function x() {
|
|
165
|
+
s.diagnostics && !b ? b = k() : !s.diagnostics && b && (b(), b = null);
|
|
161
166
|
}
|
|
162
|
-
function
|
|
167
|
+
function st(t) {
|
|
163
168
|
const n = s;
|
|
164
|
-
return s = { ...s, ...t },
|
|
165
|
-
s = n,
|
|
169
|
+
return s = { ...s, ...t }, x(), () => {
|
|
170
|
+
s = n, x();
|
|
166
171
|
};
|
|
167
172
|
}
|
|
168
|
-
function
|
|
173
|
+
function ut() {
|
|
169
174
|
return s;
|
|
170
175
|
}
|
|
171
|
-
const
|
|
176
|
+
const A = "__qiankun_microapp_wrapper_for_";
|
|
172
177
|
function S() {
|
|
173
178
|
if (s.service) return s.service;
|
|
174
179
|
if (typeof document > "u") return;
|
|
175
|
-
const t = document.querySelector(`[id^="${
|
|
176
|
-
return t ? t.id.slice(
|
|
180
|
+
const t = document.querySelector(`[id^="${A}"]`);
|
|
181
|
+
return t ? t.id.slice(A.length).replace(/_+$/, "").replaceAll("_", "-") : typeof location > "u" ? void 0 : location.host;
|
|
177
182
|
}
|
|
178
183
|
function X(t) {
|
|
179
184
|
const n = [
|
|
@@ -190,7 +195,7 @@ function X(t) {
|
|
|
190
195
|
}
|
|
191
196
|
return t.slice(0, 120);
|
|
192
197
|
}
|
|
193
|
-
function
|
|
198
|
+
function V(t) {
|
|
194
199
|
if (/Windows NT 10/.test(t)) return "Windows 10 или 11";
|
|
195
200
|
if (/Windows NT 6\.3/.test(t)) return "Windows 8.1";
|
|
196
201
|
if (/Windows NT 6\.1/.test(t)) return "Windows 7";
|
|
@@ -199,7 +204,7 @@ function H(t) {
|
|
|
199
204
|
const e = t.match(/(?:iPhone|iPad).*OS ([\d_]+)/);
|
|
200
205
|
return e ? `iOS ${e[1].replaceAll("_", ".")}` : /Mac OS X/.test(t) ? "macOS" : /Linux/.test(t) ? "Linux" : "не определена";
|
|
201
206
|
}
|
|
202
|
-
function
|
|
207
|
+
function H(t) {
|
|
203
208
|
const n = new Date(t);
|
|
204
209
|
return Number.isNaN(n.getTime()) ? t : `${n.toLocaleString("ru-RU", {
|
|
205
210
|
timeZone: "Asia/Yekaterinburg",
|
|
@@ -211,11 +216,11 @@ function Q(t) {
|
|
|
211
216
|
second: "2-digit"
|
|
212
217
|
})} по Екатеринбургу (${t})`;
|
|
213
218
|
}
|
|
214
|
-
function
|
|
219
|
+
function Q(t) {
|
|
215
220
|
return new Date(t).toLocaleTimeString("ru-RU", { timeZone: "Asia/Yekaterinburg", hour12: !1 });
|
|
216
221
|
}
|
|
217
222
|
function Z(t) {
|
|
218
|
-
return `${
|
|
223
|
+
return `${Q(t.time)} ${t.status ? t.status : "—"} ${t.path} ${t.duration} мс`;
|
|
219
224
|
}
|
|
220
225
|
function G() {
|
|
221
226
|
if (typeof document > "u" || typeof window > "u") return;
|
|
@@ -224,8 +229,8 @@ function G() {
|
|
|
224
229
|
const e = window.innerWidth;
|
|
225
230
|
return `${e <= 576 ? "mobile" : e <= 900 ? "tablet" : "desktop"} (по ширине окна, шкала urfu не включена)`;
|
|
226
231
|
}
|
|
227
|
-
function
|
|
228
|
-
return "2.1.7-next.
|
|
232
|
+
function T() {
|
|
233
|
+
return "2.1.7-next.3";
|
|
229
234
|
}
|
|
230
235
|
function z(t) {
|
|
231
236
|
if (!(!s.roles && !t))
|
|
@@ -249,18 +254,18 @@ function J() {
|
|
|
249
254
|
function tt(t, n) {
|
|
250
255
|
const e = G(), o = z(n == null ? void 0 : n.roles);
|
|
251
256
|
if (!t)
|
|
252
|
-
return ["Дополнительные сведения: " + [`кит ${
|
|
253
|
-
const r = n ? n.requests :
|
|
257
|
+
return ["Дополнительные сведения: " + [`кит ${T()}`, e && `брейкпоинт ${e.split(" ")[0]}`, o && o.charAt(0).toLowerCase() + o.slice(1)].filter(Boolean).join("; ")];
|
|
258
|
+
const r = n ? n.requests : j();
|
|
254
259
|
return [
|
|
255
260
|
"",
|
|
256
261
|
"Дополнительные сведения:",
|
|
257
|
-
`Версия кита: ${
|
|
262
|
+
`Версия кита: ${T()}`,
|
|
258
263
|
e ? `Брейкпоинт: ${e}` : void 0,
|
|
259
264
|
o,
|
|
260
265
|
...r.length ? ["Последние запросы (время по Екатеринбургу):", ...r.map(Z)] : ["Последние запросы: нет"]
|
|
261
266
|
];
|
|
262
267
|
}
|
|
263
|
-
function
|
|
268
|
+
function at(t) {
|
|
264
269
|
return F(t, !0);
|
|
265
270
|
}
|
|
266
271
|
function F(t, n) {
|
|
@@ -274,9 +279,9 @@ function F(t, n) {
|
|
|
274
279
|
e.method || e.url ? `Запрос: ${[e.method, e.url].filter(Boolean).join(" ")}` : void 0,
|
|
275
280
|
e.requestId ? `ID запроса: ${e.requestId}` : void 0,
|
|
276
281
|
e.serverMessage ? `${c ? "Ошибка интерфейса" : "Сообщение сервера"}: ${e.serverMessage}` : void 0,
|
|
277
|
-
`Время: ${
|
|
282
|
+
`Время: ${H(e.time)}`,
|
|
278
283
|
r ? `Браузер: ${X(r)}` : void 0,
|
|
279
|
-
r ? `Система: ${
|
|
284
|
+
r ? `Система: ${V(r)}` : void 0,
|
|
280
285
|
o ? `Окно: ${window.innerWidth}×${window.innerHeight}, масштаб ${Math.round((window.devicePixelRatio || 1) * 100)}%` : void 0,
|
|
281
286
|
typeof navigator < "u" && navigator.onLine === !1 ? "Сеть: браузер без связи" : void 0,
|
|
282
287
|
s.user ? `Пользователь: ${s.user}` : void 0,
|
|
@@ -284,7 +289,7 @@ function F(t, n) {
|
|
|
284
289
|
].filter((d) => d !== void 0).join(`
|
|
285
290
|
`);
|
|
286
291
|
}
|
|
287
|
-
function
|
|
292
|
+
function ct(t, n = Y) {
|
|
288
293
|
const e = t.code !== null ? ` (${t.code})` : "", o = S(), r = `Ошибка в личном кабинете: ${o ? `${o} — ` : ""}${t.title}${e}`, i = [
|
|
289
294
|
"Здравствуйте!",
|
|
290
295
|
"",
|
|
@@ -297,4 +302,4 @@ function at(t, n = Y) {
|
|
|
297
302
|
`);
|
|
298
303
|
return `mailto:${n}?subject=${encodeURIComponent(r)}&body=${encodeURIComponent(i)}`;
|
|
299
304
|
}
|
|
300
|
-
export { N as DEFAULT_ERROR_TEXTS$u, Y as DEFAULT_SUPPORT_EMAIL$u,
|
|
305
|
+
export { N as DEFAULT_ERROR_TEXTS$u, Y as DEFAULT_SUPPORT_EMAIL$u, it as DEFAULT_SUPPORT_LABEL$u, st as configureErrorReport$u, nt as configureErrorTexts$u, w as describeError$u, rt as describeFieldErrors$u, ot as errorView$u, at as formatErrorDetails$u, ut as getErrorReportConfig$u, O as isHumanMessage$u, ct as supportMailto$u };
|