urfu-ui-kit-react 2.1.5 → 2.1.7-next.0
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/dist/components/Accordion/Accordion.d.ts +1 -1
- package/dist/components/Accordion/Accordion.d.ts.map +1 -1
- package/dist/components/Accordion/Accordion.js +9 -8
- package/dist/components/Accordion/Accordion.types.d.ts +2 -0
- package/dist/components/Accordion/Accordion.types.d.ts.map +1 -1
- package/dist/components/BreadCrumbs/BreadCrumbs.d.ts.map +1 -1
- package/dist/components/BreadCrumbs/BreadCrumbs.js +20 -19
- package/dist/components/Calendar/Calendar.d.ts.map +1 -1
- package/dist/components/Calendar/Calendar.js +145 -144
- package/dist/components/Calendar/Calendar.types.d.ts +9 -4
- package/dist/components/Calendar/Calendar.types.d.ts.map +1 -1
- package/dist/components/Card/Card.d.ts.map +1 -1
- package/dist/components/Card/Card.js +37 -31
- package/dist/components/ColumnSettings/ColumnSettings.d.ts.map +1 -1
- package/dist/components/ColumnSettings/ColumnSettings.js +72 -72
- package/dist/components/Drawer/Drawer.d.ts +11 -0
- package/dist/components/Drawer/Drawer.d.ts.map +1 -0
- package/dist/components/Drawer/Drawer.js +87 -0
- package/dist/components/Drawer/Drawer.types.d.ts +44 -0
- package/dist/components/Drawer/Drawer.types.d.ts.map +1 -0
- package/dist/components/ErrorScreen/ErrorScreen.d.ts.map +1 -1
- package/dist/components/ErrorScreen/ErrorScreen.js +172 -138
- package/dist/components/FormField/FormField.d.ts +1 -1
- package/dist/components/FormField/FormField.d.ts.map +1 -1
- package/dist/components/FormField/FormField.js +42 -29
- package/dist/components/FormField/FormField.types.d.ts +6 -0
- package/dist/components/FormField/FormField.types.d.ts.map +1 -1
- package/dist/components/InfiniteScroll/InfiniteScroll.d.ts +22 -0
- package/dist/components/InfiniteScroll/InfiniteScroll.d.ts.map +1 -0
- package/dist/components/InfiniteScroll/InfiniteScroll.js +27 -0
- package/dist/components/InputText/InputText.d.ts +39 -2
- package/dist/components/InputText/InputText.d.ts.map +1 -1
- package/dist/components/InputText/InputText.js +103 -94
- package/dist/components/InputText/InputText.types.d.ts +11 -0
- package/dist/components/InputText/InputText.types.d.ts.map +1 -1
- package/dist/components/InputTime/inputTimeKeyDown.d.ts +17 -2
- package/dist/components/InputTime/inputTimeKeyDown.d.ts.map +1 -1
- package/dist/components/InputTime/useInputTimeWheel.d.ts +13 -1
- package/dist/components/InputTime/useInputTimeWheel.d.ts.map +1 -1
- package/dist/components/Menu/Menu.d.ts.map +1 -1
- package/dist/components/Menu/Menu.js +54 -49
- package/dist/components/Modal/Modal.d.ts.map +1 -1
- package/dist/components/Modal/Modal.js +52 -49
- package/dist/components/Modal/Modal.types.d.ts +4 -2
- package/dist/components/Modal/Modal.types.d.ts.map +1 -1
- package/dist/components/Modal/useModalTitleClearance.js +5 -5
- package/dist/components/Multiselect/Multiselect.js +1 -1
- package/dist/components/Notification/Notification.d.ts.map +1 -1
- package/dist/components/Notification/Notification.js +97 -86
- package/dist/components/OfflineBanner/OfflineBanner.d.ts.map +1 -1
- package/dist/components/OfflineBanner/OfflineBanner.js +40 -32
- package/dist/components/Pagination/Pagination.d.ts.map +1 -1
- package/dist/components/Pagination/Pagination.js +61 -66
- package/dist/components/SearchSelect/SearchSelect.d.ts.map +1 -1
- package/dist/components/SearchSelect/SearchSelect.js +137 -134
- package/dist/components/TabPanels/TabPanels.d.ts +13 -0
- package/dist/components/TabPanels/TabPanels.d.ts.map +1 -0
- package/dist/components/TabPanels/TabPanels.js +8 -0
- package/dist/components/Table/Filter/Filter.d.ts.map +1 -1
- package/dist/components/Table/Filter/Filter.js +47 -47
- package/dist/components/Table/Filter/Filter.types.d.ts +2 -1
- package/dist/components/Table/Filter/Filter.types.d.ts.map +1 -1
- package/dist/components/Table/Filter/SelectFilter.d.ts.map +1 -1
- package/dist/components/Table/Filter/SelectFilter.js +9 -9
- package/dist/components/Table/Table.d.ts +1 -1
- package/dist/components/Table/Table.d.ts.map +1 -1
- package/dist/components/Table/Table.dataPipeline.d.ts +4 -3
- package/dist/components/Table/Table.dataPipeline.d.ts.map +1 -1
- package/dist/components/Table/Table.dataPipeline.js +63 -62
- package/dist/components/Table/Table.js +297 -297
- package/dist/components/Table/Table.rowTypes.d.ts +6 -0
- package/dist/components/Table/Table.rowTypes.d.ts.map +1 -0
- package/dist/components/Table/Table.types.d.ts +10 -3
- package/dist/components/Table/Table.types.d.ts.map +1 -1
- package/dist/components/Table/TableHead.d.ts +27 -19
- package/dist/components/Table/TableHead.d.ts.map +1 -1
- package/dist/components/Table/TableHead.js +1 -1
- package/dist/components/Table/TableMobileCard.d.ts +11 -11
- package/dist/components/Table/TableMobileCard.d.ts.map +1 -1
- package/dist/components/Table/TableMobileCard.js +81 -84
- package/dist/components/Table/TableMobileView.d.ts +7 -5
- package/dist/components/Table/TableMobileView.d.ts.map +1 -1
- package/dist/components/Table/TableRow.d.ts +10 -8
- package/dist/components/Table/TableRow.d.ts.map +1 -1
- package/dist/components/Table/TableRow.js +116 -112
- package/dist/components/Table/useTableColumnPinning.d.ts.map +1 -1
- package/dist/components/Table/useTableVirtualization.d.ts +5 -5
- package/dist/components/Table/useTableVirtualization.d.ts.map +1 -1
- package/dist/components/Table/useTableVirtualization.js +20 -20
- package/dist/components/Tabs/Tabs.d.ts +1 -1
- package/dist/components/Tabs/Tabs.d.ts.map +1 -1
- package/dist/components/Tabs/Tabs.js +109 -104
- package/dist/components/Tabs/Tabs.types.d.ts +29 -1
- package/dist/components/Tabs/Tabs.types.d.ts.map +1 -1
- package/dist/components/Tabs/distributeTabs.d.ts +6 -0
- package/dist/components/Tabs/distributeTabs.d.ts.map +1 -1
- package/dist/components/Tabs/tabsIndicator.d.ts +7 -3
- package/dist/components/Tabs/tabsIndicator.d.ts.map +1 -1
- package/dist/components/Tabs/tabsScroll.d.ts +20 -0
- package/dist/components/Tabs/tabsScroll.d.ts.map +1 -0
- package/dist/components/Tabs/useTabsOverflow.d.ts +3 -1
- package/dist/components/Tabs/useTabsOverflow.d.ts.map +1 -1
- package/dist/components/Tabs/useTabsOverflow.js +32 -32
- package/dist/components/Tabs/useTabsScroll.d.ts +4 -0
- package/dist/components/Tabs/useTabsScroll.d.ts.map +1 -0
- package/dist/components/Tabs/useTabsScroll.js +17 -0
- package/dist/components/Textarea/Textarea.d.ts +22 -2
- package/dist/components/Textarea/Textarea.d.ts.map +1 -1
- package/dist/components/Textarea/Textarea.js +48 -43
- package/dist/components/Textarea/Textarea.types.d.ts +1 -0
- package/dist/components/Textarea/Textarea.types.d.ts.map +1 -1
- package/dist/components/Tooltip/Tooltip.d.ts +1 -1
- package/dist/components/Tooltip/Tooltip.d.ts.map +1 -1
- package/dist/components/Tooltip/Tooltip.js +151 -132
- package/dist/components/Tooltip/Tooltip.types.d.ts +7 -2
- package/dist/components/Tooltip/Tooltip.types.d.ts.map +1 -1
- package/dist/components/TreeView/TreeView.js +95 -95
- package/dist/components/TreeView/TreeView.types.d.ts +1 -1
- package/dist/components/TreeView/TreeView.types.d.ts.map +1 -1
- package/dist/components/VirtualList/VirtualList.d.ts +45 -0
- package/dist/components/VirtualList/VirtualList.d.ts.map +1 -0
- package/dist/components/VirtualList/VirtualList.js +62 -0
- package/dist/dev/index.js +1306 -584
- package/dist/dev/types/react/src/dev/index.d.ts +1 -1
- package/dist/dev/types/vanilla/src/core/motion.d.ts +41 -0
- package/dist/dev/types/vanilla/src/core/requestLog.d.ts +29 -0
- package/dist/dev/types/vanilla/src/dev/highlight.d.ts +32 -0
- package/dist/dev/types/vanilla/src/dev/intercept.d.ts +4 -1
- package/dist/dev/types/vanilla/src/dev/motionModes.d.ts +30 -0
- package/dist/dev/types/vanilla/src/dev/panelKit.d.ts +49 -0
- package/dist/dev/types/vanilla/src/dev/panelStyles.d.ts +7 -0
- package/dist/dev/types/vanilla/src/dev/rules.d.ts +31 -0
- package/dist/dev/types/vanilla/src/dev/store.d.ts +7 -4
- package/dist/dev/types/vanilla/src/dev/types.d.ts +14 -3
- package/dist/dev/types/vanilla/src/dev/viewModes.d.ts +22 -0
- package/dist/hooks/useCollapseMotion.d.ts +18 -0
- package/dist/hooks/useCollapseMotion.d.ts.map +1 -0
- package/dist/hooks/useCollapseMotion.js +9 -0
- package/dist/hooks/useDismiss.d.ts +7 -1
- package/dist/hooks/useDismiss.d.ts.map +1 -1
- package/dist/hooks/useDismiss.js +19 -17
- package/dist/hooks/useEnterMotion.d.ts +9 -0
- package/dist/hooks/useEnterMotion.d.ts.map +1 -0
- package/dist/hooks/useEnterMotion.js +10 -0
- package/dist/hooks/useForwardedRef.d.ts +8 -0
- package/dist/hooks/useForwardedRef.d.ts.map +1 -0
- package/dist/hooks/useForwardedRef.js +8 -0
- package/dist/hooks/useInfiniteScroll.d.ts +27 -0
- package/dist/hooks/useInfiniteScroll.d.ts.map +1 -0
- package/dist/hooks/useInfiniteScroll.js +13 -0
- package/dist/hooks/useMountTransition.d.ts +1 -1
- package/dist/hooks/useMountTransition.d.ts.map +1 -1
- package/dist/hooks/useMountTransition.js +14 -13
- package/dist/hooks/useVirtualList.d.ts +34 -0
- package/dist/hooks/useVirtualList.d.ts.map +1 -0
- package/dist/hooks/useVirtualList.js +21 -0
- package/dist/index.d.ts +15 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/shared/collapseMotion.d.ts +32 -0
- package/dist/shared/collapseMotion.d.ts.map +1 -0
- package/dist/shared/infiniteScroll.d.ts +42 -0
- package/dist/shared/infiniteScroll.d.ts.map +1 -0
- package/dist/shared/kitCopy.js +1 -1
- package/dist/shared/linkClick.d.ts +7 -0
- package/dist/shared/linkClick.d.ts.map +1 -0
- package/dist/shared/motion.d.ts +42 -0
- package/dist/shared/motion.d.ts.map +1 -0
- package/dist/shared/popupTransition.d.ts +10 -2
- package/dist/shared/popupTransition.d.ts.map +1 -1
- package/dist/shared/popupTransition.js +6 -5
- package/dist/shared/virtualList.d.ts +103 -0
- package/dist/shared/virtualList.d.ts.map +1 -0
- package/dist/style-no-fonts.css +1 -1
- package/dist/style.css +1 -1
- package/dist/style.layer.css +2 -2
- package/dist/style.shell.css +5 -5
- package/dist/urfu-ui-kit-react.js +53 -45
- package/dist/utils/describeError.d.ts +12 -1
- package/dist/utils/describeError.d.ts.map +1 -1
- package/dist/vanilla/core/collapseMotion.js +58 -0
- package/dist/vanilla/core/dateMask.js +6 -6
- package/dist/vanilla/core/describeError.js +169 -112
- package/dist/vanilla/core/distributeTabs.js +23 -20
- package/dist/vanilla/core/infiniteScroll.js +79 -0
- package/dist/vanilla/core/kitRegistry.js +4 -4
- package/dist/vanilla/core/linkClick.js +2 -0
- package/dist/vanilla/core/motion.js +29 -0
- package/dist/vanilla/core/requestLog.js +40 -0
- package/dist/vanilla/core/tabsIndicator.js +29 -26
- package/dist/vanilla/core/tabsScroll.js +29 -0
- package/dist/vanilla/core/virtualList.js +213 -0
- package/package.json +1 -1
package/dist/dev/index.js
CHANGED
|
@@ -1,415 +1,962 @@
|
|
|
1
|
-
import { useSyncExternalStore as
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
1
|
+
import { useSyncExternalStore as zr } from "react";
|
|
2
|
+
const se = 10, Dr = /* @__PURE__ */ new Set(["fetch", "xmlhttprequest"]);
|
|
3
|
+
let M = [];
|
|
4
|
+
function Tr(t, e = typeof location > "u" ? "" : location.href) {
|
|
5
|
+
try {
|
|
6
|
+
const r = new URL(t, e || void 0), o = e ? new URL(e).origin : "";
|
|
7
|
+
return r.origin === o ? r.pathname : `${r.host}${r.pathname}`;
|
|
8
|
+
} catch {
|
|
9
|
+
return t.split(/[?#]/)[0];
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
function Mr(t) {
|
|
13
|
+
for (const e of t) {
|
|
14
|
+
const r = e;
|
|
15
|
+
Dr.has(r.initiatorType) && M.push({
|
|
16
|
+
time: Math.round((performance.timeOrigin || 0) + r.startTime),
|
|
17
|
+
path: Tr(r.name),
|
|
18
|
+
status: typeof r.responseStatus == "number" ? r.responseStatus : void 0,
|
|
19
|
+
duration: Math.round(r.duration)
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
M.length > se && (M = M.slice(-se));
|
|
23
|
+
}
|
|
24
|
+
function Br() {
|
|
25
|
+
return M;
|
|
26
|
+
}
|
|
27
|
+
function Rr() {
|
|
28
|
+
if (typeof PerformanceObserver > "u") return () => {
|
|
29
|
+
};
|
|
30
|
+
let t;
|
|
31
|
+
try {
|
|
32
|
+
t = new PerformanceObserver((e) => Mr(e.getEntries())), t.observe({ type: "resource", buffered: !0 });
|
|
33
|
+
} catch {
|
|
34
|
+
return () => {
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
return () => {
|
|
38
|
+
t.disconnect(), M = [];
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
let pt = [], Or = 1;
|
|
42
|
+
const Rt = /* @__PURE__ */ new Set();
|
|
43
|
+
let ct = !1;
|
|
44
|
+
function Ot() {
|
|
45
|
+
ct || (ct = !0, setTimeout(() => {
|
|
46
|
+
ct = !1, Rt.forEach((t) => t());
|
|
8
47
|
}, 16));
|
|
9
48
|
}
|
|
10
|
-
function
|
|
11
|
-
const o = Date.now(),
|
|
12
|
-
|
|
13
|
-
let
|
|
14
|
-
return (
|
|
15
|
-
|
|
49
|
+
function qr(t, e, r) {
|
|
50
|
+
const o = Date.now(), a = { id: Or++, service: t, method: e.toUpperCase(), path: r, status: "pending", duration: null, endedAt: null, faked: !1 };
|
|
51
|
+
pt = [...pt.slice(-49), a], Ot();
|
|
52
|
+
let n = !1;
|
|
53
|
+
return (i, u) => {
|
|
54
|
+
n || (n = !0, a.status = i, a.faked = u, a.endedAt = Date.now(), a.duration = a.endedAt - o, Ot());
|
|
16
55
|
};
|
|
17
56
|
}
|
|
18
|
-
function
|
|
19
|
-
return [...
|
|
57
|
+
function Qt() {
|
|
58
|
+
return [...pt].reverse();
|
|
20
59
|
}
|
|
21
|
-
function
|
|
22
|
-
|
|
60
|
+
function Se() {
|
|
61
|
+
pt = [], ct = !1, Ot();
|
|
23
62
|
}
|
|
24
|
-
function
|
|
25
|
-
return
|
|
26
|
-
|
|
63
|
+
function Ir(t) {
|
|
64
|
+
return Rt.add(t), () => {
|
|
65
|
+
Rt.delete(t);
|
|
27
66
|
};
|
|
28
67
|
}
|
|
29
|
-
const
|
|
30
|
-
|
|
31
|
-
const bt = (t) => `${pt}${t}`, _t = ["offline", "network", "slow"];
|
|
32
|
-
let L = null;
|
|
33
|
-
const q = /* @__PURE__ */ new Set();
|
|
34
|
-
function Wt() {
|
|
35
|
-
let t;
|
|
68
|
+
const Le = 6e4, _e = 1e5, ze = 1500;
|
|
69
|
+
function De(t) {
|
|
36
70
|
try {
|
|
37
|
-
|
|
71
|
+
return JSON.parse(t), !0;
|
|
72
|
+
} catch {
|
|
73
|
+
return !1;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
const B = (t) => typeof t == "string";
|
|
77
|
+
function Te(t) {
|
|
78
|
+
if (!(typeof t != "number" || !Number.isFinite(t) || t <= 0))
|
|
79
|
+
return Math.min(Math.round(t), Le);
|
|
80
|
+
}
|
|
81
|
+
function Me(t) {
|
|
82
|
+
if (!t || typeof t != "object") return null;
|
|
83
|
+
const e = t;
|
|
84
|
+
if (!B(e.path) || !e.path || typeof e.status != "number" || !Number.isInteger(e.status) || e.status < 100 || e.status > 599) return null;
|
|
85
|
+
const r = Te(e.delay);
|
|
86
|
+
return {
|
|
87
|
+
path: e.path,
|
|
88
|
+
status: e.status,
|
|
89
|
+
...B(e.method) && e.method ? { method: e.method } : {},
|
|
90
|
+
...B(e.message) ? { message: e.message } : {},
|
|
91
|
+
...e.html === !0 ? { html: !0 } : {},
|
|
92
|
+
...B(e.body) && e.body && e.body.length <= _e ? { body: e.body } : {},
|
|
93
|
+
...r ? { delay: r } : {}
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
function Pr(t) {
|
|
97
|
+
const e = Me(t);
|
|
98
|
+
if (!e) return null;
|
|
99
|
+
const { id: r, enabled: o } = t;
|
|
100
|
+
return B(r) && r ? { ...e, id: r, enabled: o !== !1 } : null;
|
|
101
|
+
}
|
|
102
|
+
const ft = "devRules", Nr = (t) => {
|
|
103
|
+
const e = new TextEncoder().encode(t);
|
|
104
|
+
let r = "";
|
|
105
|
+
return e.forEach((o) => {
|
|
106
|
+
r += String.fromCharCode(o);
|
|
107
|
+
}), btoa(r).replace(/\+/g, "-").replace(/\//g, "_").replace(/=+$/, "");
|
|
108
|
+
}, jr = (t) => {
|
|
109
|
+
const e = atob(t.replace(/-/g, "+").replace(/_/g, "/"));
|
|
110
|
+
return new TextDecoder().decode(Uint8Array.from(e, (r) => r.charCodeAt(0)));
|
|
111
|
+
};
|
|
112
|
+
function Ur(t) {
|
|
113
|
+
let e = 0;
|
|
114
|
+
const r = t.map(({ service: o, rule: a }) => {
|
|
115
|
+
const n = a.body !== void 0 && a.body.length <= ze;
|
|
116
|
+
return a.body !== void 0 && !n && (e += 1), {
|
|
117
|
+
s: o,
|
|
118
|
+
...a.method ? { m: a.method } : {},
|
|
119
|
+
p: a.path,
|
|
120
|
+
c: a.status,
|
|
121
|
+
...a.message !== void 0 ? { t: a.message } : {},
|
|
122
|
+
...a.html ? { h: 1 } : {},
|
|
123
|
+
...n ? { b: a.body } : {},
|
|
124
|
+
...a.delay ? { d: a.delay } : {}
|
|
125
|
+
};
|
|
126
|
+
});
|
|
127
|
+
return { value: Nr(JSON.stringify(r)), droppedBodies: e };
|
|
128
|
+
}
|
|
129
|
+
function Hr(t) {
|
|
130
|
+
try {
|
|
131
|
+
const e = JSON.parse(jr(t));
|
|
132
|
+
return Array.isArray(e) ? e.flatMap((r) => {
|
|
133
|
+
if (!r || typeof r != "object" || !B(r.s)) return [];
|
|
134
|
+
const o = Me({
|
|
135
|
+
method: r.m,
|
|
136
|
+
path: r.p,
|
|
137
|
+
status: r.c,
|
|
138
|
+
message: r.t,
|
|
139
|
+
html: r.h === 1,
|
|
140
|
+
body: r.b,
|
|
141
|
+
delay: r.d
|
|
142
|
+
});
|
|
143
|
+
return o ? [{ service: r.s, rule: o }] : [];
|
|
144
|
+
}) : [];
|
|
145
|
+
} catch {
|
|
146
|
+
return [];
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
const Be = "urfu-ui-kit:dev:", A = /* @__PURE__ */ new Map(), qt = /* @__PURE__ */ new Set();
|
|
150
|
+
let Re;
|
|
151
|
+
const Oe = (t) => `${Be}${t}`, Zr = ["offline", "network", "slow"];
|
|
152
|
+
let I = null, P = null;
|
|
153
|
+
const ht = /* @__PURE__ */ new Set(), qe = () => `rule-${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 6)}`;
|
|
154
|
+
function Kr() {
|
|
155
|
+
let t, e;
|
|
156
|
+
try {
|
|
157
|
+
const r = new URLSearchParams(window.location.search);
|
|
158
|
+
t = r.get("dev"), e = r.get(ft);
|
|
38
159
|
} catch {
|
|
39
160
|
return;
|
|
40
161
|
}
|
|
41
|
-
if (t
|
|
162
|
+
if (!(t === null && e === null)) {
|
|
42
163
|
if (t === "off") {
|
|
43
|
-
|
|
164
|
+
I = null, P = null;
|
|
44
165
|
try {
|
|
45
|
-
Object.keys(localStorage).filter((
|
|
166
|
+
Object.keys(localStorage).filter((r) => r.startsWith(Be)).forEach((r) => localStorage.removeItem(r));
|
|
46
167
|
} catch {
|
|
47
168
|
}
|
|
48
169
|
} else
|
|
49
|
-
|
|
170
|
+
t !== null && (I = t.split(",").map((r) => r.trim()).filter(Boolean)), e !== null && (P = Hr(e)), ht.clear();
|
|
50
171
|
try {
|
|
51
|
-
const
|
|
52
|
-
|
|
172
|
+
const r = new URL(window.location.href);
|
|
173
|
+
r.searchParams.delete("dev"), r.searchParams.delete(ft), window.history.replaceState(window.history.state, "", r.href);
|
|
53
174
|
} catch {
|
|
54
175
|
}
|
|
55
176
|
}
|
|
56
177
|
}
|
|
57
|
-
function
|
|
58
|
-
return [...
|
|
178
|
+
function Vr(t) {
|
|
179
|
+
return [...Zr, ...t.builtins ?? [], ...(t.groups ?? []).flatMap((e) => e.items.map((r) => r.id))];
|
|
59
180
|
}
|
|
60
|
-
function
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
181
|
+
function Wr(t) {
|
|
182
|
+
const e = t.config.service;
|
|
183
|
+
if (!I && !P || ht.has(e)) return;
|
|
184
|
+
const r = new Set(Vr(t.config)), o = I ? I.filter((n) => r.has(n)) : [], a = P ? P.filter((n) => n.service === e).map((n) => ({ ...n.rule, id: qe(), enabled: !0 })) : null;
|
|
185
|
+
!o.length && !a || (ht.add(e), t.state = { ...t.state, faults: o, ...a ? { rules: a } : {} }, at(e, t.state));
|
|
64
186
|
}
|
|
65
|
-
function
|
|
187
|
+
function Jr(t) {
|
|
66
188
|
try {
|
|
67
|
-
const e = JSON.parse(localStorage.getItem(
|
|
189
|
+
const e = JSON.parse(localStorage.getItem(Oe(t)) ?? "null");
|
|
68
190
|
return {
|
|
69
|
-
faults: Array.isArray(e == null ? void 0 : e.faults) ? e.faults.filter((
|
|
70
|
-
rules: Array.isArray(e == null ? void 0 : e.rules) ? e.rules : [],
|
|
191
|
+
faults: Array.isArray(e == null ? void 0 : e.faults) ? e.faults.filter((r) => typeof r == "string") : [],
|
|
192
|
+
rules: Array.isArray(e == null ? void 0 : e.rules) ? e.rules.flatMap((r) => Pr(r) ?? []) : [],
|
|
71
193
|
...(e == null ? void 0 : e.launcher) === "visible" || (e == null ? void 0 : e.launcher) === "hidden" ? { launcher: e.launcher } : {}
|
|
72
194
|
};
|
|
73
195
|
} catch {
|
|
74
196
|
return { faults: [], rules: [] };
|
|
75
197
|
}
|
|
76
198
|
}
|
|
77
|
-
function
|
|
199
|
+
function at(t, e) {
|
|
78
200
|
try {
|
|
79
|
-
localStorage.setItem(
|
|
201
|
+
localStorage.setItem(Oe(t), JSON.stringify(e));
|
|
80
202
|
} catch {
|
|
81
203
|
}
|
|
82
204
|
}
|
|
83
|
-
function
|
|
84
|
-
t && (
|
|
205
|
+
function Yr(t) {
|
|
206
|
+
t && (Re = t);
|
|
85
207
|
}
|
|
86
|
-
function
|
|
87
|
-
return
|
|
208
|
+
function Xr() {
|
|
209
|
+
return Re;
|
|
88
210
|
}
|
|
89
|
-
function
|
|
90
|
-
const
|
|
91
|
-
return
|
|
211
|
+
function Gr(t, e) {
|
|
212
|
+
const r = { config: t, state: Jr(t.service), kit: e };
|
|
213
|
+
return Wr(r), A.set(t.service, r), U(), r;
|
|
92
214
|
}
|
|
93
|
-
function
|
|
94
|
-
|
|
215
|
+
function Qr(t) {
|
|
216
|
+
A.delete(t), A.size || (I = null, P = null, ht.clear()), U();
|
|
95
217
|
}
|
|
96
|
-
function
|
|
97
|
-
return [...
|
|
218
|
+
function y() {
|
|
219
|
+
return [...A.values()];
|
|
98
220
|
}
|
|
99
|
-
function
|
|
100
|
-
return t ?
|
|
221
|
+
function le(t) {
|
|
222
|
+
return t ? A.get(t) : A.values().next().value;
|
|
101
223
|
}
|
|
102
|
-
function
|
|
103
|
-
return
|
|
104
|
-
|
|
224
|
+
function Ie(t) {
|
|
225
|
+
return qt.add(t), () => {
|
|
226
|
+
qt.delete(t);
|
|
105
227
|
};
|
|
106
228
|
}
|
|
107
|
-
function
|
|
108
|
-
|
|
229
|
+
function U() {
|
|
230
|
+
qt.forEach((t) => t());
|
|
109
231
|
}
|
|
110
|
-
function
|
|
111
|
-
t.state = e,
|
|
232
|
+
function $t(t, e) {
|
|
233
|
+
t.state = e, at(t.config.service, e), U();
|
|
112
234
|
}
|
|
113
|
-
function
|
|
114
|
-
const o = t.state.faults.filter((
|
|
115
|
-
|
|
235
|
+
function to(t, e, r) {
|
|
236
|
+
const o = t.state.faults.filter((a) => a !== e);
|
|
237
|
+
$t(t, { ...t.state, faults: r ? [...o, e] : o });
|
|
116
238
|
}
|
|
117
|
-
function
|
|
118
|
-
|
|
119
|
-
W(t, { ...t.state, rules: [...t.state.rules, { ...e, id: n, enabled: !0 }] });
|
|
239
|
+
function eo(t, e) {
|
|
240
|
+
$t(t, { ...t.state, rules: [...t.state.rules, { ...e, id: qe(), enabled: !0 }] });
|
|
120
241
|
}
|
|
121
|
-
function
|
|
122
|
-
|
|
242
|
+
function ro(t, e, r) {
|
|
243
|
+
$t(t, { ...t.state, rules: t.state.rules.map((o) => o.id === e ? { ...o, enabled: r } : o) });
|
|
123
244
|
}
|
|
124
|
-
function
|
|
125
|
-
|
|
245
|
+
function oo(t, e) {
|
|
246
|
+
$t(t, { ...t.state, rules: t.state.rules.filter((r) => r.id !== e) });
|
|
126
247
|
}
|
|
127
|
-
function
|
|
128
|
-
|
|
129
|
-
t.state = { faults: [], rules: [], ...t.state.launcher ? { launcher: t.state.launcher } : {} },
|
|
130
|
-
}),
|
|
248
|
+
function ao() {
|
|
249
|
+
A.forEach((t) => {
|
|
250
|
+
t.state = { faults: [], rules: [], ...t.state.launcher ? { launcher: t.state.launcher } : {} }, at(t.config.service, t.state);
|
|
251
|
+
}), U();
|
|
131
252
|
}
|
|
132
|
-
function
|
|
253
|
+
function bt(t) {
|
|
133
254
|
return t.state.faults.length + t.state.rules.filter((e) => e.enabled).length;
|
|
134
255
|
}
|
|
135
|
-
function
|
|
256
|
+
function no(t) {
|
|
136
257
|
return t.state.launcher ?? t.config.launcher ?? "visible";
|
|
137
258
|
}
|
|
138
|
-
function
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
}),
|
|
142
|
-
}
|
|
143
|
-
const re = 1e4, rt = 200, T = ".u-error-screen, .u-notification-fail, .u-notification-warning, .u-offline-banner-offline";
|
|
144
|
-
let F = [], se = 1;
|
|
145
|
-
const V = /* @__PURE__ */ new WeakMap(), H = /* @__PURE__ */ new Set();
|
|
146
|
-
let y = null;
|
|
147
|
-
const $ = (t) => {
|
|
148
|
-
const e = (t ?? "").replace(/\s+/g, " ").trim();
|
|
149
|
-
return e.length > rt ? `${e.slice(0, rt - 1)}…` : e;
|
|
150
|
-
}, ie = (t) => t.status === "network" || typeof t.status == "number" && t.status >= 400;
|
|
151
|
-
function le(t, e) {
|
|
152
|
-
var i;
|
|
153
|
-
const n = m().map((f) => f.config.service), o = (i = e.closest("[data-name]")) == null ? void 0 : i.getAttribute("data-name"), r = o && n.includes(o) ? o : null, a = nt().find((f) => ie(f) && f.endedAt !== null && t - f.endedAt <= re && (!r || f.service === r));
|
|
154
|
-
if (!a) return;
|
|
155
|
-
const s = `${a.method} ${a.path} → ${a.status === "network" ? "сеть" : a.status}`;
|
|
156
|
-
return n.length > 1 ? `${a.service}: ${s}` : s;
|
|
259
|
+
function io() {
|
|
260
|
+
A.forEach((t) => {
|
|
261
|
+
t.state = { faults: t.state.faults, rules: t.state.rules }, at(t.config.service, t.state);
|
|
262
|
+
}), U();
|
|
157
263
|
}
|
|
158
264
|
function ce(t) {
|
|
159
|
-
|
|
265
|
+
A.forEach((e) => {
|
|
266
|
+
e.state = { ...e.state, launcher: t }, at(e.config.service, e.state);
|
|
267
|
+
}), U();
|
|
268
|
+
}
|
|
269
|
+
const uo = 1e4, de = 200, X = ".u-error-screen, .u-notification-fail, .u-notification-warning, .u-offline-banner-offline";
|
|
270
|
+
let vt = [], so = 1;
|
|
271
|
+
const It = /* @__PURE__ */ new WeakMap(), gt = /* @__PURE__ */ new Set();
|
|
272
|
+
let L = null;
|
|
273
|
+
const D = (t) => {
|
|
274
|
+
const e = (t ?? "").replace(/\s+/g, " ").trim();
|
|
275
|
+
return e.length > de ? `${e.slice(0, de - 1)}…` : e;
|
|
276
|
+
}, lo = (t) => t.status === "network" || typeof t.status == "number" && t.status >= 400;
|
|
277
|
+
function co(t, e) {
|
|
278
|
+
var u;
|
|
279
|
+
const r = y().map((p) => p.config.service), o = (u = e.closest("[data-name]")) == null ? void 0 : u.getAttribute("data-name"), a = o && r.includes(o) ? o : null, n = Qt().find((p) => lo(p) && p.endedAt !== null && t - p.endedAt <= uo && (!a || p.service === a));
|
|
280
|
+
if (!n) return;
|
|
281
|
+
const i = `${n.method} ${n.path} → ${n.status === "network" ? "сеть" : n.status}`;
|
|
282
|
+
return r.length > 1 ? `${n.service}: ${i}` : i;
|
|
283
|
+
}
|
|
284
|
+
function po(t) {
|
|
285
|
+
var o, a, n;
|
|
160
286
|
if (t.classList.contains("u-error-screen"))
|
|
161
287
|
return {
|
|
162
288
|
kind: "screen",
|
|
163
289
|
// Код — в data-error-code на корне заглушки: крупный код рисуется не у всех вариантов (forbidden, serverError).
|
|
164
290
|
// .u-error-screen-code — для разметки кита до появления атрибута.
|
|
165
|
-
code:
|
|
166
|
-
title:
|
|
167
|
-
text:
|
|
291
|
+
code: D(t.dataset.errorCode || ((o = t.querySelector(".u-error-screen-code")) == null ? void 0 : o.textContent)) || void 0,
|
|
292
|
+
title: D((a = t.querySelector(".u-error-screen-title")) == null ? void 0 : a.textContent) || D(t.getAttribute("aria-label")) || "Заглушка",
|
|
293
|
+
text: D((n = t.querySelector(".u-error-screen-description")) == null ? void 0 : n.textContent) || void 0
|
|
168
294
|
};
|
|
169
295
|
if (t.classList.contains("u-offline-banner-offline"))
|
|
170
|
-
return { kind: "offline", title:
|
|
171
|
-
const e = t.classList.contains("u-notification-fail") ? "fail" : "warning",
|
|
172
|
-
return { kind: "notification", variant: e, title:
|
|
296
|
+
return { kind: "offline", title: D(t.textContent) || "Нет связи" };
|
|
297
|
+
const e = t.classList.contains("u-notification-fail") ? "fail" : "warning", r = t.querySelector(".u-notification-content") ?? t;
|
|
298
|
+
return { kind: "notification", variant: e, title: D(r.textContent) || "Уведомление" };
|
|
173
299
|
}
|
|
174
|
-
function
|
|
175
|
-
if (!t.isConnected || !t.matches(
|
|
176
|
-
const e =
|
|
300
|
+
function pe(t) {
|
|
301
|
+
if (!t.isConnected || !t.matches(X)) return;
|
|
302
|
+
const e = po(t);
|
|
177
303
|
if (!e) return;
|
|
178
|
-
const
|
|
179
|
-
if (
|
|
180
|
-
|
|
304
|
+
const r = JSON.stringify(e);
|
|
305
|
+
if (It.get(t) === r) return;
|
|
306
|
+
It.set(t, r);
|
|
181
307
|
const o = Date.now();
|
|
182
|
-
|
|
308
|
+
vt = [...vt.slice(-29), { id: so++, at: o, ...e, cause: co(o, t) }], gt.forEach((a) => a());
|
|
183
309
|
}
|
|
184
|
-
function
|
|
185
|
-
t instanceof Element && (t.matches(
|
|
310
|
+
function fo(t, e) {
|
|
311
|
+
t instanceof Element && (t.matches(X) && e.push(t), t.querySelectorAll(X).forEach((r) => e.push(r)));
|
|
186
312
|
}
|
|
187
|
-
function
|
|
188
|
-
|
|
313
|
+
function ho() {
|
|
314
|
+
L || typeof MutationObserver > "u" || (L = new MutationObserver((t) => {
|
|
189
315
|
const e = [];
|
|
190
|
-
t.forEach((
|
|
191
|
-
if (
|
|
192
|
-
|
|
316
|
+
t.forEach((r) => {
|
|
317
|
+
if (r.type === "childList") {
|
|
318
|
+
r.addedNodes.forEach((a) => fo(a, e));
|
|
193
319
|
return;
|
|
194
320
|
}
|
|
195
|
-
const o =
|
|
196
|
-
o.matches(
|
|
197
|
-
}), e.length && setTimeout(() => e.forEach(
|
|
198
|
-
}),
|
|
321
|
+
const o = r.target;
|
|
322
|
+
o.matches(X) ? e.push(o) : It.delete(o);
|
|
323
|
+
}), e.length && setTimeout(() => e.forEach(pe), 0);
|
|
324
|
+
}), L.observe(document.documentElement, { childList: !0, subtree: !0, attributes: !0, attributeFilter: ["data-error-code", "class"] }), document.querySelectorAll(X).forEach(pe));
|
|
199
325
|
}
|
|
200
|
-
function
|
|
201
|
-
|
|
326
|
+
function bo() {
|
|
327
|
+
L == null || L.disconnect(), L = null;
|
|
202
328
|
}
|
|
203
|
-
function
|
|
204
|
-
return [...
|
|
329
|
+
function Pe() {
|
|
330
|
+
return [...vt].reverse();
|
|
205
331
|
}
|
|
206
|
-
function
|
|
207
|
-
|
|
332
|
+
function Ne() {
|
|
333
|
+
vt = [], gt.forEach((t) => t());
|
|
208
334
|
}
|
|
209
|
-
function
|
|
210
|
-
return
|
|
211
|
-
|
|
335
|
+
function vo(t) {
|
|
336
|
+
return gt.add(t), () => {
|
|
337
|
+
gt.delete(t);
|
|
212
338
|
};
|
|
213
339
|
}
|
|
214
|
-
const
|
|
215
|
-
function
|
|
216
|
-
|
|
340
|
+
const je = 4e3, go = /* @__PURE__ */ new Set(["GET", "HEAD"]);
|
|
341
|
+
function Ue(t) {
|
|
342
|
+
if (!/^[a-z][a-z\d+.-]*:\/\//i.test(t)) return { path: t.replace(/\/+$/, "") };
|
|
217
343
|
try {
|
|
218
|
-
|
|
344
|
+
const e = new URL(t);
|
|
345
|
+
return { origin: e.origin, path: e.pathname.replace(/\/+$/, "") };
|
|
219
346
|
} catch {
|
|
220
347
|
return null;
|
|
221
348
|
}
|
|
222
|
-
if (!e) return n;
|
|
223
|
-
const o = e.replace(/\/+$/, ""), r = n.indexOf(o);
|
|
224
|
-
if (r < 0) return null;
|
|
225
|
-
const a = n.slice(r + o.length);
|
|
226
|
-
return a.startsWith("/") || a === "" ? a || "/" : null;
|
|
227
|
-
}
|
|
228
|
-
function ge(t, e) {
|
|
229
|
-
const n = (s) => s.split("/").filter(Boolean), o = n(t.trim()), r = n(e), a = (s, i) => s === o.length ? i === r.length : o[s] === "**" ? a(s + 1, i) || i < r.length && a(s, i + 1) : i === r.length ? !1 : (o[s] === "*" || o[s] === r[i]) && a(s + 1, i + 1);
|
|
230
|
-
return a(0, 0);
|
|
231
349
|
}
|
|
232
|
-
function
|
|
350
|
+
function mo(t, e) {
|
|
351
|
+
let r;
|
|
352
|
+
try {
|
|
353
|
+
r = new URL(t, window.location.href);
|
|
354
|
+
} catch {
|
|
355
|
+
return null;
|
|
356
|
+
}
|
|
357
|
+
const o = r.pathname;
|
|
358
|
+
if (!e) return o;
|
|
359
|
+
const a = Ue(e);
|
|
360
|
+
if (!a || a.origin && a.origin !== r.origin) return null;
|
|
361
|
+
const n = a.path, i = o.indexOf(n);
|
|
362
|
+
if (i < 0) return null;
|
|
363
|
+
const u = o.slice(i + n.length);
|
|
364
|
+
return u.startsWith("/") || u === "" ? u || "/" : null;
|
|
365
|
+
}
|
|
366
|
+
function xo(t, e) {
|
|
367
|
+
const r = (i) => i.split("/").filter(Boolean), o = r(t.trim()), a = r(e), n = (i, u) => i === o.length ? u === a.length : o[i] === "**" ? n(i + 1, u) || u < a.length && n(i, u + 1) : u === a.length ? !1 : (o[i] === "*" || o[i] === a[u]) && n(i + 1, u + 1);
|
|
368
|
+
return n(0, 0);
|
|
369
|
+
}
|
|
370
|
+
function wo(t, e) {
|
|
233
371
|
var o;
|
|
234
|
-
const
|
|
235
|
-
return !
|
|
372
|
+
const r = (o = t.method) == null ? void 0 : o.trim().toUpperCase();
|
|
373
|
+
return !r || r === "*" ? !0 : r === "WRITE" ? !go.has(e) : r === e;
|
|
236
374
|
}
|
|
237
|
-
|
|
238
|
-
|
|
375
|
+
const yo = (t, e) => Math.max(t.delay ?? 0, e);
|
|
376
|
+
function ko(t, e) {
|
|
377
|
+
const r = yo(t, e);
|
|
378
|
+
return t.body !== void 0 ? {
|
|
379
|
+
kind: "response",
|
|
380
|
+
delay: r,
|
|
381
|
+
status: t.status,
|
|
382
|
+
body: t.body,
|
|
383
|
+
contentType: De(t.body) ? "application/json" : "text/plain"
|
|
384
|
+
} : t.status < 400 ? { kind: "response", delay: r, status: t.status, body: "", contentType: "text/plain" } : t.html ? {
|
|
239
385
|
kind: "response",
|
|
240
|
-
delay:
|
|
386
|
+
delay: r,
|
|
241
387
|
status: t.status,
|
|
242
388
|
contentType: "text/html",
|
|
243
389
|
body: `<html><body><h1>${t.status} ${t.message ?? "Bad Gateway"}</h1></body></html>`
|
|
244
390
|
} : {
|
|
245
391
|
kind: "response",
|
|
246
|
-
delay:
|
|
392
|
+
delay: r,
|
|
247
393
|
status: t.status,
|
|
248
394
|
contentType: "application/json",
|
|
249
395
|
body: JSON.stringify({ statusCode: t.status, message: t.message ?? `Сбой из dev-панели: ${t.status}` })
|
|
250
396
|
};
|
|
251
397
|
}
|
|
252
|
-
function
|
|
398
|
+
function Eo(t) {
|
|
253
399
|
const e = new Set(t.state.faults);
|
|
254
400
|
return [...(t.config.groups ?? []).flatMap((o) => o.items).filter((o) => e.has(o.id)).flatMap((o) => [].concat(o.request ?? [])), ...t.state.rules.filter((o) => o.enabled)];
|
|
255
401
|
}
|
|
256
|
-
function
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
402
|
+
function He(t) {
|
|
403
|
+
var o;
|
|
404
|
+
let e = null, r = -1;
|
|
405
|
+
for (const a of y()) {
|
|
406
|
+
const n = mo(t, a.config.apiBase);
|
|
407
|
+
if (n === null) continue;
|
|
408
|
+
const i = a.config.apiBase ? ((o = Ue(a.config.apiBase)) == null ? void 0 : o.path.length) ?? 0 : 0;
|
|
409
|
+
i > r && (e = { entry: a, path: n }, r = i);
|
|
260
410
|
}
|
|
261
|
-
return
|
|
411
|
+
return e;
|
|
262
412
|
}
|
|
263
|
-
function
|
|
264
|
-
const o =
|
|
265
|
-
if (
|
|
266
|
-
const
|
|
267
|
-
return
|
|
413
|
+
function Ze({ entry: t, path: e }, r) {
|
|
414
|
+
const o = r.toUpperCase(), a = new Set(t.state.faults), n = a.has("slow") ? je : 0;
|
|
415
|
+
if (a.has("offline") || a.has("network")) return { kind: "network", delay: n };
|
|
416
|
+
const i = Eo(t).find((u) => wo(u, o) && xo(u.path, e));
|
|
417
|
+
return i ? ko(i, n) : n ? { kind: "pass", delay: n } : null;
|
|
268
418
|
}
|
|
269
|
-
const
|
|
270
|
-
function
|
|
271
|
-
return new Promise((
|
|
419
|
+
const Ke = (t, e) => qr(t.entry.config.service, e, t.path), Pt = (t) => t.reason ?? new DOMException("The operation was aborted.", "AbortError");
|
|
420
|
+
function Co(t, e) {
|
|
421
|
+
return new Promise((r, o) => {
|
|
272
422
|
if (e != null && e.aborted) {
|
|
273
|
-
o(
|
|
423
|
+
o(Pt(e));
|
|
274
424
|
return;
|
|
275
425
|
}
|
|
276
|
-
const
|
|
426
|
+
const a = setTimeout(r, t);
|
|
277
427
|
e == null || e.addEventListener("abort", () => {
|
|
278
|
-
clearTimeout(
|
|
428
|
+
clearTimeout(a), o(Pt(e));
|
|
279
429
|
}, { once: !0 });
|
|
280
430
|
});
|
|
281
431
|
}
|
|
282
|
-
const
|
|
283
|
-
function
|
|
432
|
+
const Ve = /* @__PURE__ */ new Set([204, 205, 304]), lt = /* @__PURE__ */ new WeakSet();
|
|
433
|
+
function Fo(t) {
|
|
284
434
|
if (typeof window > "u") return;
|
|
285
435
|
const e = t ?? window;
|
|
286
|
-
|
|
287
|
-
}
|
|
288
|
-
function
|
|
289
|
-
var
|
|
290
|
-
const e = (
|
|
291
|
-
e && (t.fetch = async (o,
|
|
292
|
-
const
|
|
293
|
-
if (!
|
|
294
|
-
const
|
|
436
|
+
lt.has(e) || (lt.add(e), Ao(e)), typeof XMLHttpRequest < "u" && !lt.has(XMLHttpRequest.prototype) && (lt.add(XMLHttpRequest.prototype), So());
|
|
437
|
+
}
|
|
438
|
+
function Ao(t) {
|
|
439
|
+
var r;
|
|
440
|
+
const e = (r = t.fetch) == null ? void 0 : r.bind(t);
|
|
441
|
+
e && (t.fetch = async (o, a) => {
|
|
442
|
+
const n = typeof o == "object" && "url" in o ? o : null, i = He(n ? n.url : String(o));
|
|
443
|
+
if (!i) return e(o, a);
|
|
444
|
+
const u = (a == null ? void 0 : a.method) ?? (n == null ? void 0 : n.method) ?? "GET", p = Ke(i, u), l = Ze(i, u), h = (a == null ? void 0 : a.signal) ?? (n == null ? void 0 : n.signal);
|
|
295
445
|
try {
|
|
296
|
-
if (
|
|
297
|
-
if ((
|
|
298
|
-
throw
|
|
299
|
-
if ((
|
|
300
|
-
return
|
|
301
|
-
status:
|
|
302
|
-
headers: { "Content-Type":
|
|
446
|
+
if (l != null && l.delay && await Co(l.delay, h), h != null && h.aborted) throw Pt(h);
|
|
447
|
+
if ((l == null ? void 0 : l.kind) === "network")
|
|
448
|
+
throw p("network", !0), new TypeError("Failed to fetch");
|
|
449
|
+
if ((l == null ? void 0 : l.kind) === "response")
|
|
450
|
+
return p(l.status, !0), new Response(Ve.has(l.status) ? null : l.body, {
|
|
451
|
+
status: l.status,
|
|
452
|
+
headers: { "Content-Type": l.contentType }
|
|
303
453
|
});
|
|
304
|
-
const
|
|
305
|
-
return
|
|
306
|
-
} catch (
|
|
307
|
-
throw
|
|
454
|
+
const g = await e(o, a);
|
|
455
|
+
return p(g.status, !1), g;
|
|
456
|
+
} catch (g) {
|
|
457
|
+
throw p(h != null && h.aborted ? "abort" : "network", !1), g;
|
|
308
458
|
}
|
|
309
459
|
});
|
|
310
460
|
}
|
|
311
|
-
const
|
|
312
|
-
function
|
|
313
|
-
const t = XMLHttpRequest.prototype, e = t.open,
|
|
314
|
-
t.open = function(
|
|
315
|
-
|
|
316
|
-
Reflect.deleteProperty(this,
|
|
317
|
-
}),
|
|
318
|
-
}, t.send = function(
|
|
319
|
-
const
|
|
320
|
-
if (!
|
|
321
|
-
|
|
461
|
+
const fe = /* @__PURE__ */ new WeakMap(), he = /* @__PURE__ */ new WeakMap(), mt = /* @__PURE__ */ new WeakMap(), $o = ["readyState", "responseURL", "status", "statusText", "responseText", "response", "getAllResponseHeaders", "getResponseHeader"];
|
|
462
|
+
function So() {
|
|
463
|
+
const t = XMLHttpRequest.prototype, e = t.open, r = t.send, o = t.abort;
|
|
464
|
+
t.open = function(n, i, ...u) {
|
|
465
|
+
be(this), $o.forEach((p) => {
|
|
466
|
+
Reflect.deleteProperty(this, p);
|
|
467
|
+
}), fe.set(this, { method: n, url: String(i) }), e.call(this, n, i, ...u);
|
|
468
|
+
}, t.send = function(n) {
|
|
469
|
+
const i = fe.get(this), u = i ? He(i.url) : null;
|
|
470
|
+
if (!i || !u) {
|
|
471
|
+
r.call(this, n);
|
|
322
472
|
return;
|
|
323
473
|
}
|
|
324
|
-
const
|
|
325
|
-
|
|
326
|
-
const
|
|
327
|
-
this.addEventListener("abort", () =>
|
|
474
|
+
const p = Ke(u, i.method);
|
|
475
|
+
he.set(this, p);
|
|
476
|
+
const l = Ze(u, i.method), h = () => {
|
|
477
|
+
this.addEventListener("abort", () => p("abort", !1), { once: !0 }), this.addEventListener("loadend", () => p(this.status || "network", !1), { once: !0 }), r.call(this, n);
|
|
328
478
|
};
|
|
329
|
-
if (!
|
|
330
|
-
|
|
479
|
+
if (!l) {
|
|
480
|
+
h();
|
|
331
481
|
return;
|
|
332
482
|
}
|
|
333
|
-
|
|
334
|
-
if (
|
|
335
|
-
|
|
483
|
+
mt.set(this, setTimeout(() => {
|
|
484
|
+
if (mt.delete(this), l.kind === "pass") {
|
|
485
|
+
h();
|
|
336
486
|
return;
|
|
337
487
|
}
|
|
338
|
-
|
|
339
|
-
},
|
|
488
|
+
p(l.kind === "network" ? "network" : l.status, !0), Lo(this, l, i.url);
|
|
489
|
+
}, l.delay));
|
|
340
490
|
}, t.abort = function() {
|
|
341
|
-
var
|
|
342
|
-
if (!
|
|
491
|
+
var i;
|
|
492
|
+
if (!be(this)) {
|
|
343
493
|
o.call(this);
|
|
344
494
|
return;
|
|
345
495
|
}
|
|
346
|
-
(
|
|
347
|
-
const
|
|
348
|
-
|
|
496
|
+
(i = he.get(this)) == null || i("abort", !1);
|
|
497
|
+
const n = We(this);
|
|
498
|
+
n("readyState", 4), n("status", 0), Nt(this, ["readystatechange", "abort", "loadend"]), n("readyState", 0);
|
|
349
499
|
};
|
|
350
500
|
}
|
|
351
|
-
function
|
|
352
|
-
const e =
|
|
353
|
-
return e === void 0 ? !1 : (clearTimeout(e),
|
|
501
|
+
function be(t) {
|
|
502
|
+
const e = mt.get(t);
|
|
503
|
+
return e === void 0 ? !1 : (clearTimeout(e), mt.delete(t), !0);
|
|
354
504
|
}
|
|
355
|
-
const
|
|
356
|
-
Object.defineProperty(t, e, { configurable: !0, get: () =>
|
|
357
|
-
},
|
|
358
|
-
e.forEach((
|
|
505
|
+
const We = (t) => (e, r) => {
|
|
506
|
+
Object.defineProperty(t, e, { configurable: !0, get: () => r });
|
|
507
|
+
}, Nt = (t, e) => {
|
|
508
|
+
e.forEach((r) => t.dispatchEvent(new ProgressEvent(r)));
|
|
359
509
|
};
|
|
360
|
-
function
|
|
361
|
-
const o =
|
|
362
|
-
if (o("readyState", 4), o("responseURL",
|
|
363
|
-
o("status", 0), o("statusText", ""),
|
|
510
|
+
function Lo(t, e, r) {
|
|
511
|
+
const o = We(t);
|
|
512
|
+
if (o("readyState", 4), o("responseURL", r), e.kind === "network") {
|
|
513
|
+
o("status", 0), o("statusText", ""), Nt(t, ["readystatechange", "error", "loadend"]);
|
|
364
514
|
return;
|
|
365
515
|
}
|
|
366
|
-
const
|
|
367
|
-
let
|
|
516
|
+
const a = Ve.has(e.status) ? "" : e.body;
|
|
517
|
+
let n = a;
|
|
368
518
|
if (t.responseType === "json")
|
|
369
519
|
try {
|
|
370
|
-
|
|
520
|
+
n = e.contentType === "application/json" && a ? JSON.parse(a) : null;
|
|
371
521
|
} catch {
|
|
372
|
-
|
|
522
|
+
n = null;
|
|
373
523
|
}
|
|
374
|
-
o("status", e.status), o("statusText", String(e.status)), o("responseText",
|
|
375
|
-
const
|
|
524
|
+
o("status", e.status), o("statusText", String(e.status)), o("responseText", a), o("response", n);
|
|
525
|
+
const i = `content-type: ${e.contentType}\r
|
|
376
526
|
`;
|
|
377
|
-
Object.defineProperty(t, "getAllResponseHeaders", { configurable: !0, value: () =>
|
|
527
|
+
Object.defineProperty(t, "getAllResponseHeaders", { configurable: !0, value: () => i }), Object.defineProperty(t, "getResponseHeader", {
|
|
378
528
|
configurable: !0,
|
|
379
|
-
value: (
|
|
380
|
-
}),
|
|
529
|
+
value: (u) => u.toLowerCase() === "content-type" ? e.contentType : null
|
|
530
|
+
}), Nt(t, ["readystatechange", "load", "loadend"]);
|
|
381
531
|
}
|
|
382
|
-
function
|
|
532
|
+
function te(t) {
|
|
383
533
|
try {
|
|
384
534
|
t ? Reflect.deleteProperty(navigator, "onLine") : Object.defineProperty(navigator, "onLine", { configurable: !0, get: () => !1 }), window.dispatchEvent(new Event(t ? "online" : "offline"));
|
|
385
535
|
} catch {
|
|
386
536
|
}
|
|
387
537
|
}
|
|
388
|
-
function
|
|
389
|
-
const t =
|
|
390
|
-
|
|
538
|
+
function Je() {
|
|
539
|
+
const t = y().some((e) => e.state.faults.includes("offline"));
|
|
540
|
+
ao(), Se(), Ne(), t && te(!0);
|
|
541
|
+
}
|
|
542
|
+
const xt = { instant: 100, fast: 150, base: 200, moderate: 250, slow: 300 }, jt = {
|
|
543
|
+
enter: "cubic-bezier(0, 0, .2, 1)",
|
|
544
|
+
exit: "cubic-bezier(.4, 0, 1, 1)"
|
|
545
|
+
}, _o = 4, ee = "data-u-motion", ve = "data-u-motion-scale", Ye = () => typeof document > "u" ? null : document.documentElement, zo = () => {
|
|
546
|
+
var t, e;
|
|
547
|
+
return ((t = Ye()) == null ? void 0 : t.getAttribute(ee)) === "reduce" || typeof window < "u" && ((e = window.matchMedia) == null ? void 0 : e.call(window, "(prefers-reduced-motion: reduce)").matches) === !0;
|
|
548
|
+
}, Xe = (t) => {
|
|
549
|
+
const e = Ye();
|
|
550
|
+
e && (t === 1 ? e.removeAttribute(ve) : e.setAttribute(ve, String(t)));
|
|
551
|
+
}, Do = [
|
|
552
|
+
"accordion",
|
|
553
|
+
"bc",
|
|
554
|
+
"breadcrumbs",
|
|
555
|
+
"button",
|
|
556
|
+
"calendar",
|
|
557
|
+
"card",
|
|
558
|
+
"checkbox",
|
|
559
|
+
"collapsible",
|
|
560
|
+
"drawer",
|
|
561
|
+
"empty",
|
|
562
|
+
"error",
|
|
563
|
+
"expand",
|
|
564
|
+
"file",
|
|
565
|
+
"filter",
|
|
566
|
+
"form",
|
|
567
|
+
"help",
|
|
568
|
+
"icon",
|
|
569
|
+
"infinite",
|
|
570
|
+
"input",
|
|
571
|
+
"menu",
|
|
572
|
+
"message",
|
|
573
|
+
"modal",
|
|
574
|
+
"multiselectbox",
|
|
575
|
+
"notification",
|
|
576
|
+
"number",
|
|
577
|
+
"offline",
|
|
578
|
+
"pagination",
|
|
579
|
+
"paginator",
|
|
580
|
+
"password",
|
|
581
|
+
"popup",
|
|
582
|
+
"preloader",
|
|
583
|
+
"radio",
|
|
584
|
+
"react",
|
|
585
|
+
"rich",
|
|
586
|
+
"search",
|
|
587
|
+
"selectbox",
|
|
588
|
+
"skeleton",
|
|
589
|
+
"status",
|
|
590
|
+
"switch",
|
|
591
|
+
"tab",
|
|
592
|
+
"table",
|
|
593
|
+
"tabs",
|
|
594
|
+
"textarea",
|
|
595
|
+
"upward",
|
|
596
|
+
"virtual"
|
|
597
|
+
], To = ["air-datepicker", "treeview", "select-column"], Mo = [
|
|
598
|
+
"u-card",
|
|
599
|
+
"u-card-second",
|
|
600
|
+
"u-react-card__body",
|
|
601
|
+
"u-modal__body",
|
|
602
|
+
"u-drawer__body",
|
|
603
|
+
"u-drawer__footer",
|
|
604
|
+
"u-form-field__control",
|
|
605
|
+
"u-accordion-content",
|
|
606
|
+
"u-collapsible-menu-body",
|
|
607
|
+
"u-help__content",
|
|
608
|
+
"u-message",
|
|
609
|
+
"u-react-sticky-action-bar",
|
|
610
|
+
"u-tabs-content",
|
|
611
|
+
"u-table-mobile-card__fields--body",
|
|
612
|
+
"u-table-mobile-card__actions",
|
|
613
|
+
"u-virtual-list__item"
|
|
614
|
+
], Bo = new RegExp(`^(?:u-(?:${Do.join("|")})|${To.join("|")})(?:$|[-_])`), Ro = new Set(Mo), Oo = (t) => Bo.test(t), ge = (t) => Array.from(t.classList).some(Oo), qo = (t) => t.tagName === "TD" || t.tagName === "TH" || Array.from(t.classList).some((e) => Ro.has(e)), Io = (t) => {
|
|
615
|
+
if (ge(t)) return !0;
|
|
616
|
+
for (let e = t.parentElement; e; e = e.parentElement) {
|
|
617
|
+
if (qo(e)) return !1;
|
|
618
|
+
if (ge(e)) return !0;
|
|
619
|
+
}
|
|
620
|
+
return !1;
|
|
621
|
+
}, Po = 'button, input, select, textarea, a[href], table, [role="dialog"], dialog, svg, h1, h2, h3, h4, h5, h6', Mt = (t) => {
|
|
622
|
+
const e = t.tagName.toLowerCase();
|
|
623
|
+
return /^h[1-6]$/.test(e) ? "h1–h6" : t.getAttribute("role") === "dialog" ? "dialog" : e;
|
|
624
|
+
}, No = "[data-urfu-ui-kit-dev], [data-urfu-ui-kit-dev-highlight]", jo = (t = document) => Array.from(t.querySelectorAll(Po)).filter((e) => {
|
|
625
|
+
var r;
|
|
626
|
+
return e.closest(No) || e.tagName === "svg" && ((r = e.parentElement) != null && r.closest("svg")) || e instanceof HTMLInputElement && e.type === "hidden" ? !1 : !Io(e);
|
|
627
|
+
}), me = (t) => typeof CSS < "u" && CSS.escape ? CSS.escape(t) : t.replace(/[^\w-]/g, "\\$&"), Uo = (t) => {
|
|
628
|
+
const e = [];
|
|
629
|
+
for (let r = t; r && r.tagName !== "HTML"; r = r.parentElement) {
|
|
630
|
+
if (r.id) {
|
|
631
|
+
e.unshift(`#${me(r.id)}`);
|
|
632
|
+
break;
|
|
633
|
+
}
|
|
634
|
+
const o = Array.from(r.classList).slice(0, 2).map((i) => `.${me(i)}`).join(""), a = r.parentElement ? Array.from(r.parentElement.children).filter((i) => i.tagName === r.tagName) : [], n = a.length > 1 ? `:nth-of-type(${a.indexOf(r) + 1})` : "";
|
|
635
|
+
e.unshift(`${r.tagName.toLowerCase()}${o}${n}`);
|
|
636
|
+
}
|
|
637
|
+
return e.join(" > ");
|
|
638
|
+
}, Ho = 500, Zo = 200, Ko = `
|
|
639
|
+
:host { all: initial; }
|
|
640
|
+
.layer { position: fixed; inset: 0; pointer-events: none; z-index: 2147482999; }
|
|
641
|
+
.box { position: fixed; box-sizing: border-box; border: 2px dashed #e5484d; border-radius: 2px; }
|
|
642
|
+
.box.active { border-style: solid; background: rgba(229, 72, 77, .18); }
|
|
643
|
+
.tag { position: absolute; left: -2px; top: -18px; pointer-events: auto; cursor: pointer; border: 0; padding: 1px 4px;
|
|
644
|
+
font: 600 11px/14px system-ui, sans-serif; color: #fff; background: #e5484d; border-radius: 2px 2px 2px 0; white-space: nowrap; }
|
|
645
|
+
.box.below .tag { top: auto; bottom: -18px; border-radius: 0 2px 2px 2px; }
|
|
646
|
+
`;
|
|
647
|
+
let x = null, wt = null, re = [], W, R = null, k = null, G, Ge = 0, N = { total: 0, byType: {} };
|
|
648
|
+
const Vo = (t, e) => {
|
|
649
|
+
if (e.width === 0 && e.height === 0) return !1;
|
|
650
|
+
const r = t.checkVisibility;
|
|
651
|
+
return r ? r.call(t, { visibilityProperty: !0, opacityProperty: !0 }) : !0;
|
|
652
|
+
}, Qe = () => {
|
|
653
|
+
if (!x) return;
|
|
654
|
+
let t = document.documentElement;
|
|
655
|
+
try {
|
|
656
|
+
const e = document.querySelectorAll("dialog:modal");
|
|
657
|
+
t = e[e.length - 1] ?? t;
|
|
658
|
+
} catch {
|
|
659
|
+
}
|
|
660
|
+
x.parentNode !== t && t.appendChild(x);
|
|
661
|
+
}, Ut = () => {
|
|
662
|
+
if (Ge = Date.now(), G = void 0, !wt) return;
|
|
663
|
+
Qe();
|
|
664
|
+
const t = jo().map((n) => ({ element: n, rect: n.getBoundingClientRect() })).filter(({ element: n, rect: i }) => Vo(n, i)), e = {};
|
|
665
|
+
for (const { element: n } of t) e[Mt(n)] = (e[Mt(n)] ?? 0) + 1;
|
|
666
|
+
N = { total: t.length, byType: e };
|
|
667
|
+
const { innerHeight: r, innerWidth: o } = window, a = t.filter(({ rect: n }) => n.bottom > 0 && n.top < r && n.right > 0 && n.left < o).slice(0, Ho);
|
|
668
|
+
re = a.map(({ element: n }) => n), wt.innerHTML = a.map(({ element: n, rect: i }, u) => `<div class="box${i.top < 18 ? " below" : ""}" style="left:${i.left}px;top:${i.top}px;width:${i.width}px;height:${i.height}px"><button class="tag" type="button" data-mark="${u}" title="Путь — в консоли">${Mt(n)}</button></div>`).join(""), W == null || W(N);
|
|
669
|
+
}, Q = () => {
|
|
670
|
+
G === void 0 && (G = setTimeout(Ut, Math.max(0, Zo - (Date.now() - Ge))));
|
|
671
|
+
}, Wo = (t) => {
|
|
672
|
+
t.every((e) => x && (e.target === x || x.contains(e.target))) || Q();
|
|
673
|
+
}, Jo = (t) => {
|
|
674
|
+
const e = t.target.closest("[data-mark]"), r = e ? re[Number(e.dataset.mark)] : void 0;
|
|
675
|
+
if (!e || !r) return;
|
|
676
|
+
console.info("[urfu-ui-kit dev] не из кита:", Uo(r), r);
|
|
677
|
+
const o = e.parentElement;
|
|
678
|
+
o.classList.add("active"), setTimeout(() => o.classList.remove("active"), 1500);
|
|
679
|
+
}, Yo = () => N, Xo = (t) => {
|
|
680
|
+
if (W = t, x || typeof document > "u")
|
|
681
|
+
return x && Ut(), N;
|
|
682
|
+
x = document.createElement("div"), x.setAttribute("data-urfu-ui-kit-dev-highlight", "");
|
|
683
|
+
const e = x.attachShadow({ mode: "open" });
|
|
684
|
+
return e.innerHTML = `<style>${Ko}</style><div class="layer"></div>`, wt = e.querySelector(".layer"), e.addEventListener("click", Jo), Qe(), k = document.defaultView ?? window, k.addEventListener("scroll", Q, { capture: !0, passive: !0 }), k.addEventListener("resize", Q), R = new MutationObserver(Wo), R.observe(document.documentElement, { childList: !0, subtree: !0, attributes: !0, attributeFilter: ["class", "hidden", "open", "style"] }), Ut(), N;
|
|
685
|
+
}, Go = () => {
|
|
686
|
+
R == null || R.disconnect(), R = null, k == null || k.removeEventListener("scroll", Q, { capture: !0 }), k == null || k.removeEventListener("resize", Q), k = null, clearTimeout(G), G = void 0, x == null || x.remove(), x = null, wt = null, re = [], W = void 0, N = { total: 0, byType: {} };
|
|
687
|
+
}, St = "data-urfu-dev-motion", xe = 5, yt = /\(\s*prefers-reduced-motion\s*(?::\s*reduce\s*)?\)/gi, Qo = new RegExp(yt.source, "i"), ta = /\(\s*prefers-reduced-motion\s*:\s*no-preference\s*\)/i, ea = new RegExp(String.raw`not\s*` + yt.source, "i"), Bt = "(min-width: 0px)", H = () => typeof document > "u" ? null : document, Lt = (t) => {
|
|
688
|
+
var e;
|
|
689
|
+
return ((e = H()) == null ? void 0 : e.querySelector(`style[${St}="${t}"]`)) ?? null;
|
|
690
|
+
}, tr = (t, e) => {
|
|
691
|
+
const r = H();
|
|
692
|
+
if (!r) return;
|
|
693
|
+
let o = Lt(t);
|
|
694
|
+
o || (o = r.createElement("style"), o.setAttribute(St, t)), o.textContent !== e && (o.textContent = e);
|
|
695
|
+
const a = r.body ?? r.head;
|
|
696
|
+
a.lastElementChild !== o && a.append(o);
|
|
697
|
+
}, ra = (t) => t.cssText.slice(0, t.cssText.indexOf("{")).trim(), oa = 7, aa = 4, na = (t) => {
|
|
698
|
+
const e = t.split(",").map((o) => o.trim()).filter((o) => o.match(yt) && !/^not\s/i.test(o));
|
|
699
|
+
if (e.length === 0) return null;
|
|
700
|
+
const r = e.map((o) => o.replace(yt, Bt).replace(/^only\s+/i, ""));
|
|
701
|
+
return r.some((o) => o === Bt || o === `all and ${Bt}`) ? "" : r.join(", ");
|
|
702
|
+
}, we = (t) => /^not\s/i.test(t) ? Qo.test(t) : ta.test(t) || ea.test(t), ia = (t) => {
|
|
703
|
+
const e = t.split(",").map((r) => r.trim());
|
|
704
|
+
return e.some(we) ? e.map((r) => we(r) ? "not all" : r).join(", ") : null;
|
|
705
|
+
}, er = (t, e, r) => {
|
|
706
|
+
for (const o of Array.from(t)) {
|
|
707
|
+
if ("styleSheet" in o) {
|
|
708
|
+
const n = o, i = [...e];
|
|
709
|
+
n.layerName != null && i.push(`@layer ${n.layerName}`.trim()), n.media.mediaText && n.media.mediaText !== "all" && i.push(`@media ${n.media.mediaText}`), n.styleSheet && rr(n.styleSheet, i, r);
|
|
710
|
+
continue;
|
|
711
|
+
}
|
|
712
|
+
if (!("cssRules" in o) || o.type === oa) continue;
|
|
713
|
+
const a = o;
|
|
714
|
+
if (o.type === aa) {
|
|
715
|
+
const n = o.media, i = ia(n.mediaText);
|
|
716
|
+
i !== null && r.noPreference.push({ media: n, text: i });
|
|
717
|
+
const u = na(n.mediaText);
|
|
718
|
+
if (u !== null) {
|
|
719
|
+
const p = u ? [...e, `@media ${u}`] : e, l = Array.from(a.cssRules).map((h) => h.cssText).join(`
|
|
720
|
+
`);
|
|
721
|
+
r.css.push(p.reduceRight((h, g) => `${g} {
|
|
722
|
+
${h}
|
|
723
|
+
}`, l)), r.blocks += 1;
|
|
724
|
+
continue;
|
|
725
|
+
}
|
|
726
|
+
}
|
|
727
|
+
er(a.cssRules, [...e, ra(o)], r);
|
|
728
|
+
}
|
|
729
|
+
}, rr = (t, e, r) => {
|
|
730
|
+
let o;
|
|
731
|
+
try {
|
|
732
|
+
o = t.cssRules;
|
|
733
|
+
} catch {
|
|
734
|
+
r.blocked += 1;
|
|
735
|
+
return;
|
|
736
|
+
}
|
|
737
|
+
er(o, e, r);
|
|
738
|
+
}, ua = () => {
|
|
739
|
+
var o, a;
|
|
740
|
+
const t = { css: [], blocks: 0, blocked: 0, noPreference: [] }, e = H();
|
|
741
|
+
if (!e) return t;
|
|
742
|
+
const r = [...Array.from(e.styleSheets), ...e.adoptedStyleSheets ?? []];
|
|
743
|
+
for (const n of r)
|
|
744
|
+
(a = (o = n.ownerNode) == null ? void 0 : o.hasAttribute) != null && a.call(o, St) || rr(n, [], t);
|
|
745
|
+
return t;
|
|
746
|
+
};
|
|
747
|
+
let _ = null, Ht, J, j = { blocks: 0, disabled: 0, blocked: 0 }, kt = [];
|
|
748
|
+
const or = (t) => t.nodeName === "STYLE" || t.nodeName === "LINK" && t.rel === "stylesheet", ye = (t) => {
|
|
749
|
+
var e;
|
|
750
|
+
return ((e = t.hasAttribute) == null ? void 0 : e.call(t, St)) === !0;
|
|
751
|
+
}, ar = () => {
|
|
752
|
+
const t = ua();
|
|
753
|
+
for (const { media: e, text: r } of t.noPreference)
|
|
754
|
+
kt.push({ media: e, text: e.mediaText }), e.mediaText = r;
|
|
755
|
+
tr("reduce", t.css.join(`
|
|
756
|
+
`)), j = { blocks: t.blocks, disabled: kt.length, blocked: t.blocked }, J == null || J(j);
|
|
757
|
+
}, nr = () => {
|
|
758
|
+
clearTimeout(Ht), Ht = setTimeout(ar, 100);
|
|
759
|
+
}, sa = (t) => {
|
|
760
|
+
t.some((r) => {
|
|
761
|
+
const o = r.target.nodeType === Node.TEXT_NODE ? r.target.parentNode : r.target;
|
|
762
|
+
return (o == null ? void 0 : o.nodeName) === "STYLE" ? !ye(o) : [...Array.from(r.addedNodes), ...Array.from(r.removedNodes)].some((a) => or(a) && !ye(a));
|
|
763
|
+
}) && nr();
|
|
764
|
+
}, ir = (t) => {
|
|
765
|
+
t.target instanceof Element && or(t.target) && nr();
|
|
766
|
+
}, la = () => j, ca = (t) => {
|
|
767
|
+
const e = H();
|
|
768
|
+
return e && (J = t, e.documentElement.setAttribute(ee, "reduce"), ar(), !_ && typeof MutationObserver < "u" && (_ = new MutationObserver(sa), _.observe(e.documentElement, { childList: !0, subtree: !0, characterData: !0 }), e.addEventListener("load", ir, !0))), j;
|
|
769
|
+
}, da = () => {
|
|
770
|
+
var e;
|
|
771
|
+
const t = H();
|
|
772
|
+
_ == null || _.disconnect(), _ = null, clearTimeout(Ht), t == null || t.removeEventListener("load", ir, !0);
|
|
773
|
+
for (const { media: r, text: o } of kt) r.mediaText = o;
|
|
774
|
+
kt = [], (e = Lt("reduce")) == null || e.remove(), t == null || t.documentElement.removeAttribute(ee), j = { blocks: 0, disabled: 0, blocked: 0 }, J = void 0;
|
|
775
|
+
}, pa = {
|
|
776
|
+
...Object.fromEntries(Object.entries(xt).map(([t, e]) => [`--u-duration-${t}`, e])),
|
|
777
|
+
"--u-spinner-duration": 3e3,
|
|
778
|
+
"--u-skeleton-duration": 1200
|
|
779
|
+
}, fa = (t) => {
|
|
780
|
+
const e = t.trim().match(/^(-?[\d.]+)(ms|s)$/);
|
|
781
|
+
return e ? Number(e[1]) * (e[2] === "s" ? 1e3 : 1) : null;
|
|
782
|
+
}, ha = () => {
|
|
783
|
+
var o;
|
|
784
|
+
const t = H();
|
|
785
|
+
if (!t) return;
|
|
786
|
+
(o = Lt("slow")) == null || o.remove();
|
|
787
|
+
const e = getComputedStyle(t.documentElement), r = Object.entries(pa).map(([a, n]) => {
|
|
788
|
+
const i = fa(e.getPropertyValue(a)) ?? n;
|
|
789
|
+
return `${a}: ${i * xe}ms !important;`;
|
|
790
|
+
});
|
|
791
|
+
tr("slow", `:root, :root * { ${r.join(" ")} }`), Xe(xe);
|
|
792
|
+
}, ba = () => {
|
|
793
|
+
var t;
|
|
794
|
+
(t = Lt("slow")) == null || t.remove(), Xe(1);
|
|
795
|
+
}, tt = ["reduce", "slow", "highlight"], Zt = "urfu-ui-kit:dev:~view", E = /* @__PURE__ */ new Set();
|
|
796
|
+
let $, Kt = "";
|
|
797
|
+
const va = (t) => tt.includes(t);
|
|
798
|
+
function ga() {
|
|
799
|
+
try {
|
|
800
|
+
const t = JSON.parse(localStorage.getItem(Zt) ?? "null");
|
|
801
|
+
return Array.isArray(t) ? t.filter(va) : [];
|
|
802
|
+
} catch {
|
|
803
|
+
return [];
|
|
804
|
+
}
|
|
391
805
|
}
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
|
|
806
|
+
function ma() {
|
|
807
|
+
try {
|
|
808
|
+
E.size ? localStorage.setItem(Zt, JSON.stringify([...E])) : localStorage.removeItem(Zt);
|
|
809
|
+
} catch {
|
|
810
|
+
}
|
|
811
|
+
}
|
|
812
|
+
const xa = (t) => {
|
|
813
|
+
const e = JSON.stringify(t);
|
|
814
|
+
e !== Kt && (Kt = e, $ == null || $());
|
|
815
|
+
};
|
|
816
|
+
function oe(t, e) {
|
|
817
|
+
t === "reduce" ? e ? ca(() => $ == null ? void 0 : $()) : da() : t === "slow" ? e ? ha() : ba() : e ? Xo(xa) : (Go(), Kt = "");
|
|
818
|
+
}
|
|
819
|
+
function et(t) {
|
|
820
|
+
return E.has(t);
|
|
821
|
+
}
|
|
822
|
+
function ur(t, e) {
|
|
823
|
+
E.has(t) !== e && (e ? E.add(t) : E.delete(t), oe(t, e), ma());
|
|
824
|
+
}
|
|
825
|
+
function wa(t) {
|
|
826
|
+
$ = t, ga().forEach((e) => {
|
|
827
|
+
E.has(e) || (E.add(e), oe(e, !0));
|
|
828
|
+
});
|
|
829
|
+
}
|
|
830
|
+
function ya() {
|
|
831
|
+
E.forEach((t) => oe(t, !1)), E.clear(), $ = void 0;
|
|
832
|
+
}
|
|
833
|
+
function ka() {
|
|
834
|
+
return { reduce: la(), highlight: Yo() };
|
|
835
|
+
}
|
|
836
|
+
var ke = { css: `.u-icon{font-family:urfu-ui-icon-font!important;speak:never;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-cross:before{content:"\\e913"}.icon-cross-small:before{content:"\\e914"}:host{--u-unit: 1px;--u-height-main: calc(48 * var(--u-unit));--u-height-secondary: calc(54 * var(--u-unit));--u-height-medium: calc(44 * var(--u-unit));--u-height-small: calc(38 * var(--u-unit));--u-option-min-height: var(--u-height-main)}:host{--u-preset-unit: 1px}:host([data-u-responsive=urfu]){--u-preset-unit: var(--u-unit)}:host([data-u-viewport=tablet]){--u-font-size-10: 12px;--u-font-size-11: 12px;--u-font-size-12: 12px;--u-font-size-13: 12px;--u-font-size-14: 14px;--u-font-size-16: 15px;--u-font-size-18: 17px;--u-font-size-20: 19px;--u-font-size-24: 22px;--u-font-size-40: 32px;--u-font-size-52: 40px;--u-input-line-padding-y: 10px}:host([data-u-viewport=mobile]){--u-font-size-10: 12px;--u-font-size-11: 12px;--u-font-size-12: 12px;--u-font-size-13: 12px;--u-font-size-14: 14px;--u-font-size-16: 14px;--u-font-size-18: 16px;--u-font-size-20: 18px;--u-font-size-24: 20px;--u-font-size-40: 24px;--u-font-size-52: 28px;--u-input-line-padding-y: 7px}:host{--u-blue-main: #1E4391;--u-blue-dark: #0F2B5E;--u-blue-60: #748AB9;--u-blue-40: #9FAECD;--u-blue-20: #CAD1E1;--u-blue-10: #E7F2FF;--u-blue-secondary: #4685CF;--u-red-main: #EF302B;--u-red-dark: #C0231F;--u-red-60: #F58380;--u-red-10: #FDEAEA;--u-gray-60: #545454;--u-gray-40: #A7A7A7;--u-gray-20: #D3D3D3;--u-gray-10: #F6F6F6;--u-gray-5: #F9F9F9;--u-black-main: #222222;--u-white: #FFFFFF;--u-green: #3BA68C;--u-green-10: #EDF7EB;--u-pink: #E54B6A;--u-orange: #E98446;--u-orange-10: #FCF4E6;--u-violet: #A08CE2;--u-gradient-main: linear-gradient(270deg, #FF2D7F -.71%, #FB3727 47.63%, #FEEA0F 100%);--u-color-primary: var(--u-blue-main, #1E4391);--u-color-primary-hover: var(--u-blue-dark, #0F2B5E);--u-color-primary-disabled: var(--u-blue-40, #9FAECD);--u-color-primary-quiet: var(--u-blue-20, #CAD1E1);--u-color-selected: var(--u-blue-10, #E7F2FF);--u-color-focus: var(--u-blue-main, #1E4391);--u-color-text: var(--u-black-main, #222222);--u-color-text-secondary: var(--u-gray-60, #545454);--u-color-text-muted: var(--u-gray-40, #A7A7A7);--u-color-text-inverse: var(--u-white, #FFFFFF);--u-color-border: var(--u-blue-60, #748AB9);--u-color-border-light: var(--u-gray-20, #D3D3D3);--u-color-surface: var(--u-white, #FFFFFF);--u-color-background: var(--u-gray-10, #F6F6F6);--u-color-background-light: var(--u-gray-5, #F9F9F9);--u-color-error: var(--u-red-main, #EF302B);--u-color-error-hover: var(--u-red-dark, #C0231F);--u-color-error-disabled: var(--u-red-60, #F58380);--u-color-error-light: var(--u-red-10, #FDEAEA);--u-color-success: var(--u-green, #3BA68C);--u-color-success-light: var(--u-green-10, #EDF7EB);--u-color-warning: var(--u-orange, #E98446);--u-color-warning-light: var(--u-orange-10, #FCF4E6)}:host{--u-radius: 10px;--u-radius-small: 8px;--u-z-dropdown: 100;--u-z-dropdown-icon: 101;--u-z-dropdown-list: 102;--u-z-upward: 112;--u-z-dropdown-item: 999;--u-z-modal: 1000;--u-z-datepicker: 1001;--u-duration-fast: .15s;--u-duration-base: .2s;--u-duration-slow: .3s;--u-ease-standard: ease-in-out;--u-spinner-duration: 3s;--u-skeleton-duration: 1.2s;--u-duration-instant: .1s;--u-duration-moderate: .25s;--u-ease-move: cubic-bezier(.2, 0, 0, 1);--u-ease-enter: cubic-bezier(0, 0, .2, 1);--u-ease-exit: cubic-bezier(.4, 0, 1, 1);--u-ease-sheet: cubic-bezier(.22, 1, .36, 1);--u-motion-shift-sm: 4px;--u-motion-shift-md: 8px;--u-font-weight-regular: 400;--u-font-weight-medium: 500;--u-font-weight-semibold: 600;--u-line-height-base: 1.4;--u-line-height-compact: 1.4286;--u-shadow-popup: 0 8px 24px rgba(15, 43, 94, .16);--u-color-surface-tint: #EEF0F4}.u-button{--u-button-height: var(--u-height-main, 48px);height:var(--u-button-height);padding:0 var(--u-button-padding-x, calc(50 * var(--u-preset-unit)));border-radius:var(--u-radius, 10px);border:none;font-weight:var(--u-font-weight-medium, 500);font-size:var(--u-font-size-13, calc(13 * var(--u-unit)));white-space:nowrap;cursor:pointer;display:inline-flex;column-gap:calc(8 * var(--u-unit));justify-content:center;align-items:center;transition-property:color,background-color,border-color,background-image;transition-duration:var(--u-duration-fast, .15s);transition-timing-function:var(--u-ease-standard, ease-in-out);color:var(--u-color-text-inverse, #FFFFFF);background-color:var(--u-color-primary, #1E4391)}.u-button:hover,.u-button:active{background-color:var(--u-color-primary-hover, #0F2B5E)}.u-button:disabled{cursor:default;background-color:var(--u-color-primary-disabled, #9FAECD)}.u-button .u-icon{position:relative;top:calc(1 * var(--u-unit))}.u-button .u-icon:before{color:inherit}.u-button-outline{color:var(--u-color-primary, #1E4391);background-color:var(--u-color-surface, #FFFFFF);border:2px solid var(--u-color-primary, #1E4391)}.u-button-outline:hover,.u-button-outline:active{background-color:var(--u-color-primary-hover, #0F2B5E);color:var(--u-color-text-inverse, #FFFFFF);border:2px solid var(--u-color-primary-hover, #0F2B5E)}.u-button-outline:disabled{cursor:default;background-color:var(--u-color-primary-disabled, #9FAECD);color:var(--u-color-text-inverse, #FFFFFF);border:2px solid var(--u-color-primary-disabled, #9FAECD)}.u-button-danger{color:var(--u-color-text-inverse, #FFFFFF);background-color:var(--u-color-error, #EF302B)}.u-button-danger:hover,.u-button-danger:active{background-color:var(--u-color-error-hover, #C0231F)}.u-button-danger:disabled{cursor:default;background-color:var(--u-color-error-disabled, #F58380)}.u-button-danger-outline{color:var(--u-color-error, #EF302B);background-color:var(--u-color-surface, #FFFFFF);border:2px solid var(--u-color-error, #EF302B)}.u-button-danger-outline:hover,.u-button-danger-outline:active{background-color:var(--u-color-error-hover, #C0231F);color:var(--u-color-text-inverse, #FFFFFF);border:2px solid var(--u-color-error-hover, #C0231F)}.u-button-danger-outline:disabled{cursor:default;background-color:var(--u-color-error-disabled, #F58380);color:var(--u-color-text-inverse, #FFFFFF);border:2px solid var(--u-color-error-disabled, #F58380)}.u-button-simple{border:2px solid var(--u-color-border-light, #D3D3D3);background-color:var(--u-color-surface, #FFFFFF);color:var(--u-color-text, #222222)}.u-button-simple:hover,.u-button-simple:active{border:2px solid var(--u-color-border-light, #D3D3D3);background-color:var(--u-gray-20, #D3D3D3);color:var(--u-color-text, #222222)}.u-button-simple:disabled{cursor:default;border:2px solid var(--u-button-simple-disabled, #E9E9E9);background-color:var(--u-button-simple-disabled, #E9E9E9);color:var(--u-color-text-secondary, #545454)}.u-button-icon{border:1px solid var(--u-color-border-light, #D3D3D3);background-color:var(--u-color-surface, #FFFFFF);color:var(--u-color-primary, #1E4391);padding:0;width:var(--u-button-icon-width, calc(48 * var(--u-preset-unit)))}.u-button-icon:hover,.u-button-icon:active{border:1px solid var(--u-color-primary, #1E4391);background-color:var(--u-color-surface, #FFFFFF);color:var(--u-color-primary, #1E4391)}.u-button-icon:disabled{cursor:default;border:1px solid var(--u-color-border-light, #D3D3D3);background-color:var(--u-color-surface, #FFFFFF);color:var(--u-gray-20, #D3D3D3)}.u-button-icon.u-button-small{padding:0;width:var(--u-button-icon-small-width, calc(38 * var(--u-preset-unit)))}.u-button-cross{--u-button-height: var(--u-height-main, 48px);padding:0 var(--u-button-padding-x, calc(50 * var(--u-preset-unit)));border-radius:var(--u-radius, 10px);border:none;font-weight:var(--u-font-weight-medium, 500);font-size:var(--u-font-size-13, calc(13 * var(--u-unit)));white-space:nowrap;cursor:pointer;display:inline-flex;column-gap:calc(8 * var(--u-unit));justify-content:center;align-items:center;transition-property:color,background-color,border-color,background-image;transition-duration:var(--u-duration-fast, .15s);transition-timing-function:var(--u-ease-standard, ease-in-out);padding:0;width:var(--u-button-cross-size, calc(52 * var(--u-preset-unit)));--u-button-height: var(--u-button-cross-size, calc(52 * var(--u-preset-unit)));height:var(--u-button-height);border-radius:50%;background-color:transparent;background-image:url("data:image/svg+xml,%3Csvg width='52' height='52' viewBox='0 0 52 52' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='26' cy='26' r='26' transform='rotate(90 26 26)' fill='white'/%3E%3Cpath d='M20 20L31.5 32M32 20L20 32' stroke='%23222222' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E ");background-repeat:no-repeat;background-size:100% 100%}.u-button-cross:hover{background-image:url("data:image/svg+xml,%3Csvg width='52' height='52' viewBox='0 0 52 52' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='26' cy='26' r='26' transform='rotate(90 26 26)' fill='white'/%3E%3Cpath d='M20 20L31.5 32M32 20L20 32' stroke='%231E4391' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E ")}.u-button-icon-left{flex-direction:row-reverse}.u-button-medium{--u-button-height: var(--u-height-medium, 44px);height:var(--u-button-height)}.u-button-small{--u-button-height: var(--u-height-small, 38px);height:var(--u-button-height);padding:0 var(--u-button-small-padding-x, calc(24 * var(--u-preset-unit)))}.u-button-text{display:flex;text-align:center;border:none;padding:0;border-radius:var(--u-radius-small, 8px);font-weight:var(--u-font-weight-semibold, 600);font-size:var(--u-font-size-14, calc(14 * var(--u-unit)));background:none;align-items:center;white-space:nowrap;cursor:pointer;transition-property:color,background-color,border-color,background-image;transition-duration:var(--u-duration-fast, .15s);transition-timing-function:var(--u-ease-standard, ease-in-out);color:var(--u-color-primary, #1E4391)}.u-button-text:focus-visible{outline-offset:4px}.u-button-text:hover,.u-button-text:active{color:var(--u-color-primary-hover, #0F2B5E)}.u-button-text:disabled{cursor:default;color:var(--u-color-primary-disabled, #9FAECD)}.u-button-text .u-icon{position:relative;margin-left:calc(8 * var(--u-unit))}.u-button-text-icon-left{flex-direction:row-reverse;font-weight:var(--u-font-weight-regular, 400)}.u-button-text-icon-left .u-icon{margin-left:0;margin-right:calc(8 * var(--u-unit))}.u-button-text-table{cursor:pointer;color:var(--u-blue-60, #748AB9)}.u-button-text-table:hover,.u-button-text-table:active{color:var(--u-color-primary-hover, #0F2B5E)}.u-button-text-table:disabled{cursor:default;color:var(--u-color-primary-quiet, #CAD1E1)}.u-button-text-danger{color:var(--u-pink, #E54B6A)}.u-button-text-danger:hover,.u-button-text-danger:active{color:var(--u-button-text-danger-hover, #B62C48)}.u-button-text-danger:disabled{cursor:default;color:var(--u-button-text-danger-disabled, #D995A2)}.u-button-text-danger-table{cursor:pointer;color:var(--u-color-error-disabled, #F58380)}.u-button-text-danger-table:hover,.u-button-text-danger-table:active{color:var(--u-pink, #E54B6A)}.u-button-text-danger-table:disabled{cursor:default;color:var(--u-button-text-danger-table-disabled, #FE514D1F)}.u-button-text-table,.u-button-text-danger-table{position:relative}.u-button-text-table:after,.u-button-text-danger-table:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:44px;height:44px;z-index:1}.u-button-text-table:has(+.u-button-text-table):after,.u-button-text-table:has(+.u-button-text-danger-table):after,.u-button-text-danger-table:has(+.u-button-text-table):after,.u-button-text-danger-table:has(+.u-button-text-danger-table):after,.u-button-text-table+.u-button-text-table:after,.u-button-text-table+.u-button-text-danger-table:after,.u-button-text-danger-table+.u-button-text-table:after,.u-button-text-danger-table+.u-button-text-danger-table:after{width:100%}.u-button-text-table.u-button-text-square,.u-button-text-danger-table.u-button-text-square{width:calc(38 * var(--u-unit));justify-content:center}.u-button-text-table.u-button-text-square:after,.u-button-text-danger-table.u-button-text-square:after{width:100%;height:100%}.u-input{height:var(--u-height-main, 48px);padding:var(--u-input-line-padding-y, var(--u-input-padding-y, calc(14 * var(--u-preset-unit)))) var(--u-input-padding-x, calc(16 * var(--u-preset-unit)));border-radius:var(--u-radius, 10px);font-weight:var(--u-font-weight-regular, 400);font-size:var(--u-font-size-14, calc(14 * var(--u-unit)));line-height:var(--u-line-height-compact, 1.4286);color:var(--u-color-text, #222222);background-color:var(--u-color-surface, #FFFFFF);width:100%;transition-property:color,background-color,border-color,background-image;transition-duration:var(--u-duration-fast, .15s);transition-timing-function:var(--u-ease-standard, ease-in-out);text-overflow:ellipsis;border:1px solid var(--u-color-border-light, #D3D3D3)}.u-input:hover{border:1px solid var(--u-color-border, #748AB9)}.u-input:focus{outline:0;border:1px solid var(--u-color-border, #748AB9)}.u-input:disabled{cursor:default;border:none;background-color:var(--u-color-background, #F6F6F6)}.u-input::placeholder{color:var(--u-color-text-secondary, #545454);opacity:1}.u-input:-ms-input-placeholder{color:var(--u-color-text-secondary, #545454)}.u-input::placeholder{color:var(--u-color-text-secondary, #545454)}.u-input[type=number]{display:block;box-sizing:border-box;-moz-appearance:textfield;-webkit-appearance:textfield;appearance:textfield}.u-input[type=number]::-webkit-outer-spin-button,.u-input[type=number]::-webkit-inner-spin-button{display:none}.u-input[type=search]::-webkit-search-cancel-button{transition-property:color,background-color,border-color,background-image;transition-duration:var(--u-duration-fast, .15s);transition-timing-function:var(--u-ease-standard, ease-in-out);display:block;cursor:pointer;-webkit-appearance:none;width:calc(12 * var(--u-unit));height:calc(12 * var(--u-unit));margin-left:calc(10 * var(--u-unit));background-color:var(--u-color-text-muted, #A7A7A7);-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='12' height='12' viewBox='0 0 12 12' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M11.3386 0.661444C11.7039 1.02675 11.7039 1.61903 11.3386 1.98433L1.98434 11.3386C1.61904 11.7039 1.02676 11.7039 0.661455 11.3386C0.29615 10.9733 0.296149 10.381 0.661454 10.0157L10.0157 0.661444C10.381 0.296138 10.9733 0.296138 11.3386 0.661444Z' fill='%23A7A7A7'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M0.661432 0.661444C1.02674 0.296138 1.61901 0.296138 1.98432 0.661444L11.3385 10.0157C11.7039 10.381 11.7038 10.9733 11.3385 11.3386C10.9732 11.7039 10.381 11.7039 10.0157 11.3386L0.661432 1.98433C0.296127 1.61903 0.296127 1.02675 0.661432 0.661444Z' fill='%23A7A7A7'/%3E%3C/svg%3E ");mask-image:url("data:image/svg+xml,%3Csvg width='12' height='12' viewBox='0 0 12 12' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M11.3386 0.661444C11.7039 1.02675 11.7039 1.61903 11.3386 1.98433L1.98434 11.3386C1.61904 11.7039 1.02676 11.7039 0.661455 11.3386C0.29615 10.9733 0.296149 10.381 0.661454 10.0157L10.0157 0.661444C10.381 0.296138 10.9733 0.296138 11.3386 0.661444Z' fill='%23A7A7A7'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M0.661432 0.661444C1.02674 0.296138 1.61901 0.296138 1.98432 0.661444L11.3385 10.0157C11.7039 10.381 11.7038 10.9733 11.3385 11.3386C10.9732 11.7039 10.381 11.7039 10.0157 11.3386L0.661432 1.98433C0.296127 1.61903 0.296127 1.02675 0.661432 0.661444Z' fill='%23A7A7A7'/%3E%3C/svg%3E ");-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:100% 100%;mask-size:100% 100%}.u-input[type=search]::-webkit-search-cancel-button:hover{background-color:var(--u-color-primary, #1E4391)}.u-input-required{height:var(--u-height-main, 48px);padding:var(--u-input-line-padding-y, var(--u-input-padding-y, calc(14 * var(--u-preset-unit)))) var(--u-input-padding-x, calc(16 * var(--u-preset-unit)));border-radius:var(--u-radius, 10px);font-weight:var(--u-font-weight-regular, 400);font-size:var(--u-font-size-14, calc(14 * var(--u-unit)));line-height:var(--u-line-height-compact, 1.4286);color:var(--u-color-text, #222222);background-color:var(--u-color-surface, #FFFFFF);width:100%;transition-property:color,background-color,border-color,background-image;transition-duration:var(--u-duration-fast, .15s);transition-timing-function:var(--u-ease-standard, ease-in-out);text-overflow:ellipsis;border:1px solid var(--u-color-error, #EF302B)}.u-input-required:hover{border:1px solid var(--u-color-border, #748AB9)}.u-input-required:focus{outline:0;border:1px solid var(--u-color-border, #748AB9)}.u-input-required::placeholder{color:var(--u-color-text-secondary, #545454);opacity:1}.u-input-required:-ms-input-placeholder{color:var(--u-color-text-secondary, #545454)}.u-input-required::-ms-input-placeholder{color:var(--u-color-text-secondary, #545454)}.u-textarea{height:var(--u-textarea-height, calc(125 * var(--u-preset-unit)));padding:var(--u-input-padding-y, calc(14 * var(--u-preset-unit))) var(--u-input-padding-x, calc(16 * var(--u-preset-unit)));border-radius:var(--u-radius, 10px);font-weight:var(--u-font-weight-regular, 400);font-size:var(--u-font-size-14, calc(14 * var(--u-unit)));line-height:var(--u-line-height-compact, 1.4286);color:var(--u-color-text, #222222);background-color:var(--u-color-surface, #FFFFFF);width:100%;resize:vertical;transition-property:color,background-color,border-color,background-image;transition-duration:var(--u-duration-fast, .15s);transition-timing-function:var(--u-ease-standard, ease-in-out);border:1px solid var(--u-color-border-light, #D3D3D3)}.u-textarea:hover{border:1px solid var(--u-color-border, #748AB9)}.u-textarea:focus{outline:0;border:1px solid var(--u-color-border, #748AB9)}.u-textarea:disabled{cursor:default;border:none;background-color:var(--u-color-background, #F6F6F6)}.u-textarea::placeholder{color:var(--u-color-text-secondary, #545454);opacity:1}.u-textarea:-ms-input-placeholder{color:var(--u-color-text-secondary, #545454)}.u-textarea::placeholder{color:var(--u-color-text-secondary, #545454)}.u-textarea-required{height:var(--u-textarea-height, calc(125 * var(--u-preset-unit)));padding:var(--u-input-padding-y, calc(14 * var(--u-preset-unit))) var(--u-input-padding-x, calc(16 * var(--u-preset-unit)));border-radius:var(--u-radius, 10px);font-weight:var(--u-font-weight-regular, 400);font-size:var(--u-font-size-14, calc(14 * var(--u-unit)));line-height:var(--u-line-height-compact, 1.4286);color:var(--u-color-text, #222222);background-color:var(--u-color-surface, #FFFFFF);width:100%;resize:vertical;transition-property:color,background-color,border-color,background-image;transition-duration:var(--u-duration-fast, .15s);transition-timing-function:var(--u-ease-standard, ease-in-out);border:1px solid var(--u-color-error, #EF302B)}.u-textarea-required:hover{border:1px solid var(--u-color-border, #748AB9)}.u-textarea-required:focus{outline:0;border:1px solid var(--u-color-border, #748AB9)}.u-textarea-required::placeholder{color:var(--u-color-text-secondary, #545454);opacity:1}.u-textarea-required:-ms-input-placeholder{color:var(--u-color-text-secondary, #545454)}.u-textarea-required::-ms-input-placeholder{color:var(--u-color-text-secondary, #545454)}.u-textarea::-webkit-scrollbar-thumb{height:calc(clamp(calc(7 * var(--u-unit)),.01vh,calc(16 * var(--u-unit))) + calc(3 * var(--u-unit)));background-clip:content-box;border:2px solid transparent}.u-textarea::-webkit-scrollbar{width:calc(clamp(calc(7 * var(--u-unit)),.01vw,calc(16 * var(--u-unit))) + calc(3 * var(--u-unit)))}.u-number{display:inline-block;position:relative}.u-number:hover .u-input{border:1px solid var(--u-color-border, #748AB9)}.u-number .u-number-down{cursor:pointer;position:absolute;top:calc(50% + calc(2 * var(--u-unit)));right:calc(16 * var(--u-unit));width:calc(10 * var(--u-unit));height:calc(6 * var(--u-unit));padding:0;display:block;border:none;background-color:transparent;background-image:url("data:image/svg+xml,%3Csvg width='10' height='6' viewBox='0 0 10 6' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M5.38415 5.53884L9.31663 0.819867C9.58801 0.494204 9.35643 -0.000225067 8.93252 -0.000225067L1.06756 -0.000225067C0.64364 -0.000225067 0.412061 0.494203 0.683447 0.819866L4.61593 5.53884C4.81582 5.77872 5.18425 5.77872 5.38415 5.53884Z' fill='%23748AB9'/%3E%3C/svg%3E%0A");background-repeat:no-repeat;background-position:center;background-size:100% 100%;transition-property:color,background-color,border-color,background-image;transition-duration:var(--u-duration-fast, .15s);transition-timing-function:var(--u-ease-standard, ease-in-out)}.u-number .u-number-down:hover{background-image:url("data:image/svg+xml,%3Csvg width='10' height='6' viewBox='0 0 10 6' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M5.38415 5.53884L9.31663 0.819867C9.58801 0.494204 9.35643 -0.000225067 8.93252 -0.000225067L1.06756 -0.000225067C0.64364 -0.000225067 0.412061 0.494203 0.683447 0.819866L4.61593 5.53884C4.81582 5.77872 5.18425 5.77872 5.38415 5.53884Z' fill='%231E4391'/%3E%3C/svg%3E%0A")}.u-number .u-number-up{cursor:pointer;position:absolute;top:calc(50% - calc(8 * var(--u-unit)));right:calc(16 * var(--u-unit));width:calc(10 * var(--u-unit));height:calc(6 * var(--u-unit));padding:0;display:block;border:none;background-color:transparent;background-image:url("data:image/svg+xml,%3Csvg width='10' height='6' viewBox='0 0 10 6' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M5.38415 5.53884L9.31663 0.819867C9.58801 0.494204 9.35643 -0.000225067 8.93252 -0.000225067L1.06756 -0.000225067C0.64364 -0.000225067 0.412061 0.494203 0.683447 0.819866L4.61593 5.53884C4.81582 5.77872 5.18425 5.77872 5.38415 5.53884Z' fill='%23748AB9'/%3E%3C/svg%3E%0A");background-repeat:no-repeat;background-position:center;background-size:100% 100%;transform:rotate(180deg);transition-property:color,background-color,border-color,background-image;transition-duration:var(--u-duration-fast, .15s);transition-timing-function:var(--u-ease-standard, ease-in-out)}.u-number .u-number-up:hover{background-image:url("data:image/svg+xml,%3Csvg width='10' height='6' viewBox='0 0 10 6' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M5.38415 5.53884L9.31663 0.819867C9.58801 0.494204 9.35643 -0.000225067 8.93252 -0.000225067L1.06756 -0.000225067C0.64364 -0.000225067 0.412061 0.494203 0.683447 0.819866L4.61593 5.53884C4.81582 5.77872 5.18425 5.77872 5.38415 5.53884Z' fill='%231E4391'/%3E%3C/svg%3E%0A")}.u-selectbox{position:relative}.u-selectbox.u-selectbox-disabled *{cursor:default}.u-selectbox.u-selectbox-disabled .u-selectbox-select{border:none;background-color:var(--u-color-background, #F6F6F6)}.u-selectbox.u-selectbox-disabled .u-selectbox-select-icon-arrow{background-image:url("data:image/svg+xml,%3Csvg width='12' height='12' viewBox='0 0 12 12' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M0.292892 4.29289C0.683416 3.90237 1.31658 3.90237 1.70711 4.29289L6.00001 8.58579L10.2929 4.29289C10.6834 3.90237 11.3166 3.90237 11.7071 4.29289C12.0976 4.68342 12.0976 5.31658 11.7071 5.70711L6.70712 10.7071C6.51958 10.8946 6.26523 11 6.00001 11C5.73479 11 5.48044 10.8946 5.2929 10.7071L0.292894 5.70711C-0.0976308 5.31658 -0.0976314 4.68342 0.292892 4.29289Z' fill='%23A7A7A7'/%3E%3C/svg%3E ")}.u-selectbox.u-selectbox-disabled .u-selectbox-select-icon-cross{background-image:url("data:image/svg+xml,%3Csvg width='12' height='12' viewBox='0 0 12 12' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M11.3386 0.661444C11.7039 1.02675 11.7039 1.61903 11.3386 1.98433L1.98434 11.3386C1.61904 11.7039 1.02676 11.7039 0.661455 11.3386C0.29615 10.9733 0.296149 10.381 0.661454 10.0157L10.0157 0.661444C10.381 0.296138 10.9733 0.296138 11.3386 0.661444Z' fill='%23A7A7A7'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M0.661432 0.661444C1.02674 0.296138 1.61901 0.296138 1.98432 0.661444L11.3385 10.0157C11.7039 10.381 11.7038 10.9733 11.3385 11.3386C10.9732 11.7039 10.381 11.7039 10.0157 11.3386L0.661432 1.98433C0.296127 1.61903 0.296127 1.02675 0.661432 0.661444Z' fill='%23A7A7A7'/%3E%3C/svg%3E ")}.u-selectbox.u-selectbox-disabled .u-selectbox-select-open~.u-selectbox-options-wrapper{display:none}.u-selectbox-select{cursor:pointer;height:var(--u-height-main, 48px);padding:var(--u-input-line-padding-y, var(--u-input-padding-y, calc(14 * var(--u-preset-unit)))) var(--u-input-padding-x, calc(16 * var(--u-preset-unit)));border-radius:var(--u-radius, 10px);font-weight:var(--u-font-weight-regular, 400);font-size:var(--u-font-size-14, calc(14 * var(--u-unit)));line-height:var(--u-line-height-compact, 1.4286);color:var(--u-color-text, #222222);background-color:var(--u-color-surface, #FFFFFF);width:100%;transition-property:color,background-color,border-color,background-image;transition-duration:var(--u-duration-fast, .15s);transition-timing-function:var(--u-ease-standard, ease-in-out);text-overflow:ellipsis;border:1px solid var(--u-color-border-light, #D3D3D3);position:relative}.u-selectbox-select:hover{border:1px solid var(--u-color-border, #748AB9)}.u-selectbox-select:focus{outline:0;border:1px solid var(--u-color-border, #748AB9)}.u-selectbox-select:disabled{cursor:default;border:none;background-color:var(--u-color-background, #F6F6F6)}.u-selectbox-select::placeholder{color:var(--u-color-text-secondary, #545454);opacity:1}.u-selectbox-select:-ms-input-placeholder{color:var(--u-color-text-secondary, #545454)}.u-selectbox-select::placeholder{color:var(--u-color-text-secondary, #545454)}.u-selectbox-select[type=number]{display:block;box-sizing:border-box;-moz-appearance:textfield;-webkit-appearance:textfield;appearance:textfield}.u-selectbox-select[type=number]::-webkit-outer-spin-button,.u-selectbox-select[type=number]::-webkit-inner-spin-button{display:none}.u-selectbox-select[type=search]::-webkit-search-cancel-button{transition-property:color,background-color,border-color,background-image;transition-duration:var(--u-duration-fast, .15s);transition-timing-function:var(--u-ease-standard, ease-in-out);display:block;cursor:pointer;-webkit-appearance:none;width:calc(12 * var(--u-unit));height:calc(12 * var(--u-unit));margin-left:calc(10 * var(--u-unit));background-color:var(--u-color-text-muted, #A7A7A7);-webkit-mask-image:url("data:image/svg+xml,%3Csvg width='12' height='12' viewBox='0 0 12 12' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M11.3386 0.661444C11.7039 1.02675 11.7039 1.61903 11.3386 1.98433L1.98434 11.3386C1.61904 11.7039 1.02676 11.7039 0.661455 11.3386C0.29615 10.9733 0.296149 10.381 0.661454 10.0157L10.0157 0.661444C10.381 0.296138 10.9733 0.296138 11.3386 0.661444Z' fill='%23A7A7A7'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M0.661432 0.661444C1.02674 0.296138 1.61901 0.296138 1.98432 0.661444L11.3385 10.0157C11.7039 10.381 11.7038 10.9733 11.3385 11.3386C10.9732 11.7039 10.381 11.7039 10.0157 11.3386L0.661432 1.98433C0.296127 1.61903 0.296127 1.02675 0.661432 0.661444Z' fill='%23A7A7A7'/%3E%3C/svg%3E ");mask-image:url("data:image/svg+xml,%3Csvg width='12' height='12' viewBox='0 0 12 12' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M11.3386 0.661444C11.7039 1.02675 11.7039 1.61903 11.3386 1.98433L1.98434 11.3386C1.61904 11.7039 1.02676 11.7039 0.661455 11.3386C0.29615 10.9733 0.296149 10.381 0.661454 10.0157L10.0157 0.661444C10.381 0.296138 10.9733 0.296138 11.3386 0.661444Z' fill='%23A7A7A7'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M0.661432 0.661444C1.02674 0.296138 1.61901 0.296138 1.98432 0.661444L11.3385 10.0157C11.7039 10.381 11.7038 10.9733 11.3385 11.3386C10.9732 11.7039 10.381 11.7039 10.0157 11.3386L0.661432 1.98433C0.296127 1.61903 0.296127 1.02675 0.661432 0.661444Z' fill='%23A7A7A7'/%3E%3C/svg%3E ");-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;-webkit-mask-position:center;mask-position:center;-webkit-mask-size:100% 100%;mask-size:100% 100%}.u-selectbox-select[type=search]::-webkit-search-cancel-button:hover{background-color:var(--u-color-primary, #1E4391)}.u-selectbox-select-required{height:var(--u-height-main, 48px);padding:var(--u-input-line-padding-y, var(--u-input-padding-y, calc(14 * var(--u-preset-unit)))) var(--u-input-padding-x, calc(16 * var(--u-preset-unit)));border-radius:var(--u-radius, 10px);font-weight:var(--u-font-weight-regular, 400);font-size:var(--u-font-size-14, calc(14 * var(--u-unit)));line-height:var(--u-line-height-compact, 1.4286);color:var(--u-color-text, #222222);background-color:var(--u-color-surface, #FFFFFF);width:100%;transition-property:color,background-color,border-color,background-image;transition-duration:var(--u-duration-fast, .15s);transition-timing-function:var(--u-ease-standard, ease-in-out);text-overflow:ellipsis;border:1px solid var(--u-color-error, #EF302B)}.u-selectbox-select-required:hover{border:1px solid var(--u-color-border, #748AB9)}.u-selectbox-select-required:focus{outline:0;border:1px solid var(--u-color-border, #748AB9)}.u-selectbox-select-required::placeholder{color:var(--u-color-text-secondary, #545454);opacity:1}.u-selectbox-select-required:-ms-input-placeholder{color:var(--u-color-text-secondary, #545454)}.u-selectbox-select-required::-ms-input-placeholder{color:var(--u-color-text-secondary, #545454)}.u-selectbox-select-open{border:1px solid var(--u-color-border, #748AB9)}.u-selectbox-select-open .u-selectbox-select-icon{background-image:url("data:image/svg+xml,%3Csvg width='12' height='12' viewBox='0 0 12 12' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M11.7071 10.3819C11.3166 10.7724 10.6834 10.7724 10.2929 10.3819L5.99999 6.08902L1.70711 10.3819C1.31658 10.7724 0.683418 10.7724 0.292894 10.3819C-0.0976305 9.99139 -0.0976315 9.35822 0.292892 8.9677L5.29288 3.9677C5.48042 3.78016 5.73477 3.67481 5.99999 3.6748C6.26521 3.6748 6.51956 3.78016 6.7071 3.9677L11.7071 8.9677C12.0976 9.35822 12.0976 9.99139 11.7071 10.3819Z' fill='%231E4391'/%3E%3C/svg%3E ")}.u-selectbox-select-open+.u-selectbox-options{display:block}.u-selectbox-select-icon-arrow{position:absolute;display:block;background-image:url("data:image/svg+xml,%3Csvg width='12' height='12' viewBox='0 0 12 12' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M0.292892 4.29289C0.683416 3.90237 1.31658 3.90237 1.70711 4.29289L6.00001 8.58579L10.2929 4.29289C10.6834 3.90237 11.3166 3.90237 11.7071 4.29289C12.0976 4.68342 12.0976 5.31658 11.7071 5.70711L6.70712 10.7071C6.51958 10.8946 6.26523 11 6.00001 11C5.73479 11 5.48044 10.8946 5.2929 10.7071L0.292894 5.70711C-0.0976308 5.31658 -0.0976314 4.68342 0.292892 4.29289Z' fill='%231E4391'/%3E%3C/svg%3E ");background-repeat:no-repeat;background-position:center;background-size:100% 100%;width:calc(12 * var(--u-unit));height:calc(12 * var(--u-unit));right:calc(20 * var(--u-unit));top:calc(50% - calc(7 * var(--u-unit)));transition-property:color,background-color,border-color,background-image;transition-duration:var(--u-duration-fast, .15s);transition-timing-function:var(--u-ease-standard, ease-in-out)}.u-selectbox-select-icon-cross{position:absolute;display:block;background-image:url("data:image/svg+xml,%3Csvg width='12' height='12' viewBox='0 0 12 12' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M11.3386 0.661444C11.7039 1.02675 11.7039 1.61903 11.3386 1.98433L1.98434 11.3386C1.61904 11.7039 1.02676 11.7039 0.661455 11.3386C0.29615 10.9733 0.296149 10.381 0.661454 10.0157L10.0157 0.661444C10.381 0.296138 10.9733 0.296138 11.3386 0.661444Z' fill='%23A7A7A7'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M0.661432 0.661444C1.02674 0.296138 1.61901 0.296138 1.98432 0.661444L11.3385 10.0157C11.7039 10.381 11.7038 10.9733 11.3385 11.3386C10.9732 11.7039 10.381 11.7039 10.0157 11.3386L0.661432 1.98433C0.296127 1.61903 0.296127 1.02675 0.661432 0.661444Z' fill='%23A7A7A7'/%3E%3C/svg%3E ");background-repeat:no-repeat;background-position:center;background-size:100% 100%;width:calc(12 * var(--u-unit));height:calc(12 * var(--u-unit));right:calc(44 * var(--u-unit));top:calc(50% - calc(5 * var(--u-unit)));transition-property:color,background-color,border-color,background-image;transition-duration:var(--u-duration-fast, .15s);transition-timing-function:var(--u-ease-standard, ease-in-out)}.u-selectbox-select-icon-cross:hover{background-image:url("data:image/svg+xml,%3Csvg width='12' height='12' viewBox='0 0 12 12' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M11.3386 0.661444C11.7039 1.02675 11.7039 1.61903 11.3386 1.98433L1.98434 11.3386C1.61904 11.7039 1.02676 11.7039 0.661455 11.3386C0.29615 10.9733 0.296149 10.381 0.661454 10.0157L10.0157 0.661444C10.381 0.296138 10.9733 0.296138 11.3386 0.661444Z' fill='%231E4391'/%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M0.661432 0.661444C1.02674 0.296138 1.61901 0.296138 1.98432 0.661444L11.3385 10.0157C11.7039 10.381 11.7038 10.9733 11.3385 11.3386C10.9732 11.7039 10.381 11.7039 10.0157 11.3386L0.661432 1.98433C0.296127 1.61903 0.296127 1.02675 0.661432 0.661444Z' fill='%231E4391'/%3E%3C/svg%3E ")}.u-selectbox-select-title{display:block;max-width:calc(100% - calc(52 * var(--u-unit)));overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.u-selectbox-options{display:none;background-color:var(--u-color-surface, #FFFFFF);z-index:var(--u-z-dropdown, 100);border-radius:var(--u-radius, 10px);border:1px solid var(--u-color-border, #748AB9);margin-top:calc(2 * var(--u-unit));width:100%;overflow-y:auto;max-height:calc(200 * var(--u-unit));position:absolute}.u-selectbox-options::-webkit-scrollbar{width:calc(clamp(calc(7 * var(--u-unit)),.01vw,calc(16 * var(--u-unit))) + calc(3 * var(--u-unit)))}.u-selectbox-options::-webkit-scrollbar-thumb{height:calc(clamp(calc(7 * var(--u-unit)),.01vh,calc(16 * var(--u-unit))) + calc(3 * var(--u-unit)));background-clip:content-box;border:2px solid transparent}.u-selectbox-option{cursor:pointer;min-height:var(--u-option-min-height, calc(48 * var(--u-unit)));background-color:var(--u-color-surface, #FFFFFF);border-bottom:1px solid var(--u-color-primary-quiet, #CAD1E1);padding:max(calc(4 * var(--u-unit)),calc((var(--u-option-min-height, calc(48 * var(--u-unit))) - 1.4286em - 1px) / 2)) calc(16 * var(--u-unit));font-weight:var(--u-font-weight-regular, 400);font-size:var(--u-font-size-14, calc(14 * var(--u-unit)));line-height:var(--u-line-height-compact, 1.4286)}.u-selectbox-option:last-child{border-bottom:none}.u-selectbox-option:hover{background-color:var(--u-color-selected, #E7F2FF)}.u-search{display:inline-block;position:relative}.u-search .u-input{padding-left:calc(46 * var(--u-unit))}.u-search:hover .u-input{border:1px solid var(--u-color-border, #748AB9)}.u-search-loupe{cursor:pointer;position:absolute;top:calc(50% - calc(10 * var(--u-unit)));left:calc(16 * var(--u-unit));width:calc(20 * var(--u-unit));height:calc(20 * var(--u-unit));padding:0;display:block;border:none;background-color:transparent;background-image:url("data:image/svg+xml,%3Csvg width='21' height='21' viewBox='0 0 21 21' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M11.6001 4.39941C14.5117 4.39941 16.8721 6.75977 16.8721 9.67141C16.8721 12.5831 14.5117 14.9434 11.6001 14.9434C10.144 14.9434 8.82734 14.3544 7.8722 13.3993C6.91706 12.4441 6.32807 11.1275 6.32807 9.67141C6.32807 6.75977 8.68842 4.39941 11.6001 4.39941ZM18.8721 9.67141C18.8721 5.6552 15.6163 2.39941 11.6001 2.39941C7.58385 2.39941 4.32807 5.6552 4.32807 9.67141C4.32807 11.3185 4.87655 12.8388 5.79951 14.0578L3.16496 16.6923C2.77444 17.0828 2.77444 17.716 3.16496 18.1065C3.55549 18.497 4.18865 18.497 4.57918 18.1065L7.21372 15.472C8.4327 16.3949 9.95297 16.9434 11.6001 16.9434C15.6163 16.9434 18.8721 13.6876 18.8721 9.67141Z' fill='%231E4391'/%3E%3C/svg%3E%0A");background-repeat:no-repeat;background-position:center;background-size:100% 100%;transition-property:color,background-color,border-color,background-image;transition-duration:var(--u-duration-fast, .15s);transition-timing-function:var(--u-ease-standard, ease-in-out)}:where(.u-number) .u-input{padding-right:calc(34 * var(--u-unit))}.u-switch{cursor:pointer;display:flex;align-items:center;column-gap:calc(10 * var(--u-unit))}.u-switch:has(input:disabled){cursor:default}.u-switch input{position:absolute;opacity:0;width:0;height:0;margin:0;pointer-events:none}.u-switch input:checked+.u-switch__point:after{left:calc(100% - calc(23.2 * var(--u-unit)))}.u-switch input:disabled+.u-switch__point{cursor:default;border-color:var(--u-color-border-light, #D3D3D3);background-color:var(--u-color-background-light, #F9F9F9)}.u-switch input:disabled+.u-switch__point:after{background-color:var(--u-color-text-muted, #A7A7A7)}.u-switch input:disabled:hover+.u-switch__point{cursor:default;border-color:var(--u-color-border-light, #D3D3D3);background-color:var(--u-color-background-light, #F9F9F9)}.u-switch input:disabled:hover+.u-switch__point:after{background-color:var(--u-color-text-muted, #A7A7A7)}.u-switch input:hover+.u-switch__point{border-color:var(--u-switch-hover, #2452B3)}.u-switch input:hover+.u-switch__point:after{background-color:var(--u-switch-hover, #2452B3)}.u-switch input:checked+.u-switch__point{background-color:var(--u-color-primary, #1E4391);border-color:var(--u-color-primary, #1E4391)}.u-switch input:checked+.u-switch__point:after{background-color:var(--u-color-surface, #FFFFFF)}.u-switch input:checked:disabled+.u-switch__point{background-color:var(--u-gray-20, #D3D3D3);border-color:var(--u-color-border-light, #D3D3D3)}.u-switch input:checked:disabled+.u-switch__point:after{background-color:var(--u-color-surface, #FFFFFF)}.u-switch input:checked:disabled:hover+.u-switch__point{background-color:var(--u-gray-20, #D3D3D3);border-color:var(--u-color-border-light, #D3D3D3)}.u-switch input:checked:disabled:hover+.u-switch__point:after{background-color:var(--u-color-surface, #FFFFFF)}.u-switch input:checked:hover+.u-switch__point{background-color:var(--u-switch-hover, #2452B3);border-color:var(--u-switch-hover, #2452B3)}.u-switch input:checked:hover+.u-switch__point:after{background-color:var(--u-color-surface, #FFFFFF)}.u-switch__point{cursor:pointer;width:calc(54 * var(--u-unit));height:calc(26 * var(--u-unit));position:relative;border-radius:var(--u-switch-radius, 16px);transition:background-color var(--u-duration-base, .2s) var(--u-ease-standard, ease-in-out),border-color var(--u-duration-base, .2s) var(--u-ease-standard, ease-in-out);background-color:var(--u-color-surface, #FFFFFF);border:1.4px solid var(--u-color-primary, #1E4391)}@media (prefers-reduced-motion:reduce){.u-switch__point{transition:none}}.u-switch__point:after{content:"";display:block;position:absolute;width:calc(18 * var(--u-unit));height:calc(18 * var(--u-unit));border-radius:50%;transition:left var(--u-duration-fast, .15s) var(--u-ease-move, cubic-bezier(.2, 0, 0, 1)),background-color var(--u-duration-base, .2s) var(--u-ease-standard, ease-in-out);background-color:var(--u-color-primary, #1E4391);margin:calc(2.6 * var(--u-unit));left:calc(0 * var(--u-unit))}@media (prefers-reduced-motion:reduce){.u-switch__point:after{transition:none}}.u-switch-small .u-switch__point{width:calc(42 * var(--u-unit));height:calc(20 * var(--u-unit))}.u-switch-small .u-switch__point:after{width:calc(14 * var(--u-unit));height:calc(14 * var(--u-unit))}.u-switch-small .u-switch__point{border:1px solid var(--u-color-primary, #1E4391)}.u-switch-small .u-switch__point:after{margin:calc(2 * var(--u-unit))}.u-switch-small input:checked+.u-switch__point:after{left:calc(100% - calc(18 * var(--u-unit)))}.u-icon:before{color:inherit}.u-status{display:flex;justify-content:center;align-items:center;width:min-content;white-space:wrap;font-size:var(--u-font-size-10, calc(10 * var(--u-unit)));line-height:1.6;font-weight:var(--u-font-weight-semibold, 600);padding:calc(1 * var(--u-unit)) calc(8 * var(--u-unit)) calc(3 * var(--u-unit)) calc(8 * var(--u-unit));border-radius:var(--u-radius-small, 8px);max-width:100%}.u-status-large{font-size:var(--u-font-size-12, calc(12 * var(--u-unit)));line-height:1.4167;padding:calc(5 * var(--u-unit)) calc(12 * var(--u-unit))}.u-status-warning{background-color:var(--u-color-warning-light, #FCF4E6);color:var(--u-color-warning, #E98446)}.u-status-info{background-color:var(--u-color-selected, #E7F2FF);color:var(--u-color-primary, #1E4391)}.u-status-neutral{background-color:var(--u-status-neutral-background, #eee);color:var(--u-color-text, #222222)}.u-status-success{background-color:var(--u-color-success-light, #EDF7EB);color:var(--u-status-success-color, #147246)}.u-status-danger{background-color:var(--u-color-error-light, #FDEAEA);color:var(--u-color-error, #EF302B)}.u-status-intermediate{background-color:var(--u-status-intermediate-background, #fcf4ff);color:var(--u-status-intermediate-color, #742c8e)}.u-status-prepared{background-color:var(--u-status-prepared-background, #E9FDFD);color:var(--u-status-prepared-color, #0987AE)}.u-message{padding:calc(15 * var(--u-unit)) calc(16 * var(--u-unit)) calc(15 * var(--u-unit)) calc(52 * var(--u-unit));background-color:var(--u-color-selected, #E7F2FF);background-image:url("data:image/svg+xml,%3Csvg width='20' height='20' viewBox='0 0 20 20' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='10' cy='10' r='9' stroke='%231E4391' stroke-width='2'%3E%3C/circle%3E%3Crect x='9' y='8' width='2' height='8' rx='1' fill='%231E4391'%3E%3C/rect%3E%3Ccircle cx='10' cy='6' r='1' fill='%231E4391'%3E%3C/circle%3E%3C/svg%3E");min-height:calc(54 * var(--u-unit));display:flex;align-items:center;border-radius:var(--u-radius, 10px);font-weight:var(--u-font-weight-regular, 400);font-size:var(--u-font-size-14, calc(14 * var(--u-unit)));color:var(--u-color-text, #222222);background-repeat:no-repeat;background-position:top calc(50% - calc(1 * var(--u-unit))) left calc(16 * var(--u-unit))}.u-message-fail{display:flex;align-items:center;border-radius:var(--u-radius, 10px);font-weight:var(--u-font-weight-regular, 400);font-size:var(--u-font-size-14, calc(14 * var(--u-unit)));color:var(--u-color-text, #222222);background-repeat:no-repeat;background-position:top calc(50% - calc(1 * var(--u-unit))) left calc(16 * var(--u-unit));padding:calc(15 * var(--u-unit)) calc(16 * var(--u-unit)) calc(15 * var(--u-unit)) calc(52 * var(--u-unit));background-color:var(--u-color-error-light, #FDEAEA);background-image:url("data:image/svg+xml,%3Csvg width='20' height='20' viewBox='0 0 20 20' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='10' cy='10' r='9' stroke='%23EF302B' stroke-width='2'%3E%3C/circle%3E%3Ccircle cx='10' cy='15' r='1' fill='%23EF302B'%3E%3C/circle%3E%3Cpath d='M8.59357 6.49708C8.54286 5.68582 9.18716 5 10 5C10.8128 5 11.4571 5.68582 11.4064 6.49708L11.0624 12.0019C11.0273 12.563 10.5621 13 10 13C9.4379 13 8.97268 12.563 8.93762 12.0019L8.59357 6.49708Z' fill='%23EF302B'%3E%3C/path%3E%3C/svg%3E");min-height:calc(54 * var(--u-unit))}.u-message-success{display:flex;align-items:center;border-radius:var(--u-radius, 10px);font-weight:var(--u-font-weight-regular, 400);font-size:var(--u-font-size-14, calc(14 * var(--u-unit)));color:var(--u-color-text, #222222);background-repeat:no-repeat;background-position:top calc(50% - calc(1 * var(--u-unit))) left calc(16 * var(--u-unit));padding:calc(15 * var(--u-unit)) calc(16 * var(--u-unit)) calc(15 * var(--u-unit)) calc(52 * var(--u-unit));background-color:var(--u-color-success-light, #EDF7EB);background-image:url("data:image/svg+xml,%3Csvg width='20' height='20' viewBox='0 0 20 20' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='10' cy='10' r='9' stroke='%23147246' stroke-width='2'%3E%3C/circle%3E%3Cpath d='M6 10.5L9.10148 13.6015C9.31345 13.8134 9.663 13.7925 9.8482 13.5568L15 7' stroke='%23147246' stroke-width='2' stroke-linecap='round'%3E%3C/path%3E%3C/svg%3E");min-height:calc(54 * var(--u-unit))}.u-message-warning{display:flex;align-items:center;border-radius:var(--u-radius, 10px);font-weight:var(--u-font-weight-regular, 400);font-size:var(--u-font-size-14, calc(14 * var(--u-unit)));color:var(--u-color-text, #222222);background-repeat:no-repeat;background-position:top calc(50% - calc(1 * var(--u-unit))) left calc(16 * var(--u-unit));padding:calc(15 * var(--u-unit)) calc(16 * var(--u-unit)) calc(15 * var(--u-unit)) calc(52 * var(--u-unit));background-color:var(--u-color-warning-light, #FCF4E6);background-image:url("data:image/svg+xml,%3Csvg width='20' height='20' viewBox='0 0 20 20' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='10' cy='10' r='9' stroke='%23E98446' stroke-width='2'%3E%3C/circle%3E%3Ccircle cx='10' cy='15' r='1' fill='%23E98446'%3E%3C/circle%3E%3Cpath d='M8.59357 6.49708C8.54286 5.68582 9.18716 5 10 5C10.8128 5 11.4571 5.68582 11.4064 6.49708L11.0624 12.0019C11.0273 12.563 10.5621 13 10 13C9.4379 13 8.97268 12.563 8.93762 12.0019L8.59357 6.49708Z' fill='%23E98446'%3E%3C/path%3E%3C/svg%3E");min-height:calc(54 * var(--u-unit))}.u-message-small{padding:calc(7 * var(--u-unit)) calc(16 * var(--u-unit)) calc(7 * var(--u-unit)) calc(52 * var(--u-unit));background-color:var(--u-color-selected, #E7F2FF);background-image:url("data:image/svg+xml,%3Csvg width='20' height='20' viewBox='0 0 20 20' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='10' cy='10' r='9' stroke='%231E4391' stroke-width='2'%3E%3C/circle%3E%3Crect x='9' y='8' width='2' height='8' rx='1' fill='%231E4391'%3E%3C/rect%3E%3Ccircle cx='10' cy='6' r='1' fill='%231E4391'%3E%3C/circle%3E%3C/svg%3E");min-height:calc(38 * var(--u-unit));display:flex;align-items:center;border-radius:var(--u-radius, 10px);font-weight:var(--u-font-weight-regular, 400);font-size:var(--u-font-size-14, calc(14 * var(--u-unit)));color:var(--u-color-text, #222222);background-repeat:no-repeat;background-position:top calc(50% - calc(1 * var(--u-unit))) left calc(16 * var(--u-unit))}.u-message-small-fail{display:flex;align-items:center;border-radius:var(--u-radius, 10px);font-weight:var(--u-font-weight-regular, 400);font-size:var(--u-font-size-14, calc(14 * var(--u-unit)));color:var(--u-color-text, #222222);background-repeat:no-repeat;background-position:top calc(50% - calc(1 * var(--u-unit))) left calc(16 * var(--u-unit));padding:calc(7 * var(--u-unit)) calc(16 * var(--u-unit)) calc(7 * var(--u-unit)) calc(52 * var(--u-unit));background-color:var(--u-color-error-light, #FDEAEA);background-image:url("data:image/svg+xml,%3Csvg width='20' height='20' viewBox='0 0 20 20' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='10' cy='10' r='9' stroke='%23EF302B' stroke-width='2'%3E%3C/circle%3E%3Ccircle cx='10' cy='15' r='1' fill='%23EF302B'%3E%3C/circle%3E%3Cpath d='M8.59357 6.49708C8.54286 5.68582 9.18716 5 10 5C10.8128 5 11.4571 5.68582 11.4064 6.49708L11.0624 12.0019C11.0273 12.563 10.5621 13 10 13C9.4379 13 8.97268 12.563 8.93762 12.0019L8.59357 6.49708Z' fill='%23EF302B'%3E%3C/path%3E%3C/svg%3E");min-height:calc(38 * var(--u-unit))}.u-message-small-success{display:flex;align-items:center;border-radius:var(--u-radius, 10px);font-weight:var(--u-font-weight-regular, 400);font-size:var(--u-font-size-14, calc(14 * var(--u-unit)));color:var(--u-color-text, #222222);background-repeat:no-repeat;background-position:top calc(50% - calc(1 * var(--u-unit))) left calc(16 * var(--u-unit));padding:calc(7 * var(--u-unit)) calc(16 * var(--u-unit)) calc(7 * var(--u-unit)) calc(52 * var(--u-unit));background-color:var(--u-color-success-light, #EDF7EB);background-image:url("data:image/svg+xml,%3Csvg width='20' height='20' viewBox='0 0 20 20' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='10' cy='10' r='9' stroke='%23147246' stroke-width='2'%3E%3C/circle%3E%3Cpath d='M6 10.5L9.10148 13.6015C9.31345 13.8134 9.663 13.7925 9.8482 13.5568L15 7' stroke='%23147246' stroke-width='2' stroke-linecap='round'%3E%3C/path%3E%3C/svg%3E");min-height:calc(38 * var(--u-unit))}.u-message-small-warning{display:flex;align-items:center;border-radius:var(--u-radius, 10px);font-weight:var(--u-font-weight-regular, 400);font-size:var(--u-font-size-14, calc(14 * var(--u-unit)));color:var(--u-color-text, #222222);background-repeat:no-repeat;background-position:top calc(50% - calc(1 * var(--u-unit))) left calc(16 * var(--u-unit));padding:calc(7 * var(--u-unit)) calc(16 * var(--u-unit)) calc(7 * var(--u-unit)) calc(52 * var(--u-unit));background-color:var(--u-color-warning-light, #FCF4E6);background-image:url("data:image/svg+xml,%3Csvg width='20' height='20' viewBox='0 0 20 20' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='10' cy='10' r='9' stroke='%23E98446' stroke-width='2'%3E%3C/circle%3E%3Ccircle cx='10' cy='15' r='1' fill='%23E98446'%3E%3C/circle%3E%3Cpath d='M8.59357 6.49708C8.54286 5.68582 9.18716 5 10 5C10.8128 5 11.4571 5.68582 11.4064 6.49708L11.0624 12.0019C11.0273 12.563 10.5621 13 10 13C9.4379 13 8.97268 12.563 8.93762 12.0019L8.59357 6.49708Z' fill='%23E98446'%3E%3C/path%3E%3C/svg%3E");min-height:calc(38 * var(--u-unit))}:host{--u-menu-item-margin-top: calc(28 * var(--u-unit));--u-menu-subtitle-margin-top: calc(16 * var(--u-unit));--u-menu-list-padding-left: calc(18 * var(--u-unit));--u-menu-subtitle-padding-left: calc(44 * var(--u-unit));--u-collapsible-toggle-right: calc(-20 * var(--u-unit));--u-collapsible-toggle-top: calc(28 * var(--u-unit));--u-collapsible-toggle-width: calc(21 * var(--u-unit));--u-collapsible-toggle-height: calc(84 * var(--u-unit));--u-collapsible-body-max-width: calc(268 * var(--u-unit))}.u-input:focus-visible,.u-input-required:focus-visible,.u-textarea:focus-visible,.u-textarea-required:focus-visible,.u-selectbox-select:focus-visible,.u-selectbox-select-required:focus-visible,.u-search input:focus-visible{outline:none}:host(:not([data-input-mode=pointer])) .u-switch input:focus-visible+.u-switch__point{outline:2px solid var(--u-color-focus, #1E4391);outline-offset:2px}:host([data-input-mode=keyboard]) .u-input:focus,:host([data-input-mode=keyboard]) .u-input-required:focus,:host([data-input-mode=keyboard]) .u-textarea:focus,:host([data-input-mode=keyboard]) .u-textarea-required:focus,:host([data-input-mode=keyboard]) .u-selectbox-select:focus,:host([data-input-mode=keyboard]) .u-selectbox-select-required:focus,:host([data-input-mode=keyboard]) .u-search input:focus{outline:none;border-color:var(--u-color-focus, #1E4391);box-shadow:0 0 0 calc(3 * var(--u-unit, 1px)) var(--u-focus-shadow, rgba(30, 67, 145, .2))}.h5{font-weight:var(--u-font-weight-regular, 400);font-size:var(--u-font-size-12, calc(12 * var(--u-unit)));line-height:var(--u-line-height-base, 1.4)}.st{font-weight:var(--u-font-weight-regular, 400);font-size:var(--u-font-size-16, calc(16 * var(--u-unit)));line-height:var(--u-line-height-base, 1.4)}.tt{font-weight:var(--u-font-weight-regular, 400);font-size:var(--u-font-size-14, calc(14 * var(--u-unit)));line-height:var(--u-line-height-compact, 1.4286)}:host{--u-skeleton-color: #F0F0F0;--u-skeleton-highlight: #E0E0E0;--u-field-title-color: var(--u-color-text-secondary);--u-field-title-size: var(--u-font-size-14, calc(14 * var(--u-unit, 1px)));--u-option-color: var(--u-color-text);--u-option-selected-background: var(--u-color-background, #F6F6F6);--u-option-hovered-background: var(--u-color-background, #F6F6F6);--u-compact-height: calc(30 * var(--u-unit, 1px));--u-compact-font-size: var(--u-font-size-12, calc(12 * var(--u-unit, 1px)));--u-compact-padding: calc(8 * var(--u-unit, 1px)) calc(5 * var(--u-unit, 1px));--u-compact-radius: calc(8 * var(--u-unit, 1px));--u-dense-height: var(--u-height-small, calc(38 * var(--u-unit, 1px)));--u-table-filter-popup-z: 9999;--u-select-popup-z: 10010}:host([data-u-viewport=tablet]){--u-compact-height: 28px;--u-dense-height: var(--u-height-main);--u-compact-padding: 7px calc(5 * var(--u-unit, 1px))}:host([data-u-viewport=mobile]){--u-compact-height: 26px;--u-dense-height: var(--u-height-main);--u-compact-padding: 6px calc(5 * var(--u-unit, 1px))}:host{--u-icon-size-main: calc(16 * var(--u-unit, 1px));--u-field-label-size-main: var(--u-font-size-14, calc(14 * var(--u-unit, 1px)));--u-input-padding-y: calc(14 * var(--u-unit, 1px));--u-input-padding-x: calc(16 * var(--u-unit, 1px));--u-textarea-height: calc(125 * var(--u-unit, 1px))}.u-icon{font-size:var(--u-icon-size-main)}.u-selectbox-empty-text{padding:calc(14 * var(--u-unit, 1px)) calc(16 * var(--u-unit, 1px));font-size:var(--u-font-size-14, calc(14 * var(--u-unit, 1px)));line-height:1.4286}.u-selectbox-options-up{top:auto;bottom:100%;margin-top:0;margin-bottom:calc(2 * var(--u-unit, 1px))}.u-selectbox-select-icon-arrow{right:calc(18 * var(--u-unit, 1px))}.u-selectbox-select,.u-selectbox-select-required{padding-top:clamp(calc(12 * var(--u-unit, 1px)),1.1vw,calc(14 * var(--u-unit, 1px)));padding-bottom:clamp(calc(12 * var(--u-unit, 1px)),1.1vw,calc(14 * var(--u-unit, 1px)));box-sizing:border-box;line-height:calc(20 * var(--u-unit, 1px))}.u-selectbox-select:not(input),.u-selectbox-select-required:not(input){display:flex;align-items:center}.u-selectbox-select-icon-arrow,.u-selectbox-select-icon-cross{transition:transform var(--u-duration-fast, .15s) var(--u-ease-move, cubic-bezier(.2, 0, 0, 1)),top var(--u-duration-fast, .15s) var(--u-ease-move, cubic-bezier(.2, 0, 0, 1))}.u-selectbox .u-selectbox-options{transform-origin:top center}@media (prefers-reduced-motion:reduce){.u-selectbox-select-icon-arrow,.u-selectbox-select-icon-cross{transition:none}}.u-button{height:auto;min-height:var(--u-button-height, var(--u-height-main, calc(48 * var(--u-unit, 1px))));white-space:normal;padding-top:var(--u-button-padding-y, calc(6 * var(--u-unit, 1px)));padding-bottom:var(--u-button-padding-y, calc(6 * var(--u-unit, 1px)))}.u-button-text-icon-only{min-width:calc(44 * var(--u-unit, 1px));min-height:calc(44 * var(--u-unit, 1px));justify-content:center}.u-button.u-button-icon-only{box-sizing:border-box;width:var(--u-button-height, calc(48 * var(--u-unit, 1px)));min-width:var(--u-button-height, calc(48 * var(--u-unit, 1px)));padding:0;flex-shrink:0}.u-button-with-loading{position:relative}.u-button-loading-content{display:inline-flex;align-items:inherit;justify-content:inherit;flex-direction:inherit;gap:inherit;min-width:0}.u-button-loading .u-button-loading-content{opacity:0}.u-button-loading-indicator{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;pointer-events:none}.u-button-refresh-icon{display:inline-block;flex:0 0 auto;width:var(--u-button-refresh-icon-size);height:var(--u-button-refresh-icon-size);vertical-align:middle;transform-origin:center}.u-button-refresh-icon--spinning{animation:u-button-refresh-spin .75s linear infinite}@keyframes u-button-refresh-spin{to{transform:rotate(-360deg)}}@media (prefers-reduced-motion:reduce){.u-button-refresh-icon--spinning{animation:none}}.u-react-size-dense{--u-height-main: var(--u-dense-height);--u-input-line-padding-y: max(0px, calc((var(--u-dense-height) - 2px - 1.4286em) / 2));--u-input-padding-y: max(0px, calc((var(--u-dense-height) - 2px - 1.4286em) / 2));--u-textarea-min-height: var(--u-dense-height)}.u-react-size-dense .u-selectbox-select,.u-react-size-dense .u-selectbox-select-required{padding-top:var(--u-input-line-padding-y);padding-bottom:var(--u-input-line-padding-y)}.u-message,.u-message-fail,.u-message-success,.u-message-warning{background-position:top calc(15 * var(--u-unit)) left calc(16 * var(--u-unit))}.u-message,.u-message-fail,.u-message-success,.u-message-warning,.u-message-small,.u-message-small-fail,.u-message-small-success,.u-message-small-warning{overflow-wrap:anywhere}.u-message-small,.u-message-small-fail,.u-message-small-success,.u-message-small-warning{background-position:top calc(7 * var(--u-unit)) left calc(16 * var(--u-unit))}.u-message,.u-message-fail,.u-message-success,.u-message-warning,.u-message-small,.u-message-small-fail,.u-message-small-success,.u-message-small-warning{background-size:calc(20 * var(--u-unit)) calc(20 * var(--u-unit))}.u-form-field{display:flex;flex-direction:column;gap:calc(4 * var(--u-unit, 1px))}.u-form-field--inline{flex-direction:row;align-items:center;gap:calc(20 * var(--u-unit, 1px))}.u-form-field--inline .u-form-field__control{flex:1}.u-form-field__title{color:var(--u-field-title-color, #545454);font-size:var(--u-field-title-size, calc(14 * var(--u-unit, 1px)))}.u-form-field__control{min-width:0}.u-form-field__error{color:var(--u-color-error, #ef302b);font-size:var(--u-font-size-12, calc(12 * var(--u-unit, 1px)))}.u-form-field__hint{color:var(--u-color-text-secondary, #545454);font-size:var(--u-font-size-12, calc(12 * var(--u-unit, 1px)))}.u-form-field__title-row{display:flex;align-items:center;font-size:var(--u-field-title-size, calc(14 * var(--u-unit, 1px)))}.u-form-field__help{display:inline-flex;margin-left:calc(5 * var(--u-unit, 1px))}.u-form-field__help .u-button-text-table{min-height:0;height:auto;padding:0}.u-form-field__help .u-button-text-table:after{width:calc(24 * var(--u-unit, 1px));height:calc(24 * var(--u-unit, 1px))}.u-number.u-number-disabled .u-input{border:none!important;background-color:#f6f6f6!important;transition:none!important}.u-number.u-number-disabled .u-input:disabled{cursor:default}.u-number.u-number-disabled:hover .u-input,.u-number.u-number-disabled:hover .u-input:disabled,.u-number.u-number-disabled .u-input:disabled:hover,.u-number.u-number-disabled .u-input:disabled:focus,.u-number.u-number-disabled .u-input:disabled:active{border:none!important;box-shadow:none!important;outline:none!important;background-color:#f6f6f6!important}.u-number.u-number-disabled .u-number-up,.u-number.u-number-disabled .u-number-down{cursor:default;opacity:.45;pointer-events:none}.u-number.u-number-disabled .u-number-down,.u-number.u-number-disabled .u-number-down:hover{background-image:url("data:image/svg+xml,%3Csvg width='10' height='6' viewBox='0 0 10 6' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M5.38415 5.53884L9.31663 0.819867C9.58801 0.494204 9.35643 -0.000225067 8.93252 -0.000225067L1.06756 -0.000225067C0.64364 -0.000225067 0.412061 0.494203 0.683447 0.819866L4.61593 5.53884C4.81582 5.77872 5.18425 5.77872 5.38415 5.53884Z' fill='%23748AB9'/%3E%3C/svg%3E%0A")!important}.u-number.u-number-disabled .u-number-up,.u-number.u-number-disabled .u-number-up:hover{background-image:url("data:image/svg+xml,%3Csvg width='10' height='6' viewBox='0 0 10 6' fill='none' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M5.38415 5.53884L9.31663 0.819867C9.58801 0.494204 9.35643 -0.000225067 8.93252 -0.000225067L1.06756 -0.000225067C0.64364 -0.000225067 0.412061 0.494203 0.683447 0.819866L4.61593 5.53884C4.81582 5.77872 5.18425 5.77872 5.38415 5.53884Z' fill='%23748AB9'/%3E%3C/svg%3E%0A")!important}.u-search:hover .u-search-clear{opacity:1}.u-search .u-search-clear{display:flex;align-items:center;justify-content:center;opacity:0;position:absolute;top:calc(50% - calc(10 * var(--u-unit, 1px)));right:calc(16 * var(--u-unit, 1px));width:calc(20 * var(--u-unit, 1px));height:calc(20 * var(--u-unit, 1px));margin:0;padding:0;border:none;background:none;cursor:pointer;color:var(--u-color-text-muted, #A7A7A7);font-size:var(--u-font-size-20, calc(20 * var(--u-unit, 1px)));transition-property:color,opacity;transition-duration:var(--u-duration-fast, .15s);transition-timing-function:var(--u-ease-standard, ease-in-out)}.u-search .u-search-clear:hover{color:var(--u-color-primary, #1E4391)}.u-search .u-search-clear .u-icon{font-size:inherit}.u-search .u-search-clear:after{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:44px;height:44px}.u-search .u-input[type=search].u-input--clearable{padding-right:calc(44 * var(--u-unit, 1px))}.u-search .u-input[type=search]::-webkit-search-cancel-button{display:none}.u-search .u-input:focus+.u-search-clear,.u-search .u-search-clear:focus-visible{opacity:1}@media (hover:none){.u-search .u-search-clear{opacity:1}}.u-status{width:max-content;white-space:normal;max-width:100%;overflow-wrap:normal}.u-status-truncate{white-space:nowrap}.u-status__text{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.u-switch-wrapper,.u-switch{width:fit-content;max-width:100%;min-width:0}.u-switch .u-switch__point{flex-shrink:0}.u-switch .tt{min-width:0;overflow-wrap:break-word}.u-tabs{display:inline-grid;grid-template-columns:minmax(0,1fr);position:relative;min-width:0;max-width:100%;vertical-align:top;box-sizing:border-box}.u-tabs:where(:not(.u-tabs-full-width)){width:max-content}.u-tabs-segment{background:#f0f0f0;border-radius:calc(10 * var(--u-unit, 1px));padding:calc(2 * var(--u-unit, 1px))}.u-tabs-track{grid-area:1 / 1;display:flex;align-items:center;gap:inherit;min-width:0}.u-tabs-item{flex:0 0 auto;min-width:0;max-width:100%}.u-tabs-track>.u-tabs-item:only-of-type{flex-shrink:1}.u-tabs-track{position:relative}.u-tabs .u-tab-segment{transition:color var(--u-duration-base, .2s) var(--u-ease-move, cubic-bezier(.2, 0, 0, 1))}.u-tab-segment>.u-tabs-title{align-self:stretch}.u-tab-segment .u-tabs-title{position:relative;display:block;text-align:center;font-weight:var(--u-font-weight-regular, 400);-webkit-text-fill-color:currentcolor;transition:-webkit-text-fill-color var(--u-duration-base, .2s) var(--u-ease-move, cubic-bezier(.2, 0, 0, 1))}.u-tab-segment .u-tabs-title:before{content:attr(data-label);display:block;height:0;overflow:hidden;visibility:hidden;font-weight:600;pointer-events:none;-webkit-user-select:none;user-select:none}.u-tab-segment .u-tabs-title:after{content:attr(data-label);position:absolute;inset:0;overflow:hidden;text-overflow:ellipsis;font-weight:600;-webkit-text-fill-color:transparent;transition:inherit}.u-tab-segment.u-tab-segment-active .u-tabs-title{-webkit-text-fill-color:transparent}.u-tab-segment.u-tab-segment-active .u-tabs-title:after{-webkit-text-fill-color:currentcolor}@media (prefers-reduced-motion:reduce){.u-tabs .u-tab-segment,.u-tab-segment .u-tabs-title{transition:none}}.u-tabs-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%}.u-tab-segment{border:none;background:transparent;color:var(--u-color-text-secondary);padding:calc(10 * var(--u-unit, 1px)) calc(20 * var(--u-unit, 1px));border-radius:calc(8 * var(--u-unit, 1px));cursor:pointer;white-space:nowrap;display:flex;flex-direction:column;align-items:center;max-width:100%;min-width:0;font-size:var(--u-font-size-14, calc(14 * var(--u-unit, 1px)));font-family:inherit}.u-tab-segment:before{content:attr(data-label);font-weight:600;visibility:hidden;height:0;overflow:hidden;pointer-events:none;-webkit-user-select:none;user-select:none}.u-tab-segment.u-tab-segment-active{background:var(--u-color-surface);color:var(--u-color-primary);box-shadow:0 1px 4px #0000001f;font-weight:600}:where(.u-tabs.u-tabs-full-width){width:100%}.u-tabs-full-width>.u-tabs-track>.u-tabs-item{flex:1 1 0;min-width:0}.u-tabs-full-width>.u-tabs-track>.u-tabs-item>button,.u-tabs-full-width>.u-tabs-track>.u-tabs-item>a{width:100%;justify-content:center}.u-tabs .u-tab--disabled{opacity:.5;cursor:not-allowed}.u-tabs :is(button,a):focus:not(:focus-visible){outline:none}.u-tabs :is(button,a):focus-visible{outline:2px solid var(--u-color-primary);outline-offset:-2px}.u-tabs a.u-tab-segment{font-style:normal;line-height:normal;letter-spacing:normal}.u-tabs a.u-tab-segment,.u-tabs a.u-tab-segment:hover{text-decoration:none}.u-tabs a.u-tab-segment:not(.u-tab-segment-active):hover{color:var(--u-color-text-secondary)}.u-selectbox-select *{pointer-events:none}.u-selectbox-select-icon-cross{pointer-events:auto}`, hostAttrs: ["data-input-mode", "data-u-responsive", "data-u-viewport"] };
|
|
837
|
+
const Et = typeof ke == "object" ? ke : { css: "", hostAttrs: [] }, c = (t) => String(t ?? "").replace(/[&<>"']/g, (e) => ({ "&": "&", "<": "<", ">": ">", '"': """, "'": "'" })[e]);
|
|
838
|
+
function sr(t, e, r) {
|
|
839
|
+
return `<label class="u-switch u-switch-small"><input type="checkbox" role="switch" ${e}><div class="u-switch__point"></div>
|
|
840
|
+
<span class="tt">${c(t)}${r ? `<span class="sub">${c(r)}</span>` : ""}</span></label>`;
|
|
841
|
+
}
|
|
842
|
+
function F(t, e, r, o = "button") {
|
|
843
|
+
return `<button class="${e === "text" ? "u-button-text" : e === "text-danger" ? "u-button-text u-button-text-danger" : `u-button u-button-small${e === "primary" ? "" : ` u-button-${e}`}`}" type="${o}" ${r}>${c(t)}</button>`;
|
|
844
|
+
}
|
|
845
|
+
function lr(t, e, r) {
|
|
846
|
+
return `<button class="u-button-text u-button-text-icon-only" type="button" aria-label="${c(e)}" ${r}><i class="u-icon ${t}" aria-hidden="true"></i></button>`;
|
|
847
|
+
}
|
|
848
|
+
function Ea(t, e, r) {
|
|
849
|
+
return `<div class="u-search"><input class="u-input${t ? " u-input--clearable" : ""}" type="search" data-search placeholder="${c(e)}" aria-label="${c(r)}" value="${c(t)}">
|
|
850
|
+
${t ? '<button class="u-search-clear" type="button" aria-label="Очистить" data-search-clear><i class="u-icon icon-cross-small" aria-hidden="true"></i></button>' : ""}
|
|
851
|
+
<button class="u-search-loupe" type="button" tabindex="-1" aria-hidden="true"></button></div>`;
|
|
852
|
+
}
|
|
853
|
+
function Ca(t, e) {
|
|
854
|
+
return `<div class="u-number"><button class="u-number-down" type="button" data-step="-1" aria-label="Уменьшить: ${c(t)}"></button>
|
|
855
|
+
<input class="u-input" type="number" aria-label="${c(t)}" ${e}>
|
|
856
|
+
<button class="u-number-up" type="button" data-step="1" aria-label="Увеличить: ${c(t)}"></button></div>`;
|
|
857
|
+
}
|
|
858
|
+
function Fa(t) {
|
|
859
|
+
var r;
|
|
860
|
+
const e = (r = t.closest(".u-number")) == null ? void 0 : r.querySelector("input");
|
|
861
|
+
e && (t.dataset.step === "-1" ? e.stepDown() : e.stepUp(), e.dispatchEvent(new Event("input", { bubbles: !0 })));
|
|
862
|
+
}
|
|
863
|
+
function K(t, e, r = "", o = "") {
|
|
864
|
+
return `<div class="u-form-field${o ? ` ${o}` : ""}"><span class="u-form-field__title">${c(t)}</span>
|
|
865
|
+
<div class="u-form-field__control">${e}</div>${r}</div>`;
|
|
866
|
+
}
|
|
867
|
+
function Aa(t, e) {
|
|
868
|
+
return `<div class="u-tabs u-tabs-segment u-tabs-full-width"><div class="u-tabs-track" role="tablist">${t.map((r) => {
|
|
869
|
+
const o = r.id === e;
|
|
870
|
+
return `<div class="u-tabs-item"><button class="u-tab-segment${o ? " u-tab-segment-active" : ""}" type="button" role="tab" data-tab="${r.id}"
|
|
871
|
+
data-label="${c(r.title)}" aria-selected="${o}"><span class="u-tabs-title" data-label="${c(r.title)}">${c(r.title)}</span></button></div>`;
|
|
872
|
+
}).join("")}</div></div>`;
|
|
873
|
+
}
|
|
874
|
+
function Vt(t, e, r, o, a) {
|
|
875
|
+
const n = `u-dev-select-${t}`, i = r.find((u) => u.value === o) ?? r[0];
|
|
876
|
+
return `<div class="u-selectbox"><input type="hidden" ${a} value="${c(i == null ? void 0 : i.value)}" data-default="${c(i == null ? void 0 : i.value)}">
|
|
877
|
+
<div class="u-selectbox-select" tabindex="0" role="combobox" aria-expanded="false" aria-haspopup="listbox" aria-controls="${n}"
|
|
878
|
+
aria-label="${c(e)}" data-select="${t}"><span class="u-selectbox-select-title">${c(i == null ? void 0 : i.label)}</span><i class="u-selectbox-select-icon-arrow" aria-hidden="true"></i></div>
|
|
879
|
+
<div class="u-selectbox-options" role="listbox" id="${n}" aria-label="${c(e)}">${r.map((u, p) => `
|
|
880
|
+
<div class="u-selectbox-option" role="option" id="${n}-${p}" data-value="${c(u.value)}" aria-selected="${u === i}">${c(u.label)}</div>`).join("")}</div></div>`;
|
|
881
|
+
}
|
|
882
|
+
const nt = (t) => ({
|
|
883
|
+
trigger: t.querySelector("[data-select]"),
|
|
884
|
+
input: t.querySelector('input[type="hidden"]'),
|
|
885
|
+
options: [...t.querySelectorAll(".u-selectbox-option")]
|
|
886
|
+
});
|
|
887
|
+
function cr(t) {
|
|
888
|
+
const { trigger: e, input: r, options: o } = nt(t);
|
|
889
|
+
if (!e || !r) return;
|
|
890
|
+
const a = o.find((i) => i.dataset.value === r.value) ?? o[0];
|
|
891
|
+
o.forEach((i) => i.setAttribute("aria-selected", String(i === a)));
|
|
892
|
+
const n = e.querySelector(".u-selectbox-select-title");
|
|
893
|
+
n && a && (n.textContent = a.textContent), a && (r.value = a.dataset.value ?? "");
|
|
894
|
+
}
|
|
895
|
+
function dr(t) {
|
|
896
|
+
t.querySelectorAll(".u-selectbox").forEach(cr);
|
|
897
|
+
}
|
|
898
|
+
function pr(t) {
|
|
899
|
+
t.querySelectorAll(".u-selectbox input[data-default]").forEach((e) => {
|
|
900
|
+
e.value = e.dataset.default ?? "";
|
|
901
|
+
}), dr(t);
|
|
902
|
+
}
|
|
903
|
+
const Wt = (t) => t.querySelector(".u-selectbox-select-open");
|
|
904
|
+
function fr(t, e) {
|
|
905
|
+
var o;
|
|
906
|
+
const r = t.closest(".u-selectbox");
|
|
907
|
+
!r || !e || (nt(r).options.forEach((a) => a.classList.toggle("active", a === e)), t.setAttribute("aria-activedescendant", e.id), (o = e.scrollIntoView) == null || o.call(e, { block: "nearest" }));
|
|
908
|
+
}
|
|
909
|
+
function z(t, e) {
|
|
910
|
+
const r = t.closest(".u-selectbox"), o = r == null ? void 0 : r.querySelector(".u-selectbox-options");
|
|
911
|
+
if (!r || !o) return;
|
|
912
|
+
if (t.classList.toggle("u-selectbox-select-open", e), t.setAttribute("aria-expanded", String(e)), !e) {
|
|
913
|
+
t.removeAttribute("aria-activedescendant");
|
|
914
|
+
return;
|
|
915
|
+
}
|
|
916
|
+
const a = t.closest(".body");
|
|
917
|
+
if (a) {
|
|
918
|
+
const i = a.getBoundingClientRect(), u = t.getBoundingClientRect();
|
|
919
|
+
o.classList.toggle("u-selectbox-options-up", i.bottom - u.bottom < o.offsetHeight + 8 && u.top - i.top > i.bottom - u.bottom);
|
|
920
|
+
}
|
|
921
|
+
const { options: n } = nt(r);
|
|
922
|
+
fr(t, n.find((i) => i.getAttribute("aria-selected") === "true") ?? n[0]);
|
|
923
|
+
}
|
|
924
|
+
function $a(t) {
|
|
925
|
+
t.querySelectorAll(".u-selectbox-select-open").forEach((e) => z(e, !1));
|
|
926
|
+
}
|
|
927
|
+
function hr(t) {
|
|
928
|
+
const e = t.closest(".u-selectbox");
|
|
929
|
+
if (!e) return;
|
|
930
|
+
const { trigger: r, input: o } = nt(e);
|
|
931
|
+
!r || !o || (z(r, !1), r.focus({ preventScroll: !0 }), o.value !== t.dataset.value && (o.value = t.dataset.value ?? "", cr(e), o.dispatchEvent(new Event("change", { bubbles: !0 }))));
|
|
932
|
+
}
|
|
933
|
+
function Sa(t, e) {
|
|
934
|
+
const r = e.closest(".u-selectbox");
|
|
935
|
+
if (!r) return;
|
|
936
|
+
const { options: o } = nt(r), a = e.classList.contains("u-selectbox-select-open"), n = o.findIndex((u) => u.classList.contains("active"));
|
|
937
|
+
if (t.key === "Tab") {
|
|
938
|
+
a && z(e, !1);
|
|
939
|
+
return;
|
|
940
|
+
}
|
|
941
|
+
if (!a) {
|
|
942
|
+
["Enter", " ", "ArrowDown", "ArrowUp"].includes(t.key) && (t.preventDefault(), z(e, !0));
|
|
943
|
+
return;
|
|
944
|
+
}
|
|
945
|
+
const i = { ArrowDown: n + 1, ArrowUp: n - 1, Home: 0, End: o.length - 1 }[t.key];
|
|
946
|
+
i !== void 0 ? (t.preventDefault(), fr(e, o[Math.max(0, Math.min(o.length - 1, i))])) : (t.key === "Enter" || t.key === " ") && (t.preventDefault(), o[n] && hr(o[n]));
|
|
947
|
+
}
|
|
948
|
+
const La = `
|
|
404
949
|
:host { all: initial; }
|
|
405
950
|
* { box-sizing: border-box; }
|
|
406
|
-
.root {
|
|
407
|
-
|
|
951
|
+
.root {
|
|
952
|
+
/* «Анимации ×5» ставит длительности на каждый элемент документа, в том числе на хост панели:
|
|
953
|
+
режим замедляет сервис, а не инструмент, которым его включили. */
|
|
954
|
+
--u-duration-instant: 100ms; --u-duration-fast: 150ms; --u-duration-base: 200ms; --u-duration-moderate: 250ms; --u-duration-slow: 300ms;
|
|
408
955
|
/* Отступ кнопки снизу: StickyActionBar кита, пока стоит у нижнего края, задаёт на <html>
|
|
409
956
|
--u-dev-launcher-bottom (его высота + 12px) — кнопка и панель поднимаются над ним. */
|
|
410
957
|
--launcher-bottom: var(--u-dev-launcher-bottom, calc(12px + env(safe-area-inset-bottom, 0px)));
|
|
411
|
-
font-family: Montserrat, "Segoe UI", Arial, sans-serif; font-size:
|
|
412
|
-
button, input,
|
|
958
|
+
font-family: Montserrat, "Segoe UI", Arial, sans-serif; font-size: 14px; line-height: 1.4; color: var(--u-color-text, #222); }
|
|
959
|
+
button, input, textarea { font: inherit; color: inherit; }
|
|
413
960
|
/* Кнопка панели — в цветах кита: токены --u-color-* с :root сервиса проходят в shadow DOM
|
|
414
961
|
(all: initial их не сбрасывает), запасные значения — как в ките. В покое — круг с логотипом,
|
|
415
962
|
чтобы меньше закрывать нижние липкие панели сервиса; при наведении и фокусе раскрывается
|
|
@@ -419,361 +966,522 @@ button, input, select { font: inherit; color: inherit; }
|
|
|
419
966
|
position: fixed; left: 12px; bottom: var(--launcher-bottom); z-index: 2147483000;
|
|
420
967
|
display: inline-flex; align-items: center; height: 36px; padding: 0; border: 1px solid var(--kit-line); border-radius: 18px;
|
|
421
968
|
background: var(--kit-surface); color: var(--kit-p); font-size: 13px; font-weight: 500; white-space: nowrap; cursor: pointer;
|
|
422
|
-
box-shadow: 0 2px 8px rgba(0,0,0,.15);
|
|
969
|
+
box-shadow: 0 2px 8px rgba(0,0,0,.15);
|
|
970
|
+
transition: background-color var(--u-duration-fast) var(--u-ease-standard), border-color var(--u-duration-fast) var(--u-ease-standard); }
|
|
423
971
|
.pill .logo { flex: none; display: grid; place-items: center; width: 34px; height: 34px; border-radius: 50%; background: var(--kit-surface); }
|
|
424
972
|
.pill .logo svg { display: block; width: 20px; height: 20px; }
|
|
425
973
|
.pill .label { max-width: 0; overflow: hidden; opacity: 0; padding: 0;
|
|
426
|
-
transition: max-width
|
|
974
|
+
transition: max-width var(--u-duration-base) var(--u-ease-move), opacity var(--u-duration-base) var(--u-ease-move), padding var(--u-duration-base) var(--u-ease-move); }
|
|
427
975
|
.pill:hover .label, .pill:focus-visible .label, .pill.on .label { max-width: 260px; opacity: 1; padding: 0 14px 0 2px; }
|
|
428
976
|
.pill.on { background: var(--kit-error); border-color: var(--kit-error); color: #fff; }
|
|
429
977
|
.pill.on .logo { width: 30px; height: 30px; margin: 0 1px 0 2px; }
|
|
430
978
|
.pill:focus-visible { outline: 2px solid var(--kit-p); outline-offset: 2px; }
|
|
431
979
|
.panel { position: fixed; left: 12px; bottom: calc(var(--launcher-bottom) + 44px); z-index: 2147483001;
|
|
432
|
-
width:
|
|
433
|
-
background: var(--
|
|
980
|
+
width: 400px; max-width: calc(100vw - 24px); max-height: min(75vh, 680px); display: flex; flex-direction: column;
|
|
981
|
+
background: var(--u-color-surface, #fff); border: 1px solid var(--u-color-border-light, #d3d3d3); border-radius: var(--u-radius, 10px);
|
|
982
|
+
box-shadow: var(--u-shadow-popup, 0 8px 24px rgba(15,43,94,.16)); }
|
|
434
983
|
.panel.alone { bottom: var(--launcher-bottom); }
|
|
984
|
+
/* Подсказка у кнопки — пузырь, как у Tooltip кита. */
|
|
435
985
|
.hint { position: fixed; left: 12px; bottom: var(--launcher-bottom); z-index: 2147483000;
|
|
436
|
-
max-width: calc(100vw - 24px); padding: 8px 12px; border-radius:
|
|
437
|
-
|
|
438
|
-
.note { margin: 0 12px 8px; padding: 6px 10px; border-radius: 8px; background: var(--p-soft); color: var(--fg); font-size: 12px; overflow-wrap: anywhere; }
|
|
986
|
+
max-width: min(360px, calc(100vw - 24px)); padding: 8px 12px; border-radius: var(--u-radius-small, 8px);
|
|
987
|
+
background: var(--u-color-text, #222); color: var(--u-color-surface, #fff); font-size: 12px; box-shadow: var(--u-shadow-popup); }
|
|
439
988
|
.pill ~ .hint { bottom: calc(var(--launcher-bottom) + 44px); }
|
|
440
|
-
|
|
441
|
-
.
|
|
442
|
-
.
|
|
443
|
-
.
|
|
444
|
-
.
|
|
445
|
-
.
|
|
446
|
-
.
|
|
447
|
-
.
|
|
448
|
-
.
|
|
449
|
-
.
|
|
450
|
-
.
|
|
451
|
-
.
|
|
452
|
-
.
|
|
453
|
-
.
|
|
454
|
-
.
|
|
455
|
-
.switch {
|
|
456
|
-
.switch
|
|
457
|
-
|
|
458
|
-
.
|
|
459
|
-
.
|
|
460
|
-
.
|
|
461
|
-
.
|
|
462
|
-
.
|
|
463
|
-
|
|
464
|
-
.
|
|
465
|
-
.
|
|
466
|
-
|
|
467
|
-
.
|
|
468
|
-
.
|
|
469
|
-
.
|
|
470
|
-
.
|
|
471
|
-
|
|
472
|
-
.
|
|
473
|
-
.
|
|
474
|
-
.
|
|
475
|
-
.
|
|
476
|
-
.
|
|
477
|
-
.
|
|
478
|
-
|
|
479
|
-
.
|
|
480
|
-
|
|
989
|
+
/* min-height у u-message-small отменяет защиту флекс-элемента от сжатия: без flex-shrink текст обрезается. */
|
|
990
|
+
.note { margin: 0 16px 8px; overflow-wrap: anywhere; flex-shrink: 0; }
|
|
991
|
+
.head { display: flex; align-items: center; gap: 4px; padding: 10px 8px 2px 16px; }
|
|
992
|
+
.title { flex: 1; min-width: 0; font-weight: 600; font-size: 16px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
|
|
993
|
+
.title .u-selectbox { width: 100%; }
|
|
994
|
+
.title .u-selectbox-select-title { font-weight: 600; }
|
|
995
|
+
.intro, .caption, .escape { margin: 0; color: var(--u-color-text-secondary, #545454); }
|
|
996
|
+
.intro { padding: 0 16px 10px; }
|
|
997
|
+
.tabs { padding: 0 16px 8px; }
|
|
998
|
+
.tabs .u-tab-segment { padding: 6px 4px; }
|
|
999
|
+
.body { overflow: auto; padding: 4px 16px 12px; display: flex; flex-direction: column; gap: 14px; }
|
|
1000
|
+
.body .u-search { display: block; width: 100%; }
|
|
1001
|
+
.group { display: flex; flex-direction: column; gap: 8px; }
|
|
1002
|
+
.group-title { font-weight: 600; color: var(--u-color-text-secondary, #545454); }
|
|
1003
|
+
.u-switch { align-items: flex-start; }
|
|
1004
|
+
.u-switch .tt { padding-top: 3px; }
|
|
1005
|
+
.u-switch .sub { display: block; color: var(--u-color-text-secondary, #545454); font-size: 12px; }
|
|
1006
|
+
/* Select кита: отметка выбранного и пункта под клавиатурой — как у Select в React и Vue. */
|
|
1007
|
+
.u-selectbox-option[aria-selected="true"] { background: var(--u-color-background, #f6f6f6); }
|
|
1008
|
+
.u-selectbox-option.active { background: var(--u-color-selected, #e7f2ff); }
|
|
1009
|
+
.u-selectbox-select-icon-arrow { transition: transform var(--u-duration-fast) var(--u-ease-standard); }
|
|
1010
|
+
.u-selectbox-select-open .u-selectbox-select-icon-arrow { transform: rotate(180deg); }
|
|
1011
|
+
.rule { display: flex; align-items: center; gap: 10px; padding: 6px 4px 6px 10px; border-radius: var(--u-radius-small, 8px);
|
|
1012
|
+
background: var(--u-color-background-light, #f9f9f9); }
|
|
1013
|
+
.rule .text { flex: 1; min-width: 0; font-family: Consolas, monospace; font-size: 12px; overflow-wrap: anywhere; }
|
|
1014
|
+
.rule small, .req small, .shown small { display: block; color: var(--u-color-text-secondary, #545454);
|
|
1015
|
+
font-family: Montserrat, "Segoe UI", Arial, sans-serif; font-size: 12px; }
|
|
1016
|
+
.add { display: grid; grid-template-columns: 1fr 1fr; gap: 10px 8px; }
|
|
1017
|
+
.add .wide { grid-column: 1 / -1; }
|
|
1018
|
+
.add .u-textarea { height: auto; min-height: 76px; font-family: Consolas, monospace; font-size: 12px; resize: vertical; }
|
|
1019
|
+
.add .u-form-field__hint { color: var(--u-color-warning, #e98446); }
|
|
1020
|
+
.add [type="submit"] { align-self: end; }
|
|
1021
|
+
.foot { display: flex; flex-direction: column; gap: 8px; padding: 10px 16px 12px; border-top: 1px solid var(--u-color-border-light, #d3d3d3); }
|
|
1022
|
+
.actions { display: flex; gap: 8px; flex-wrap: wrap; }
|
|
1023
|
+
.empty { margin: 0; color: var(--u-color-text-secondary, #545454); }
|
|
1024
|
+
.list-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; color: var(--u-color-text-secondary, #545454); }
|
|
1025
|
+
.requests { display: flex; flex-direction: column; }
|
|
1026
|
+
.req { display: grid; grid-template-columns: 52px 1fr auto auto; gap: 8px; align-items: center; padding: 6px 0;
|
|
1027
|
+
border-bottom: 1px solid var(--u-color-background, #f6f6f6); font-family: Consolas, monospace; font-size: 12px; }
|
|
1028
|
+
.req .path { min-width: 0; overflow-wrap: break-word; }
|
|
1029
|
+
/* Путь переносится по «/» (<wbr>), а не посреди слова; длинный обрезается на второй строке, полный — в title. */
|
|
1030
|
+
.req .path .p { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; line-clamp: 2; overflow: hidden; }
|
|
1031
|
+
.req .u-status { font-family: Montserrat, "Segoe UI", Arial, sans-serif; }
|
|
1032
|
+
.shown { padding: 8px 0; border-bottom: 1px solid var(--u-color-background, #f6f6f6); }
|
|
1033
|
+
.shown-head { display: flex; justify-content: space-between; gap: 8px; color: var(--u-color-text-secondary, #545454); font-size: 12px; }
|
|
1034
|
+
.shown-head .kind { font-weight: 600; color: var(--u-color-error, #ef302b); }
|
|
1035
|
+
.shown-head .kind.warning { color: var(--u-color-warning, #e98446); }
|
|
481
1036
|
.shown-title { font-weight: 600; }
|
|
482
|
-
.shown small { display: block; color: var(--muted); font-size: 11px; }
|
|
483
1037
|
.shown .cause { margin-top: 2px; font-family: Consolas, monospace; font-size: 12px; }
|
|
484
|
-
.requests-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; color: var(--muted); font-size: 11px; }
|
|
485
1038
|
dl { display: grid; grid-template-columns: auto 1fr; gap: 6px 12px; margin: 0; }
|
|
486
|
-
dt { color: var(--
|
|
1039
|
+
dt { color: var(--u-color-text-secondary, #545454); }
|
|
487
1040
|
dd { margin: 0; font-family: Consolas, monospace; font-size: 12px; overflow-wrap: anywhere; }
|
|
488
1041
|
@media (max-width: 576px) {
|
|
489
|
-
.panel { left: 0; right: 0; bottom: 0; width: auto; max-width: none; max-height:
|
|
490
|
-
padding-bottom: env(safe-area-inset-bottom, 0px); }
|
|
1042
|
+
.panel { left: 0; right: 0; bottom: 0; width: auto; max-width: none; max-height: 80vh;
|
|
1043
|
+
border-radius: var(--u-radius, 10px) var(--u-radius, 10px) 0 0; padding-bottom: env(safe-area-inset-bottom, 0px); }
|
|
491
1044
|
.panel ~ .pill { display: none; }
|
|
492
1045
|
}
|
|
493
|
-
@media (prefers-reduced-motion: reduce) { .
|
|
494
|
-
`,
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
1046
|
+
@media (prefers-reduced-motion: reduce) { .u-selectbox-select-icon-arrow, .pill, .pill .label { transition: none; } }
|
|
1047
|
+
`, _a = {
|
|
1048
|
+
title: "Сеть",
|
|
1049
|
+
items: [
|
|
1050
|
+
{ id: "offline", label: "Офлайн браузера", hint: "Полоса «Нет связи», запросы к API падают" },
|
|
1051
|
+
{ id: "network", label: "Обрыв соединения", hint: "Сеть есть, а сервер не отвечает" },
|
|
1052
|
+
{ id: "slow", label: "Медленные ответы", hint: `Задержка ${je / 1e3} с на запросы к API` }
|
|
1053
|
+
]
|
|
1054
|
+
}, br = {
|
|
1055
|
+
authFail: { label: "Сбой входа", hint: "После перезагрузки сервис рисует заглушку входа" },
|
|
1056
|
+
crashApp: { label: "Падение приложения", hint: "Ошибка рендера над каркасом сервиса" },
|
|
1057
|
+
crashPage: { label: "Падение страницы", hint: "Каждая открытая страница падает, пока флаг включён" }
|
|
1058
|
+
}, Jt = [["", "Любой"], ["GET", "GET"], ["write", "Запись"], ["POST", "POST"], ["PUT", "PUT"], ["PATCH", "PATCH"], ["DELETE", "DELETE"]], za = [200, 201, 204, 400, 401, 403, 404, 409, 422, 429, 500, 502, 503, 504], Da = '<svg viewBox="0 0 36 36" fill="none" aria-hidden="true" focusable="false" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M28 0L20 16H36L28 0ZM28 5.11101L23.6984 13.7143H32.3016L28 5.11101Z" fill="#3BA68C"/><path fill-rule="evenodd" clip-rule="evenodd" d="M9 33.7143C12.1559 33.7143 14.7143 31.1559 14.7143 28C14.7143 24.8441 12.1559 22.2857 9 22.2857C5.84409 22.2857 3.28571 24.8441 3.28571 28C3.28571 31.1559 5.84409 33.7143 9 33.7143ZM9 36C13.4183 36 17 32.4183 17 28C17 23.5817 13.4183 20 9 20C4.58172 20 1 23.5817 1 28C1 32.4183 4.58172 36 9 36Z" fill="#E54B6A"/><path fill-rule="evenodd" clip-rule="evenodd" d="M33.7143 22.2857H22.2857V33.7143H33.7143V22.2857ZM20 20V36H36V20H20Z" fill="#1E4391"/><path fill-rule="evenodd" clip-rule="evenodd" d="M12.0593 4.9091L9 0L5.94073 4.9091L0 6.11146L4.05 10.3478L3.43769 16L9 13.7091L14.5623 16L13.95 10.3478L18 6.11146L12.0593 4.9091ZM14.0262 7.31822L10.7085 6.64674L9 3.90515L7.29149 6.64674L3.97378 7.31822L6.23558 9.68408L5.89362 12.8407L9 11.5613L12.1064 12.8407L11.7644 9.68408L14.0262 7.31822Z" fill="#E98446"/></svg>', Ta = 6e3;
|
|
1059
|
+
let Yt, f = null, s = null, V = null, O = null, q = null, b = null, rt = !1, Y = !1, w = null, S = "", dt = "";
|
|
1060
|
+
const ae = { open: !1, tab: "faults", search: "", service: void 0, hint: "" }, d = { ...ae };
|
|
1061
|
+
function it() {
|
|
1062
|
+
const t = y();
|
|
1063
|
+
return t.find((e) => e.config.service === d.service) ?? t[0];
|
|
1064
|
+
}
|
|
1065
|
+
function vr(t) {
|
|
1066
|
+
const e = (t.config.builtins ?? []).map((r) => ({ id: r, ...br[r] }));
|
|
503
1067
|
return [
|
|
504
1068
|
...e.length ? [{ title: "Весь сервис", items: e }] : [],
|
|
505
|
-
|
|
1069
|
+
_a,
|
|
506
1070
|
...t.config.groups ?? []
|
|
507
1071
|
];
|
|
508
1072
|
}
|
|
509
|
-
function
|
|
510
|
-
var
|
|
511
|
-
return ((
|
|
1073
|
+
function Ma(t, e) {
|
|
1074
|
+
var r;
|
|
1075
|
+
return ((r = vr(t).flatMap((o) => o.items).find((o) => o.id === e)) == null ? void 0 : r.label) ?? e;
|
|
512
1076
|
}
|
|
513
|
-
function
|
|
1077
|
+
function gr(t) {
|
|
514
1078
|
return [
|
|
515
|
-
...t.state.faults.map((e) =>
|
|
1079
|
+
...t.state.faults.map((e) => Ma(t, e)),
|
|
516
1080
|
...t.state.rules.filter((e) => e.enabled).map((e) => `${e.path} → ${e.status}`)
|
|
517
1081
|
];
|
|
518
1082
|
}
|
|
519
|
-
function
|
|
520
|
-
const
|
|
521
|
-
return
|
|
522
|
-
}
|
|
523
|
-
const
|
|
524
|
-
function
|
|
525
|
-
const e = new Set(t.state.faults),
|
|
526
|
-
const
|
|
527
|
-
return
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
}
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
1083
|
+
function Ba(t, e, r, o) {
|
|
1084
|
+
const a = t % 100, n = t % 10;
|
|
1085
|
+
return a >= 11 && a <= 14 ? o : n === 1 ? e : n >= 2 && n <= 4 ? r : o;
|
|
1086
|
+
}
|
|
1087
|
+
const Ee = (t) => !d.search || t.toLowerCase().includes(d.search.toLowerCase());
|
|
1088
|
+
function Ra(t) {
|
|
1089
|
+
const e = new Set(t.state.faults), r = vr(t).map((u) => {
|
|
1090
|
+
const p = u.items.filter((l) => Ee(`${l.label} ${l.hint ?? ""} ${l.id}`));
|
|
1091
|
+
return p.length ? `<div class="group"><div class="group-title h5">${c(u.title)}</div>${p.map((l) => sr(l.label, `data-fault="${c(l.id)}" ${e.has(l.id) ? "checked" : ""}`, l.hint)).join("")}</div>` : "";
|
|
1092
|
+
}).join(""), o = t.state.rules.filter((u) => Ee(`${u.method ?? ""} ${u.path} ${u.status}`)), a = (u) => {
|
|
1093
|
+
var p;
|
|
1094
|
+
return ((p = Jt.find(([l]) => l === (u ?? ""))) == null ? void 0 : p[1]) ?? u;
|
|
1095
|
+
}, n = (u) => [
|
|
1096
|
+
u.body !== void 0 ? "своё тело" : "",
|
|
1097
|
+
u.delay ? `задержка ${u.delay} мс` : ""
|
|
1098
|
+
].filter(Boolean).join(" · "), i = c(t.config.apiBase ?? "адреса сайта");
|
|
535
1099
|
return `
|
|
536
|
-
|
|
537
|
-
${
|
|
538
|
-
<div><div class="group-title">Ответы сервера</div>
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
1100
|
+
${Ea(d.search, "Поиск: 503, офлайн, роли…", "Поиск по сценариям")}
|
|
1101
|
+
${r || (o.length ? "" : '<p class="empty tt">Ничего не найдено.</p>')}
|
|
1102
|
+
<div class="group"><div class="group-title h5">Ответы сервера</div>
|
|
1103
|
+
<p class="caption h5">Свой ответ API на адрес: пустой список, ошибка с текстом, ответ для другой роли. Включённое правило подменяет ответ сервера.</p>
|
|
1104
|
+
${o.map((u) => `<div class="rule"><span class="text"${u.body !== void 0 ? ` title="${c(u.body.slice(0, 300))}"` : ""}>${c(a(u.method))} ${c(u.path)} → ${u.status}${n(u) ? `<small>${c(n(u))}</small>` : ""}</span>
|
|
1105
|
+
<label class="u-switch u-switch-small"><input type="checkbox" role="switch" data-rule="${c(u.id)}" ${u.enabled ? "checked" : ""}
|
|
1106
|
+
aria-label="${c(`${u.path} → ${u.status}`)}"><div class="u-switch__point"></div></label>
|
|
1107
|
+
${lr("icon-cross", "Удалить правило", `data-remove="${c(u.id)}"`)}</div>`).join("")}
|
|
543
1108
|
<form class="add" data-add>
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
1109
|
+
${K("Метод", Vt("method", "Метод", Jt.map(([u, p]) => ({ value: u, label: p })), "", 'name="method"'))}
|
|
1110
|
+
${K("Код ответа", Vt("status", "Код ответа", za.map((u) => ({ value: String(u), label: String(u) })), "503", 'name="status"'))}
|
|
1111
|
+
${K(`Путь после ${t.config.apiBase ?? "адреса сайта"}`, `<input class="u-input" name="path" required placeholder="/assets/*" aria-label="Путь после ${i}">`, "", "wide")}
|
|
1112
|
+
${K(
|
|
1113
|
+
"Тело ответа — JSON или текст (необязательно)",
|
|
1114
|
+
`<textarea class="u-textarea" name="body" rows="3" maxlength="${_e}" spellcheck="false" placeholder='[] или {"items": []}' aria-label="Тело ответа"></textarea>`,
|
|
1115
|
+
'<span class="u-form-field__hint h5" data-body-hint hidden>Это не JSON — ответ уйдёт как простой текст.</span>',
|
|
1116
|
+
"wide"
|
|
1117
|
+
)}
|
|
1118
|
+
${K("Задержка, мс", Ca("Задержка, мс", `name="delay" min="0" max="${Le}" step="100" placeholder="0"`))}
|
|
1119
|
+
${F("Добавить", "primary", "", "submit")}
|
|
548
1120
|
</form>
|
|
549
1121
|
</div>`;
|
|
550
1122
|
}
|
|
551
|
-
function
|
|
1123
|
+
function Oa() {
|
|
552
1124
|
const t = document.documentElement.getAttribute("data-u-viewport");
|
|
553
1125
|
return t || (window.matchMedia("(max-width: 576px)").matches ? "mobile" : window.matchMedia("(max-width: 900px)").matches ? "tablet" : "desktop");
|
|
554
1126
|
}
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
1127
|
+
const ne = {
|
|
1128
|
+
reduce: { label: "Уменьшенная анимация", hint: "Как при системной настройке «уменьшить движение»" },
|
|
1129
|
+
slow: { label: "Анимации ×5", hint: "Длительности кита в пять раз дольше — рассмотреть движение" },
|
|
1130
|
+
highlight: { label: "Подсветка «не из кита»", hint: "Рамкой — кнопки, поля, ссылки, таблицы, окна, svg и заголовки мимо компонентов кита" }
|
|
1131
|
+
};
|
|
1132
|
+
function qa(t) {
|
|
1133
|
+
const e = ka();
|
|
1134
|
+
if (t === "reduce" && et(t)) {
|
|
1135
|
+
const { blocks: r, disabled: o, blocked: a } = e.reduce;
|
|
1136
|
+
return [
|
|
1137
|
+
`Правил reduce: ${r}`,
|
|
1138
|
+
o ? `выключено no-preference: ${o}` : "",
|
|
1139
|
+
a ? `не прочитано таблиц стилей: ${a} (чужой домен без CORS)` : ""
|
|
1140
|
+
].filter(Boolean).join(" · ");
|
|
1141
|
+
}
|
|
1142
|
+
if (t === "highlight" && et(t)) {
|
|
1143
|
+
const { total: r, byType: o } = e.highlight;
|
|
1144
|
+
if (!r) return "На странице всё из кита";
|
|
1145
|
+
const a = Object.entries(o).sort((n, i) => i[1] - n[1]).map(([n, i]) => `${n} ${i}`).join(" · ");
|
|
1146
|
+
return `Не из кита: ${r} — ${a}. Нажмите на метку — путь в консоли`;
|
|
1147
|
+
}
|
|
1148
|
+
return ne[t].hint;
|
|
1149
|
+
}
|
|
1150
|
+
function Ia() {
|
|
1151
|
+
return `<div class="group"><div class="group-title h5">Вид</div>${tt.map((t) => sr(ne[t].label, `data-view="${t}" ${et(t) ? "checked" : ""}`, qa(t))).join("")}</div>`;
|
|
1152
|
+
}
|
|
1153
|
+
const Pa = { pointer: "мышь", keyboard: "клавиатура" };
|
|
1154
|
+
function Na(t) {
|
|
1155
|
+
var u, p, l;
|
|
1156
|
+
const e = document.documentElement, r = getComputedStyle(e).getPropertyValue("--u-unit").trim(), o = t.kit ?? Xr();
|
|
1157
|
+
let a = "—";
|
|
559
1158
|
try {
|
|
560
|
-
const
|
|
561
|
-
|
|
1159
|
+
const h = (p = (u = t.config).user) == null ? void 0 : p.call(u);
|
|
1160
|
+
h && (a = [h.name, (l = h.roles) != null && l.length ? h.roles.join(", ") : "без ролей"].filter(Boolean).join(" · "));
|
|
562
1161
|
} catch {
|
|
563
|
-
|
|
1162
|
+
a = "не удалось прочитать";
|
|
564
1163
|
}
|
|
565
|
-
const
|
|
566
|
-
|
|
567
|
-
["
|
|
568
|
-
["Шкала", `${e.getAttribute("data-u-responsive") ?? "legacy"}${n ? ` · --u-unit ${n}` : ""}`],
|
|
1164
|
+
const n = gr(t), i = [
|
|
1165
|
+
["Ширина", `${window.innerWidth} px · ${Oa()}`],
|
|
1166
|
+
["Шкала", `${e.getAttribute("data-u-responsive") ?? "legacy"}${r ? ` · --u-unit ${r}` : ""}`],
|
|
569
1167
|
["Кит", o ? `${o.name} ${o.version}` : "—"],
|
|
570
1168
|
["Сервис", [t.config.service, t.config.version].filter(Boolean).join(" ")],
|
|
571
1169
|
["API", t.config.apiBase ?? "все запросы"],
|
|
572
1170
|
["Оболочка ЛК", window.__POWERED_BY_QIANKUN__ ? "да (Qiankun)" : "нет"],
|
|
573
|
-
["Ввод", e.getAttribute("data-input-mode") ?? "—"],
|
|
1171
|
+
["Ввод", Pa[e.getAttribute("data-input-mode") ?? ""] ?? "—"],
|
|
574
1172
|
["Сеть", navigator.onLine ? "онлайн" : "офлайн"],
|
|
575
|
-
["Пользователь",
|
|
576
|
-
["Включено",
|
|
577
|
-
]
|
|
1173
|
+
["Пользователь", a],
|
|
1174
|
+
["Включено", n.length ? n.join("; ") : "ничего"]
|
|
1175
|
+
];
|
|
1176
|
+
return `${Ia()}<div class="group"><div class="group-title h5">Окружение</div>
|
|
1177
|
+
<dl>${i.map(([h, g]) => `<dt>${c(h)}</dt><dd>${c(g)}</dd>`).join("")}</dl></div>`;
|
|
1178
|
+
}
|
|
1179
|
+
function Xt(t, e, r) {
|
|
1180
|
+
return !t || typeof t.animate != "function" || zo() ? null : t.animate(e, r);
|
|
1181
|
+
}
|
|
1182
|
+
function Ce(t) {
|
|
1183
|
+
Xt(t, [{ opacity: 0, transform: `translateY(${_o}px)` }, { opacity: 1, transform: "none" }], { duration: xt.base, easing: jt.enter });
|
|
578
1184
|
}
|
|
579
1185
|
function v() {
|
|
580
|
-
|
|
581
|
-
|
|
1186
|
+
var ue;
|
|
1187
|
+
if (!s) return;
|
|
1188
|
+
const t = it();
|
|
582
1189
|
if (!t) {
|
|
583
|
-
|
|
1190
|
+
s.innerHTML = "", S = "", dt = "";
|
|
584
1191
|
return;
|
|
585
1192
|
}
|
|
586
|
-
const e =
|
|
587
|
-
<section class="panel${
|
|
588
|
-
<div class="head"><span class="title">${
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
<
|
|
592
|
-
<div class="tabs"
|
|
593
|
-
|
|
594
|
-
|
|
595
|
-
|
|
596
|
-
|
|
597
|
-
|
|
598
|
-
<div class="body">${
|
|
599
|
-
${
|
|
1193
|
+
const e = y().flatMap(gr), r = e.length, o = r ? `Dev · ${r === 1 ? e[0] : `${r} ${Ba(r, "сбой", "сбоя", "сбоев")}`}` : "Dev", a = y(), n = a.every((m) => no(m) === "hidden"), i = !n || r > 0, u = a.length > 1 ? Vt("service", "Сервис", a.map((m) => ({ value: m.config.service, label: `Dev · ${m.config.service}` })), t.config.service, "data-service") : `Dev · ${c(t.config.service)}`, p = Pe().length, l = a.some((m) => m.state.faults.length || m.state.rules.some((_r) => _r.enabled)), h = d.open ? `
|
|
1194
|
+
<section class="panel u-react-size-dense${i ? "" : " alone"}" role="region" aria-label="Панель разработки">
|
|
1195
|
+
<div class="head"><span class="title">${u}</span>
|
|
1196
|
+
${F("Сбросить всё", "text-danger", "data-reset")}
|
|
1197
|
+
${lr("icon-cross", "Свернуть панель", "data-close")}</div>
|
|
1198
|
+
<p class="intro h5">Ломает сервис нарочно: ответы API, сеть, падения — чтобы проверить, что видит пользователь. Есть только при локальном запуске.</p>
|
|
1199
|
+
<div class="tabs">${Aa([
|
|
1200
|
+
{ id: "faults", title: `Сбои${bt(t) ? ` · ${bt(t)}` : ""}` },
|
|
1201
|
+
{ id: "requests", title: "Запросы" },
|
|
1202
|
+
{ id: "errors", title: `Ошибки${p ? ` · ${p}` : ""}` },
|
|
1203
|
+
{ id: "view", title: "Среда" }
|
|
1204
|
+
], d.tab)}</div>
|
|
1205
|
+
<div class="body">${d.tab === "faults" ? Ra(t) : d.tab === "requests" ? wr(t) : d.tab === "errors" ? Ka() : Na(t)}</div>
|
|
1206
|
+
${d.hint ? `<div class="note u-message-small" role="status">${c(d.hint)}</div>` : ""}
|
|
600
1207
|
<div class="foot">
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
1208
|
+
<div class="actions">
|
|
1209
|
+
${l ? F("Ссылка на сбои", "primary", "data-share") : ""}
|
|
1210
|
+
${t.config.onRefetch ? F("Перезапросить данные", "outline", "data-refetch") : ""}
|
|
1211
|
+
${F("Перезагрузить", "outline", "data-reload")}
|
|
1212
|
+
${F(n ? "Показывать кнопку" : "Скрыть кнопку", "outline", `data-launcher="${n ? "visible" : "hidden"}"`)}
|
|
1213
|
+
</div>
|
|
1214
|
+
${l ? '<p class="caption h5">Ссылка открывает страницу с теми же сбоями — приложите её к задаче или отправьте тестировщику.</p>' : ""}
|
|
1215
|
+
<p class="escape h5">Без панели: адрес с ?dev=off · открыть и закрыть: Ctrl+Alt+D</p>
|
|
605
1216
|
</div>
|
|
606
|
-
</section>` : "",
|
|
607
|
-
|
|
608
|
-
const
|
|
1217
|
+
</section>` : "", g = s.activeElement, Dt = mr(g), Z = (g == null ? void 0 : g.dataset.search) !== void 0 ? g.selectionStart : null, Ar = Ct ?? Ja();
|
|
1218
|
+
Ct = null;
|
|
1219
|
+
const $r = [
|
|
609
1220
|
e.length ? `Включено: ${e.join(", ")}` : "Панель разработки (Ctrl+Alt+D)",
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
1221
|
+
n ? "Кнопка скрыта и видна, пока включены сбои" : "",
|
|
1222
|
+
// Режимы «Вид» переживают перезагрузку — напоминание, чтобы медленные анимации не приняли за дефект.
|
|
1223
|
+
tt.some(et) ? `Вид: ${tt.filter(et).map((m) => ne[m].label).join(", ")}` : ""
|
|
1224
|
+
].filter(Boolean).join(". "), Sr = i ? `
|
|
1225
|
+
<button class="pill${r ? " on" : ""}" type="button" data-toggle aria-expanded="${d.open}"
|
|
1226
|
+
title="${c($r)}"><span class="logo">${Da}</span><span class="label">${c(o)}</span></button>` : "", Lr = d.hint && !d.open ? `<div class="hint" role="status">${c(d.hint)}</div>` : "", ut = d.open ? `${t.config.service}:${d.tab}` : "", ie = ut && ut === S ? ((ue = s.querySelector(".body")) == null ? void 0 : ue.scrollTop) ?? 0 : 0, Tt = d.hint ? `${d.open}:${d.hint}` : "";
|
|
1227
|
+
s.innerHTML = `<style>${Et.css}${La}</style><div class="root">${h}${Sr}${Lr}</div>`;
|
|
1228
|
+
const st = s.querySelector(".body");
|
|
1229
|
+
if (st && ie ? st.scrollTop = ie : st && S && ut !== S && Ce(st), Tt && Tt !== dt && Ce(s.querySelector(".note, .hint")), S = ut, dt = Tt, Ya(Ar), dr(s), _t(), Dt) {
|
|
1230
|
+
const m = s.querySelector(Dt);
|
|
1231
|
+
m == null || m.focus({ preventScroll: !0 }), m instanceof HTMLInputElement && Z !== null && m.setSelectionRange(Z, Z);
|
|
617
1232
|
}
|
|
618
1233
|
}
|
|
619
|
-
const
|
|
620
|
-
function
|
|
1234
|
+
const ja = ["search", "select", "fault", "rule", "tab", "reset", "close", "toggle", "ruleFrom", "clearJournal", "view"];
|
|
1235
|
+
function mr(t) {
|
|
621
1236
|
if (!t) return null;
|
|
622
1237
|
const e = t.getAttribute("name");
|
|
623
1238
|
if (e && t.closest("[data-add]")) return `[data-add] [name="${e}"]`;
|
|
624
|
-
const
|
|
625
|
-
if (!
|
|
626
|
-
const o = t.dataset[
|
|
627
|
-
return o ? `[${
|
|
628
|
-
}
|
|
629
|
-
const
|
|
630
|
-
let
|
|
631
|
-
const
|
|
632
|
-
function
|
|
633
|
-
const e =
|
|
634
|
-
return e.length ? `<div class="
|
|
635
|
-
|
|
636
|
-
<div class="requests">${e.map((
|
|
637
|
-
const o = typeof
|
|
638
|
-
return `<div class="req"><span>${
|
|
639
|
-
<span class="path">${
|
|
640
|
-
<span class="status
|
|
641
|
-
|
|
642
|
-
}).join("")}</div>` : '<
|
|
643
|
-
}
|
|
644
|
-
const
|
|
1239
|
+
const r = ja.find((n) => t.dataset[n] !== void 0);
|
|
1240
|
+
if (!r) return null;
|
|
1241
|
+
const o = t.dataset[r], a = `data-${r.replace(/[A-Z]/g, (n) => `-${n.toLowerCase()}`)}`;
|
|
1242
|
+
return o ? `[${a}="${o.replace(/["\\]/g, "\\$&")}"]` : `[${a}]`;
|
|
1243
|
+
}
|
|
1244
|
+
const xr = ["method", "path", "status", "body", "delay"];
|
|
1245
|
+
let Ct = null;
|
|
1246
|
+
const Ua = { network: "сеть", abort: "отмена", pending: "…" };
|
|
1247
|
+
function wr(t) {
|
|
1248
|
+
const e = Qt().filter((r) => r.service === t.config.service);
|
|
1249
|
+
return e.length ? `<div class="list-head h5"><span>Последние ${e.length}, новые сверху</span>${F("Очистить", "text", "data-clear-journal")}</div>
|
|
1250
|
+
<p class="caption h5">«Правило» — подменить ответ на этот адрес: форма в «Ответах сервера» откроется с методом и путём.</p>
|
|
1251
|
+
<div class="requests">${e.map((r) => {
|
|
1252
|
+
const o = typeof r.status == "number" ? String(r.status) : Ua[r.status], a = r.status === "network" || typeof r.status == "number" && r.status >= 400, n = [r.duration === null ? "" : `${r.duration} мс`, r.faked ? "подменён панелью" : ""].filter(Boolean).join(" · ");
|
|
1253
|
+
return `<div class="req"><span>${c(r.method)}</span>
|
|
1254
|
+
<span class="path"><span class="p" title="${c(r.path)}">${c(r.path).replace(/\//g, "/<wbr>")}</span>${n ? `<small>${c(n)}</small>` : ""}</span>
|
|
1255
|
+
<span class="status u-status u-status-${a ? "danger bad" : r.status === "pending" ? "neutral" : "success"}">${c(o)}</span>
|
|
1256
|
+
${F("Правило", "text", `data-rule-from="${r.id}" title="Ответ на этот адрес — в «Ответах сервера»"`)}</div>`;
|
|
1257
|
+
}).join("")}</div>` : '<p class="empty tt">Запросов к API пока не было. Откройте экран сервиса или нажмите «Перезапросить данные» — запросы появятся здесь. Журнал помнит последние 50 и очищается при перезагрузке.</p>';
|
|
1258
|
+
}
|
|
1259
|
+
const Ha = {
|
|
645
1260
|
screen: "Заглушка",
|
|
646
1261
|
fail: "Уведомление об ошибке",
|
|
647
1262
|
warning: "Предупреждение",
|
|
648
1263
|
offline: "Нет связи"
|
|
649
|
-
},
|
|
650
|
-
function
|
|
651
|
-
const t =
|
|
652
|
-
return t.length ? `<div class="
|
|
653
|
-
<button class="btn" type="button" data-clear-shown>Очистить</button></div>
|
|
1264
|
+
}, Za = (t) => Ha[t.kind === "notification" ? t.variant ?? "fail" : t.kind];
|
|
1265
|
+
function Ka() {
|
|
1266
|
+
const t = Pe();
|
|
1267
|
+
return t.length ? `<div class="list-head h5"><span>Последние ${t.length}, новые сверху</span>${F("Очистить", "text", "data-clear-shown")}</div>
|
|
654
1268
|
<div>${t.map((e) => `<div class="shown">
|
|
655
|
-
<div class="shown-head"><span class="kind${e.variant === "warning" ? " warning" : ""}">${
|
|
656
|
-
<time>${
|
|
657
|
-
<div class="shown-title">${
|
|
658
|
-
${e.text ? `<small>${
|
|
659
|
-
<div class="cause">${e.cause ? `← ${
|
|
660
|
-
</div>`).join("")}</div>` : '<
|
|
661
|
-
}
|
|
662
|
-
function
|
|
1269
|
+
<div class="shown-head"><span class="kind${e.variant === "warning" ? " warning" : ""}">${c(Za(e))}${e.code ? ` · ${c(e.code)}` : ""}</span>
|
|
1270
|
+
<time>${c(new Date(e.at).toLocaleTimeString("ru-RU"))}</time></div>
|
|
1271
|
+
<div class="shown-title">${c(e.title)}</div>
|
|
1272
|
+
${e.text ? `<small>${c(e.text)}</small>` : ""}
|
|
1273
|
+
<div class="cause">${e.cause ? `← ${c(e.cause)}` : "<small>Неудачных запросов к API перед показом не было</small>"}</div>
|
|
1274
|
+
</div>`).join("")}</div>` : '<p class="empty tt">Ошибок пользователю пока не показывали. Включите сбой на вкладке «Сбои» и повторите действие — здесь появится, что увидел пользователь (заглушка, уведомление, «Нет связи»), и какой запрос к API к этому привёл.</p>';
|
|
1275
|
+
}
|
|
1276
|
+
function Va(t) {
|
|
663
1277
|
var o;
|
|
664
|
-
const e =
|
|
1278
|
+
const e = Qt().find((a) => String(a.id) === String(t));
|
|
665
1279
|
if (!e) return;
|
|
666
|
-
|
|
667
|
-
}
|
|
668
|
-
function
|
|
669
|
-
const t = [...new Set(
|
|
670
|
-
e.searchParams.set("dev",
|
|
671
|
-
const
|
|
672
|
-
|
|
673
|
-
},
|
|
674
|
-
C(
|
|
1280
|
+
Ct = { method: Jt.some(([a]) => a === e.method) ? e.method : "", path: e.path, status: "503", body: "", delay: "" }, d.tab = "faults", d.search = "", v(), (o = s == null ? void 0 : s.querySelector('[data-add] [data-select="status"]')) == null || o.focus();
|
|
1281
|
+
}
|
|
1282
|
+
function Wa() {
|
|
1283
|
+
const t = y(), e = [...new Set(t.flatMap((h) => h.state.faults))], r = t.flatMap((h) => h.state.rules.filter((g) => g.enabled).map(({ id: g, enabled: Dt, ...Z }) => ({ service: h.config.service, rule: Z }))), o = new URL(window.location.href);
|
|
1284
|
+
e.length ? o.searchParams.set("dev", e.join(",")) : o.searchParams.delete("dev");
|
|
1285
|
+
const { value: a, droppedBodies: n } = Ur(r);
|
|
1286
|
+
r.length ? o.searchParams.set(ft, a) : o.searchParams.delete(ft);
|
|
1287
|
+
const i = o.href.replace(/%2C/gi, ","), u = n ? ` Тело ответа длиннее ${ze} символов в ссылку не вошло (${n}) — у получателя такое правило отдаст ответ без тела.` : "", p = () => {
|
|
1288
|
+
C(`Ссылка скопирована.${u}`), v();
|
|
1289
|
+
}, l = () => {
|
|
1290
|
+
C(`Ссылка: ${i}${u}`), v();
|
|
675
1291
|
};
|
|
676
1292
|
try {
|
|
677
|
-
navigator.clipboard.writeText(
|
|
1293
|
+
navigator.clipboard.writeText(i).then(p, l);
|
|
678
1294
|
} catch {
|
|
679
|
-
|
|
1295
|
+
l();
|
|
680
1296
|
}
|
|
681
1297
|
}
|
|
682
|
-
function
|
|
683
|
-
const t =
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
1298
|
+
function _t() {
|
|
1299
|
+
const t = s == null ? void 0 : s.querySelector("[data-add]");
|
|
1300
|
+
if (!t) return;
|
|
1301
|
+
const e = t.elements.namedItem("body"), r = t.elements.namedItem("status"), o = t.querySelector("[data-body-hint]");
|
|
1302
|
+
if (!e) return;
|
|
1303
|
+
const a = Number(r == null ? void 0 : r.value) === 204;
|
|
1304
|
+
e.disabled = a, o && (o.hidden = a || !e.value.trim() || De(e.value));
|
|
1305
|
+
}
|
|
1306
|
+
function Ja() {
|
|
1307
|
+
const t = s == null ? void 0 : s.querySelector("[data-add]");
|
|
1308
|
+
return t ? Object.fromEntries(xr.map((e) => {
|
|
1309
|
+
var r;
|
|
1310
|
+
return [e, ((r = t.elements.namedItem(e)) == null ? void 0 : r.value) ?? ""];
|
|
687
1311
|
})) : null;
|
|
688
1312
|
}
|
|
689
|
-
function
|
|
690
|
-
const e =
|
|
691
|
-
!e || !t ||
|
|
692
|
-
const o = e.elements.namedItem(
|
|
693
|
-
o && (o.value = t[
|
|
1313
|
+
function Ya(t) {
|
|
1314
|
+
const e = s == null ? void 0 : s.querySelector("[data-add]");
|
|
1315
|
+
!e || !t || xr.forEach((r) => {
|
|
1316
|
+
const o = e.elements.namedItem(r);
|
|
1317
|
+
o && (o.value = t[r] ?? "");
|
|
694
1318
|
});
|
|
695
1319
|
}
|
|
696
|
-
function
|
|
1320
|
+
function Xa(t) {
|
|
697
1321
|
if (!t) {
|
|
698
|
-
C(""),
|
|
1322
|
+
C(""), ce("visible");
|
|
699
1323
|
return;
|
|
700
1324
|
}
|
|
701
|
-
|
|
702
|
-
const e =
|
|
703
|
-
C(`Кнопка Dev скрыта${e ? " и видна, пока включены сбои" : ""}. Панель: Ctrl+Alt+D`),
|
|
1325
|
+
d.open = !1;
|
|
1326
|
+
const e = y().some((r) => bt(r) > 0);
|
|
1327
|
+
C(`Кнопка Dev скрыта${e ? " и видна, пока включены сбои" : ""}. Панель: Ctrl+Alt+D`), ce("hidden");
|
|
704
1328
|
}
|
|
705
1329
|
function C(t) {
|
|
706
|
-
clearTimeout(
|
|
707
|
-
|
|
708
|
-
},
|
|
709
|
-
}
|
|
710
|
-
function
|
|
711
|
-
var
|
|
712
|
-
|
|
713
|
-
|
|
714
|
-
|
|
715
|
-
|
|
716
|
-
|
|
717
|
-
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
1330
|
+
clearTimeout(Yt), d.hint = t, t && (Yt = setTimeout(() => {
|
|
1331
|
+
d.hint = "", v();
|
|
1332
|
+
}, Ta));
|
|
1333
|
+
}
|
|
1334
|
+
function Ft(t = !d.open || w !== null) {
|
|
1335
|
+
var o, a;
|
|
1336
|
+
if (w == null || w.cancel(), w = null, t) {
|
|
1337
|
+
C("");
|
|
1338
|
+
const n = !d.open;
|
|
1339
|
+
d.open = !0, v(), n && Xt(s == null ? void 0 : s.querySelector(".panel"), [{ opacity: 0, transform: "translateY(8px)" }, { opacity: 1, transform: "none" }], { duration: xt.base, easing: jt.enter }), (o = s == null ? void 0 : s.querySelector("[data-search], [data-tab]")) == null || o.focus();
|
|
1340
|
+
return;
|
|
1341
|
+
}
|
|
1342
|
+
C("");
|
|
1343
|
+
const e = () => {
|
|
1344
|
+
w = null, d.open = !1, v();
|
|
1345
|
+
};
|
|
1346
|
+
(a = s == null ? void 0 : s.querySelector("[data-toggle]")) == null || a.focus();
|
|
1347
|
+
const r = d.open ? Xt(s == null ? void 0 : s.querySelector(".panel"), [{ opacity: 1, transform: "none" }, { opacity: 0, transform: "translateY(8px)" }], { duration: xt.fast, easing: jt.exit, fill: "forwards" }) : null;
|
|
1348
|
+
if (!r) {
|
|
1349
|
+
e();
|
|
1350
|
+
return;
|
|
1351
|
+
}
|
|
1352
|
+
w = r, r.onfinish = e;
|
|
1353
|
+
}
|
|
1354
|
+
function Ga(t) {
|
|
1355
|
+
var i, u, p;
|
|
1356
|
+
const e = t.target, r = it();
|
|
1357
|
+
if (!r || !s) return;
|
|
1358
|
+
const o = e.closest(".u-selectbox-option"), a = e.closest("[data-select]");
|
|
1359
|
+
if (o) {
|
|
1360
|
+
hr(o);
|
|
1361
|
+
return;
|
|
1362
|
+
}
|
|
1363
|
+
const n = Wt(s);
|
|
1364
|
+
if (n && n !== a && z(n, !1), a) z(a, n !== a);
|
|
1365
|
+
else if (e.closest("[data-step]")) Fa(e.closest("[data-step]"));
|
|
1366
|
+
else if (e.closest("[data-search-clear]"))
|
|
1367
|
+
d.search = "", v(), (i = s.querySelector("[data-search]")) == null || i.focus();
|
|
1368
|
+
else if (e.closest("[data-toggle]")) Ft();
|
|
1369
|
+
else if (e.closest("[data-close]")) Ft(!1);
|
|
1370
|
+
else if (e.closest("[data-reset]")) Qa();
|
|
1371
|
+
else if (e.closest("[data-reload]")) window.location.reload();
|
|
1372
|
+
else if (e.closest("[data-rule-from]")) Va(Number(e.closest("[data-rule-from]").dataset.ruleFrom));
|
|
1373
|
+
else if (e.closest("[data-clear-journal]"))
|
|
1374
|
+
Se(), v();
|
|
1375
|
+
else if (e.closest("[data-clear-shown]")) Ne();
|
|
1376
|
+
else if (e.closest("[data-share]")) Wa();
|
|
1377
|
+
else if (e.closest("[data-launcher]")) Xa(e.closest("[data-launcher]").dataset.launcher === "hidden");
|
|
1378
|
+
else if (e.closest("[data-refetch]")) (p = (u = r.config).onRefetch) == null || p.call(u);
|
|
1379
|
+
else if (e.closest("[data-tab]")) {
|
|
1380
|
+
const l = e.closest("[data-tab]").dataset.tab;
|
|
1381
|
+
d.tab = l === "view" || l === "requests" || l === "errors" ? l : "faults", v();
|
|
1382
|
+
} else e.closest("[data-remove]") && oo(r, e.closest("[data-remove]").dataset.remove);
|
|
1383
|
+
}
|
|
1384
|
+
function Qa() {
|
|
1385
|
+
var e;
|
|
1386
|
+
tt.forEach((r) => ur(r, !1));
|
|
1387
|
+
const t = s == null ? void 0 : s.querySelector("[data-add]");
|
|
1388
|
+
t == null || t.reset(), t && pr(t), Ct = null, C(""), Object.assign(d, ae, { open: !0 }), S = "", io(), Je(), v(), (e = s == null ? void 0 : s.querySelector("[data-search], [data-tab]")) == null || e.focus(), tn();
|
|
1389
|
+
}
|
|
1390
|
+
function tn() {
|
|
1391
|
+
y().forEach((t) => {
|
|
1392
|
+
var e, r;
|
|
1393
|
+
try {
|
|
1394
|
+
(r = (e = t.config).onRefetch) == null || r.call(e);
|
|
1395
|
+
} catch {
|
|
1396
|
+
}
|
|
1397
|
+
});
|
|
1398
|
+
}
|
|
1399
|
+
function en(t) {
|
|
1400
|
+
const e = t.target, r = it();
|
|
1401
|
+
if (r)
|
|
738
1402
|
if (e.dataset.fault) {
|
|
739
1403
|
const o = e.checked;
|
|
740
|
-
|
|
741
|
-
} else
|
|
1404
|
+
C(o ? Gt(r, e.dataset.fault) : ""), to(r, e.dataset.fault, o), e.dataset.fault === "offline" && te(!o);
|
|
1405
|
+
} else if (e.dataset.view)
|
|
1406
|
+
ur(e.dataset.view, e.checked), v();
|
|
1407
|
+
else if (e.dataset.rule) {
|
|
1408
|
+
const o = e.checked;
|
|
1409
|
+
C(o ? Gt(r, "rule") : ""), ro(r, e.dataset.rule, o);
|
|
1410
|
+
} else e.dataset.service !== void 0 ? (d.service = e.value, v()) : e.getAttribute("name") === "status" && e.closest("[data-add]") && _t();
|
|
1411
|
+
}
|
|
1412
|
+
function Gt(t, e) {
|
|
1413
|
+
return e === "offline" ? "" : e in br ? "Сбой включён. Если экран не изменился — нажмите «Перезагрузить»." : t.config.onRefetch ? "Сбой включён — сработает на следующем запросе к API: нажмите «Перезапросить данные» или повторите действие на странице." : "Сбой включён — сработает на следующем запросе к API: повторите действие на странице или нажмите «Перезагрузить».";
|
|
742
1414
|
}
|
|
743
|
-
function
|
|
1415
|
+
function rn(t) {
|
|
744
1416
|
const e = t.target;
|
|
745
|
-
e.
|
|
1417
|
+
if (e.getAttribute("name") === "body" && e.closest("[data-add]")) {
|
|
1418
|
+
_t();
|
|
1419
|
+
return;
|
|
1420
|
+
}
|
|
1421
|
+
e.dataset.search !== void 0 && (d.search = e.value, v());
|
|
746
1422
|
}
|
|
747
|
-
function
|
|
1423
|
+
function on(t) {
|
|
748
1424
|
const e = t.target;
|
|
749
1425
|
if (e.dataset.add === void 0) return;
|
|
750
1426
|
t.preventDefault();
|
|
751
|
-
const
|
|
752
|
-
|
|
1427
|
+
const r = it(), o = new FormData(e), a = String(o.get("path") ?? "").trim();
|
|
1428
|
+
if (!r || !a) return;
|
|
1429
|
+
const n = Number(o.get("status")) || 500, i = String(o.get("body") ?? ""), u = Te(Number(o.get("delay")));
|
|
1430
|
+
e.reset(), pr(e), _t(), C(Gt(r, "rule")), eo(r, {
|
|
753
1431
|
method: String(o.get("method") ?? "") || void 0,
|
|
754
|
-
path:
|
|
755
|
-
status:
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
}
|
|
759
|
-
|
|
760
|
-
t.ctrlKey && t.altKey && t.code === "KeyD" ? (t.preventDefault(), U()) : t.key === "Escape" && l.open && h && t.composedPath().includes(h) && (t.preventDefault(), t.stopPropagation(), U(!1));
|
|
761
|
-
}
|
|
762
|
-
function Ge() {
|
|
763
|
-
if (h || typeof document > "u") return;
|
|
764
|
-
h = document.createElement("div"), h.id = "urfu-ui-kit-dev", h.setAttribute("data-urfu-ui-kit-dev", ""), c = h.attachShadow({ mode: "open" }), c.addEventListener("click", Je), c.addEventListener("change", Xe), c.addEventListener("input", Ve), c.addEventListener("submit", Ze), b = document.defaultView ?? window, b.addEventListener("keydown", Dt, !0), dt(), k = new MutationObserver((o) => {
|
|
765
|
-
(!(h != null && h.isConnected) || o.some((r) => r.type === "attributes")) && dt();
|
|
766
|
-
}), k.observe(document.documentElement, { childList: !0, subtree: !0, attributes: !0, attributeFilter: ["open"] }), l.open = m().some((o) => z(o) > 0);
|
|
767
|
-
const t = gt(v), e = Nt(Pt);
|
|
768
|
-
c.addEventListener("pointerdown", Qe), b.addEventListener("pointerup", N, !0), b.addEventListener("pointercancel", N, !0);
|
|
769
|
-
const n = pe(() => {
|
|
770
|
-
l.open && v();
|
|
1432
|
+
path: a.startsWith("/") ? a : `/${a}`,
|
|
1433
|
+
status: n,
|
|
1434
|
+
// У 204 тела нет; пустое поле — ответ по умолчанию (JSON с кодом, у 502 — HTML шлюза).
|
|
1435
|
+
...n !== 204 && i.trim() ? { body: i } : {},
|
|
1436
|
+
...n === 502 && !i.trim() ? { html: !0 } : {},
|
|
1437
|
+
...u ? { delay: u } : {}
|
|
771
1438
|
});
|
|
772
|
-
|
|
773
|
-
|
|
1439
|
+
}
|
|
1440
|
+
function yr(t) {
|
|
1441
|
+
if (t.ctrlKey && t.altKey && t.code === "KeyD")
|
|
1442
|
+
t.preventDefault(), Ft();
|
|
1443
|
+
else if (t.key === "Escape" && s && f && t.composedPath().includes(f) && Wt(s)) {
|
|
1444
|
+
const e = Wt(s);
|
|
1445
|
+
t.preventDefault(), t.stopPropagation(), z(e, !1), e.focus();
|
|
1446
|
+
} else t.key === "Escape" && d.open && f && t.composedPath().includes(f) && (t.preventDefault(), t.stopPropagation(), Ft(!1));
|
|
1447
|
+
}
|
|
1448
|
+
function an() {
|
|
1449
|
+
if (f || typeof document > "u") return;
|
|
1450
|
+
f = document.createElement("div"), f.id = "urfu-ui-kit-dev", f.setAttribute("data-urfu-ui-kit-dev", ""), s = f.attachShadow({ mode: "open" }), s.addEventListener("click", Ga), s.addEventListener("change", en), s.addEventListener("input", rn), s.addEventListener("submit", on), s.addEventListener("keydown", nn), b = document.defaultView ?? window, b.addEventListener("keydown", yr, !0), b.addEventListener("pointerdown", kr, !0), $e(), Fe(), O = new MutationObserver((o) => {
|
|
1451
|
+
(!(f != null && f.isConnected) || o.some((a) => a.type === "attributes")) && $e(), o.some((a) => a.target === document.documentElement && Et.hostAttrs.includes(a.attributeName ?? "")) && Fe();
|
|
1452
|
+
}), O.observe(document.documentElement, { childList: !0, subtree: !0, attributes: !0, attributeFilter: ["open", ...Et.hostAttrs] }), Ae(), q = new MutationObserver(Ae), q.observe(document.documentElement, { attributes: !0, attributeFilter: ["style"] }), d.open = y().some((o) => bt(o) > 0);
|
|
1453
|
+
const t = Ie(v), e = Ir(Er);
|
|
1454
|
+
s.addEventListener("pointerdown", ln), b.addEventListener("pointerup", At, !0), b.addEventListener("pointercancel", At, !0);
|
|
1455
|
+
const r = vo(() => {
|
|
1456
|
+
d.open && v();
|
|
1457
|
+
});
|
|
1458
|
+
ho(), wa(() => {
|
|
1459
|
+
d.open && d.tab === "view" && v();
|
|
1460
|
+
}), V = () => {
|
|
1461
|
+
t(), e(), r(), bo();
|
|
774
1462
|
}, v();
|
|
775
1463
|
}
|
|
776
|
-
function
|
|
1464
|
+
function nn(t) {
|
|
1465
|
+
const e = t.target.closest("[data-select]");
|
|
1466
|
+
e && Sa(t, e);
|
|
1467
|
+
}
|
|
1468
|
+
function kr(t) {
|
|
1469
|
+
s && f && !t.composedPath().includes(f) && $a(s);
|
|
1470
|
+
}
|
|
1471
|
+
function Fe() {
|
|
1472
|
+
Et.hostAttrs.forEach((t) => {
|
|
1473
|
+
const e = document.documentElement.getAttribute(t);
|
|
1474
|
+
e === null ? f == null || f.removeAttribute(t) : f == null || f.setAttribute(t, e);
|
|
1475
|
+
});
|
|
1476
|
+
}
|
|
1477
|
+
const un = ["--u-unit", "--u-responsive-scale"];
|
|
1478
|
+
function Ae() {
|
|
1479
|
+
un.forEach((t) => {
|
|
1480
|
+
const e = document.documentElement.style.getPropertyValue(t);
|
|
1481
|
+
e ? f == null || f.style.setProperty(t, e) : f == null || f.style.removeProperty(t);
|
|
1482
|
+
});
|
|
1483
|
+
}
|
|
1484
|
+
function sn() {
|
|
777
1485
|
try {
|
|
778
1486
|
const t = document.querySelectorAll("dialog:modal");
|
|
779
1487
|
return t[t.length - 1] ?? null;
|
|
@@ -781,94 +1489,108 @@ function Ye() {
|
|
|
781
1489
|
return null;
|
|
782
1490
|
}
|
|
783
1491
|
}
|
|
784
|
-
function
|
|
785
|
-
if (!
|
|
786
|
-
const t =
|
|
787
|
-
|
|
1492
|
+
function $e() {
|
|
1493
|
+
if (!f) return;
|
|
1494
|
+
const t = sn() ?? document.documentElement;
|
|
1495
|
+
f.parentNode !== t && t.appendChild(f);
|
|
788
1496
|
}
|
|
789
|
-
function
|
|
790
|
-
var
|
|
791
|
-
if (!
|
|
792
|
-
|
|
1497
|
+
function Er() {
|
|
1498
|
+
var a;
|
|
1499
|
+
if (!d.open || d.tab !== "requests") {
|
|
1500
|
+
Y = !1;
|
|
793
1501
|
return;
|
|
794
1502
|
}
|
|
795
|
-
if (
|
|
796
|
-
|
|
1503
|
+
if (rt) {
|
|
1504
|
+
Y = !0;
|
|
797
1505
|
return;
|
|
798
1506
|
}
|
|
799
|
-
|
|
800
|
-
const t =
|
|
801
|
-
if (!
|
|
1507
|
+
Y = !1;
|
|
1508
|
+
const t = s == null ? void 0 : s.querySelector(".body"), e = it();
|
|
1509
|
+
if (!s || !t || !e) {
|
|
802
1510
|
v();
|
|
803
1511
|
return;
|
|
804
1512
|
}
|
|
805
|
-
const
|
|
806
|
-
t.innerHTML =
|
|
1513
|
+
const r = s.activeElement, o = r && t.contains(r) ? mr(r) : null;
|
|
1514
|
+
t.innerHTML = wr(e), o && ((a = t.querySelector(o)) == null || a.focus({ preventScroll: !0 }));
|
|
807
1515
|
}
|
|
808
|
-
function
|
|
809
|
-
|
|
1516
|
+
function ln() {
|
|
1517
|
+
rt = !0;
|
|
810
1518
|
}
|
|
811
|
-
function
|
|
812
|
-
|
|
1519
|
+
function At() {
|
|
1520
|
+
rt && (rt = !1, Y && setTimeout(Er, 0));
|
|
813
1521
|
}
|
|
814
|
-
function
|
|
815
|
-
|
|
1522
|
+
function cn() {
|
|
1523
|
+
V == null || V(), V = null, ya(), O == null || O.disconnect(), O = null, q == null || q.disconnect(), q = null, b == null || b.removeEventListener("keydown", yr, !0), b == null || b.removeEventListener("pointerdown", kr, !0), b == null || b.removeEventListener("pointerup", At, !0), b == null || b.removeEventListener("pointercancel", At, !0), b = null, rt = !1, Y = !1, w == null || w.cancel(), w = null, S = "", dt = "", clearTimeout(Yt), f == null || f.remove(), f = null, s = null, Object.assign(d, ae);
|
|
816
1524
|
}
|
|
817
|
-
const
|
|
1525
|
+
const Cr = /* @__PURE__ */ Symbol.for("urfu-ui-kit.dev-panel");
|
|
1526
|
+
let T = null;
|
|
1527
|
+
const ot = {
|
|
818
1528
|
version: 1,
|
|
819
|
-
mount(t, e,
|
|
820
|
-
return
|
|
821
|
-
|
|
1529
|
+
mount(t, e, r) {
|
|
1530
|
+
return Kr(), Yr(e), Gr(t, e).state.faults.includes("offline") && te(!1), Fo(r), an(), T ?? (T = Rr()), () => {
|
|
1531
|
+
Qr(t.service), !y().length && (cn(), T == null || T(), T = null);
|
|
822
1532
|
};
|
|
823
1533
|
},
|
|
824
1534
|
isFault: (t, e) => {
|
|
825
|
-
var
|
|
826
|
-
return ((
|
|
1535
|
+
var r;
|
|
1536
|
+
return ((r = le(e)) == null ? void 0 : r.state.faults.includes(t)) ?? !1;
|
|
827
1537
|
},
|
|
828
|
-
subscribe:
|
|
829
|
-
reset:
|
|
830
|
-
|
|
831
|
-
|
|
1538
|
+
subscribe: Ie,
|
|
1539
|
+
reset: Je,
|
|
1540
|
+
diagnostics() {
|
|
1541
|
+
var r, o, a;
|
|
1542
|
+
const t = le();
|
|
1543
|
+
if (!t) return null;
|
|
1544
|
+
let e;
|
|
1545
|
+
try {
|
|
1546
|
+
e = (a = (o = (r = t.config).user) == null ? void 0 : o.call(r)) == null ? void 0 : a.roles;
|
|
1547
|
+
} catch {
|
|
1548
|
+
e = void 0;
|
|
1549
|
+
}
|
|
1550
|
+
return { requests: Br(), roles: e };
|
|
1551
|
+
}
|
|
1552
|
+
}, Fr = () => typeof document > "u" ? null : document.defaultView;
|
|
1553
|
+
function zt() {
|
|
832
1554
|
var e;
|
|
833
|
-
const t = (e =
|
|
1555
|
+
const t = (e = Fr()) == null ? void 0 : e[Cr];
|
|
834
1556
|
return t && typeof t.version == "number" && t.version >= 1 ? t : null;
|
|
835
1557
|
}
|
|
836
|
-
function
|
|
837
|
-
const t =
|
|
1558
|
+
function dn() {
|
|
1559
|
+
const t = zt();
|
|
838
1560
|
if (t) return t;
|
|
839
|
-
const e =
|
|
840
|
-
return e && (e[
|
|
1561
|
+
const e = Fr();
|
|
1562
|
+
return e && (e[Cr] = ot), ot;
|
|
841
1563
|
}
|
|
842
|
-
function
|
|
1564
|
+
function pn(t, e) {
|
|
843
1565
|
return typeof window > "u" ? () => {
|
|
844
|
-
} :
|
|
1566
|
+
} : dn().mount(t, e, window);
|
|
845
1567
|
}
|
|
846
|
-
function
|
|
847
|
-
return (
|
|
1568
|
+
function fn(t, e) {
|
|
1569
|
+
return (zt() ?? ot).isFault(t, e);
|
|
848
1570
|
}
|
|
849
|
-
function
|
|
850
|
-
return (
|
|
1571
|
+
function hn(t) {
|
|
1572
|
+
return (zt() ?? ot).subscribe(t);
|
|
851
1573
|
}
|
|
852
|
-
function
|
|
853
|
-
(
|
|
1574
|
+
function mn() {
|
|
1575
|
+
(zt() ?? ot).reset();
|
|
854
1576
|
}
|
|
855
|
-
const
|
|
856
|
-
function
|
|
857
|
-
return
|
|
1577
|
+
const bn = () => "2.1.7-next.0";
|
|
1578
|
+
function xn(t) {
|
|
1579
|
+
return pn(t, { name: "urfu-ui-kit-react", version: bn() });
|
|
858
1580
|
}
|
|
859
|
-
function
|
|
860
|
-
return
|
|
1581
|
+
function vn(t, e) {
|
|
1582
|
+
return zr(hn, () => fn(t, e), () => !1);
|
|
861
1583
|
}
|
|
862
|
-
function
|
|
863
|
-
if (
|
|
1584
|
+
function wn({ scope: t, service: e }) {
|
|
1585
|
+
if (vn(t === "app" ? "crashApp" : "crashPage", e)) throw new Error(`Сбой из dev-панели: падение ${t === "app" ? "приложения" : "страницы"}`);
|
|
864
1586
|
return null;
|
|
865
1587
|
}
|
|
866
1588
|
export {
|
|
867
|
-
|
|
868
|
-
|
|
869
|
-
|
|
870
|
-
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
1589
|
+
wn as DevCrashProbe,
|
|
1590
|
+
fn as isDevFault,
|
|
1591
|
+
xo as matchPath,
|
|
1592
|
+
xn as mountDevPanel,
|
|
1593
|
+
mn as resetDevFaults,
|
|
1594
|
+
hn as subscribeDevFaults,
|
|
1595
|
+
vn as useDevFault
|
|
874
1596
|
};
|