intelicoreact 2.0.16 → 2.0.17
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/css/accordion.css +1 -1
- package/dist/css/advanced-status.css +1 -1
- package/dist/css/datepicker.css +1 -1
- package/dist/css/dropdown-live-search.css +1 -1
- package/dist/css/dropdown.css +1 -1
- package/dist/css/input-date-range.css +1 -1
- package/dist/css/main-menu.css +1 -1
- package/dist/css/switcher-radio.css +1 -1
- package/dist/css/switcher-range-list.css +1 -1
- package/dist/css/switcher-tags-dropdown.css +1 -1
- package/dist/css/switcher-textarea.css +1 -1
- package/dist/css/table.css +1 -1
- package/dist/css/tags-dropdown.css +1 -1
- package/dist/css/wizard-stepper.css +1 -1
- package/dist/es/_virtual/_rolldown/runtime.js +27 -0
- package/dist/es/charts.js +4 -0
- package/dist/es/classes.js +4 -0
- package/dist/es/form.js +99 -0
- package/dist/es/hooks.js +32 -0
- package/dist/es/icons.js +10 -0
- package/dist/es/icons.js.map +1 -0
- package/dist/es/index.js +71 -0
- package/dist/es/layout.js +3 -0
- package/dist/es/presets.js +6 -0
- package/dist/es/router-ui.js +8 -0
- package/dist/es/sdk.js +1 -0
- package/dist/es/styles/base.css +1 -0
- package/dist/es/types/index.js +2 -0
- package/dist/es/ui.js +42 -0
- package/dist/es/utils.js +6 -0
- package/dist/intelicoreact.css +1 -1
- package/dist/scss/_mixins.scss +2 -2
- package/dist/scss/_vars.scss +1 -1
- package/dist/scss/main.scss +4 -1
- package/package.json +46 -64
- package/charts/package.json +0 -5
- package/classes/package.json +0 -5
- package/dist/charts.cjs +0 -927
- package/dist/charts.cjs.map +0 -7
- package/dist/charts.js +0 -911
- package/dist/charts.js.map +0 -7
- package/dist/classes.cjs +0 -1858
- package/dist/classes.cjs.map +0 -7
- package/dist/classes.js +0 -1836
- package/dist/classes.js.map +0 -7
- package/dist/form.cjs +0 -15167
- package/dist/form.cjs.map +0 -7
- package/dist/form.js +0 -15182
- package/dist/form.js.map +0 -7
- package/dist/hooks.cjs +0 -2330
- package/dist/hooks.cjs.map +0 -7
- package/dist/hooks.js +0 -2298
- package/dist/hooks.js.map +0 -7
- package/dist/icons.cjs +0 -1807
- package/dist/icons.cjs.map +0 -7
- package/dist/icons.js +0 -1785
- package/dist/icons.js.map +0 -7
- package/dist/index.cjs +0 -22917
- package/dist/index.cjs.map +0 -7
- package/dist/index.js +0 -22938
- package/dist/index.js.map +0 -7
- package/dist/layout.cjs +0 -458
- package/dist/layout.cjs.map +0 -7
- package/dist/layout.js +0 -426
- package/dist/layout.js.map +0 -7
- package/dist/presets.cjs +0 -262
- package/dist/presets.cjs.map +0 -7
- package/dist/presets.js +0 -240
- package/dist/presets.js.map +0 -7
- package/dist/router-ui.cjs +0 -989
- package/dist/router-ui.cjs.map +0 -7
- package/dist/router-ui.js +0 -957
- package/dist/router-ui.js.map +0 -7
- package/dist/sdk.cjs +0 -451
- package/dist/sdk.cjs.map +0 -7
- package/dist/sdk.js +0 -429
- package/dist/sdk.js.map +0 -7
- package/dist/types/index.cjs +0 -18
- package/dist/types/index.cjs.map +0 -7
- package/dist/types/index.js +0 -1
- package/dist/types/index.js.map +0 -7
- package/dist/ui.cjs +0 -4090
- package/dist/ui.cjs.map +0 -7
- package/dist/ui.js +0 -4064
- package/dist/ui.js.map +0 -7
- package/dist/utils.cjs +0 -653
- package/dist/utils.cjs.map +0 -7
- package/dist/utils.js +0 -621
- package/dist/utils.js.map +0 -7
- package/form/package.json +0 -5
- package/hooks/package.json +0 -5
- package/icons/package.json +0 -5
- package/layout/package.json +0 -5
- package/presets/package.json +0 -5
- package/router-ui/package.json +0 -5
- package/sdk/package.json +0 -5
- package/types/package.json +0 -5
- package/ui/package.json +0 -5
- package/utils/package.json +0 -5
package/dist/layout.js
DELETED
|
@@ -1,426 +0,0 @@
|
|
|
1
|
-
// src/Atomic/Layout/Header/Header.tsx
|
|
2
|
-
import cn3 from "classnames";
|
|
3
|
-
import { useRef as useRef2, useState as useState2 } from "react";
|
|
4
|
-
import { Bell, ChevronRight, Power } from "react-feather";
|
|
5
|
-
|
|
6
|
-
// src/Atomic/UI/Hint/Hint.tsx
|
|
7
|
-
import cn2 from "classnames";
|
|
8
|
-
import { useEffect as useEffect2, useRef, useState } from "react";
|
|
9
|
-
import { createPortal } from "react-dom";
|
|
10
|
-
import { AlertTriangle, HelpCircle } from "react-feather";
|
|
11
|
-
|
|
12
|
-
// src/Functions/utils.js
|
|
13
|
-
import { useEffect } from "react";
|
|
14
|
-
import moment from "moment-timezone";
|
|
15
|
-
var firstLetterCapital = (str) => typeof str === "string" ? `${str.charAt(0).toUpperCase()}${str.slice(1)}` : str;
|
|
16
|
-
var capitalized = firstLetterCapital;
|
|
17
|
-
String.prototype.longerThan = function(compareWith) {
|
|
18
|
-
return this?.length > compareWith?.length;
|
|
19
|
-
};
|
|
20
|
-
String.prototype.lastIndexEqualsTo = function(index) {
|
|
21
|
-
return this?.length - 1 === index;
|
|
22
|
-
};
|
|
23
|
-
|
|
24
|
-
// src/Molecular/CustomIcons/components/HelpCircleFilled.tsx
|
|
25
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
|
26
|
-
function HelpCircleFilled(props) {
|
|
27
|
-
return /* @__PURE__ */ jsxs(
|
|
28
|
-
"svg",
|
|
29
|
-
{
|
|
30
|
-
xmlns: "http://www.w3.org/2000/svg",
|
|
31
|
-
width: 16,
|
|
32
|
-
height: 16,
|
|
33
|
-
fill: "none",
|
|
34
|
-
...props,
|
|
35
|
-
children: [
|
|
36
|
-
/* @__PURE__ */ jsx(
|
|
37
|
-
"path",
|
|
38
|
-
{
|
|
39
|
-
fill: "#9AA0B9",
|
|
40
|
-
d: "M8 14.667A6.667 6.667 0 1 0 8 1.333a6.667 6.667 0 0 0 0 13.334Z"
|
|
41
|
-
}
|
|
42
|
-
),
|
|
43
|
-
/* @__PURE__ */ jsx(
|
|
44
|
-
"path",
|
|
45
|
-
{
|
|
46
|
-
stroke: "#fff",
|
|
47
|
-
d: "M6.06 6a2 2 0 0 1 3.887.667c0 1.333-2 2-2 2M8 11.333h.006"
|
|
48
|
-
}
|
|
49
|
-
)
|
|
50
|
-
]
|
|
51
|
-
}
|
|
52
|
-
);
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
// src/Atomic/Layout/Spinner/Spinner.tsx
|
|
56
|
-
import cn from "classnames";
|
|
57
|
-
import { jsx as jsx2, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
58
|
-
var CN = "loader-box";
|
|
59
|
-
var Spinner = ({ size = null, className, testId = CN }) => {
|
|
60
|
-
return /* @__PURE__ */ jsx2(
|
|
61
|
-
"div",
|
|
62
|
-
{
|
|
63
|
-
role: "status",
|
|
64
|
-
"aria-live": "polite",
|
|
65
|
-
"aria-busy": "true",
|
|
66
|
-
"data-testid": testId,
|
|
67
|
-
className: cn(
|
|
68
|
-
CN,
|
|
69
|
-
{
|
|
70
|
-
j5: size !== "small",
|
|
71
|
-
j8: size === "small"
|
|
72
|
-
},
|
|
73
|
-
className
|
|
74
|
-
),
|
|
75
|
-
children: /* @__PURE__ */ jsxs2("div", { className: cn("lds-ring", { [`lds-ring_${size}`]: size }), children: [
|
|
76
|
-
/* @__PURE__ */ jsx2("div", {}),
|
|
77
|
-
/* @__PURE__ */ jsx2("div", {}),
|
|
78
|
-
/* @__PURE__ */ jsx2("div", {}),
|
|
79
|
-
/* @__PURE__ */ jsx2("div", {})
|
|
80
|
-
] })
|
|
81
|
-
}
|
|
82
|
-
);
|
|
83
|
-
};
|
|
84
|
-
var Spinner_default = Spinner;
|
|
85
|
-
|
|
86
|
-
// src/Atomic/UI/Hint/partials/_constants.ts
|
|
87
|
-
var I_AM_OPENED_EVENT_NAME = "hint:i-am-open";
|
|
88
|
-
var I_AM_OPENED_EVENT_OPTIONS = {
|
|
89
|
-
bubbles: true,
|
|
90
|
-
cancelable: true,
|
|
91
|
-
composed: false
|
|
92
|
-
};
|
|
93
|
-
|
|
94
|
-
// src/Atomic/UI/Hint/partials/_utils.ts
|
|
95
|
-
var getHintContainerId = (hintId) => `hint-container-for-hint--id-${hintId}`;
|
|
96
|
-
function getHintContainer(hintId) {
|
|
97
|
-
return document.getElementById(getHintContainerId(hintId));
|
|
98
|
-
}
|
|
99
|
-
function getParentNode() {
|
|
100
|
-
return document.querySelector("div#root") ?? document.querySelector("div#app") ?? document.body;
|
|
101
|
-
}
|
|
102
|
-
function initHintContainer(hintId, hintContainerSettings) {
|
|
103
|
-
const { className } = hintContainerSettings;
|
|
104
|
-
const hintContainer = document.createElement("div");
|
|
105
|
-
hintContainer.setAttribute("id", getHintContainerId(hintId));
|
|
106
|
-
hintContainer.classList.add("hint__container");
|
|
107
|
-
if (className) hintContainer.classList.add(className);
|
|
108
|
-
getParentNode()?.append(hintContainer);
|
|
109
|
-
}
|
|
110
|
-
function HandleScrollObj(setIsOpen) {
|
|
111
|
-
this.setIsOpen = setIsOpen;
|
|
112
|
-
this.handleEvent = function() {
|
|
113
|
-
this.setIsOpen(false);
|
|
114
|
-
};
|
|
115
|
-
}
|
|
116
|
-
function HandleClickOutsideObj(id, setIsOpen) {
|
|
117
|
-
this.id = id;
|
|
118
|
-
this.setIsOpen = setIsOpen;
|
|
119
|
-
this.handleEvent = function(event) {
|
|
120
|
-
if (getHintContainer(this.id)) {
|
|
121
|
-
if (!getHintContainer(this.id).contains(event?.target)) {
|
|
122
|
-
this.setIsOpen(false);
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
};
|
|
126
|
-
}
|
|
127
|
-
|
|
128
|
-
// src/Atomic/UI/Hint/Hint.tsx
|
|
129
|
-
import { Fragment, jsx as jsx3, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
130
|
-
var hintTimeoutMap = /* @__PURE__ */ new Map();
|
|
131
|
-
var isContentHoveredOuter = false;
|
|
132
|
-
var DEFAULT_EMPTY_OBJ = {};
|
|
133
|
-
function DEFAULT_VOID_FN() {
|
|
134
|
-
}
|
|
135
|
-
var Hint = ({
|
|
136
|
-
hint,
|
|
137
|
-
side = "right",
|
|
138
|
-
className,
|
|
139
|
-
hintContainer = DEFAULT_EMPTY_OBJ,
|
|
140
|
-
label = "",
|
|
141
|
-
variant = "filled",
|
|
142
|
-
handleOpenType = "click",
|
|
143
|
-
onClickCallback,
|
|
144
|
-
onOpenChange = DEFAULT_VOID_FN,
|
|
145
|
-
key,
|
|
146
|
-
id,
|
|
147
|
-
children,
|
|
148
|
-
icon,
|
|
149
|
-
isAccessability = false,
|
|
150
|
-
testId = "hint",
|
|
151
|
-
isHoverableContent = false,
|
|
152
|
-
isLoading,
|
|
153
|
-
isCloseOnChildrenClick = false
|
|
154
|
-
}) => {
|
|
155
|
-
const hintRef = useRef(null);
|
|
156
|
-
const [hintId] = useState(id ?? key ?? Math.random().toString(16).slice(2));
|
|
157
|
-
const [iAmOpenedOptions] = useState({ ...I_AM_OPENED_EVENT_OPTIONS, detail: { hintId } });
|
|
158
|
-
const [isOpen, setIsOpen] = useState(false);
|
|
159
|
-
const [isStyleComputed, setIsStyleComputed] = useState(false);
|
|
160
|
-
const [handleScroll] = useState(new HandleScrollObj(setIsOpen));
|
|
161
|
-
const [handleClickOutside] = useState(new HandleClickOutsideObj(hintId, setIsOpen));
|
|
162
|
-
const isCallbackExist = typeof onClickCallback === "function";
|
|
163
|
-
const handle = {
|
|
164
|
-
onMouseEnter: () => {
|
|
165
|
-
const existing = hintTimeoutMap.get(hintId);
|
|
166
|
-
if (existing) clearTimeout(existing);
|
|
167
|
-
if (handleOpenType === "hover") {
|
|
168
|
-
const timer = setTimeout(() => {
|
|
169
|
-
setIsOpen(true);
|
|
170
|
-
!isOpen && onClickCallback?.();
|
|
171
|
-
hintRef.current?.dispatchEvent?.(new CustomEvent(I_AM_OPENED_EVENT_NAME, iAmOpenedOptions));
|
|
172
|
-
}, 350);
|
|
173
|
-
hintTimeoutMap.set(hintId, timer);
|
|
174
|
-
}
|
|
175
|
-
},
|
|
176
|
-
onMouseLeave: () => {
|
|
177
|
-
const existing = hintTimeoutMap.get(hintId);
|
|
178
|
-
if (existing) clearTimeout(existing);
|
|
179
|
-
if (!isHoverableContent && handleOpenType === "hover") {
|
|
180
|
-
const timer = setTimeout(() => {
|
|
181
|
-
setIsOpen(false);
|
|
182
|
-
hintTimeoutMap.delete(hintId);
|
|
183
|
-
}, 1e3);
|
|
184
|
-
hintTimeoutMap.set(hintId, timer);
|
|
185
|
-
} else if (isHoverableContent && handleOpenType === "hover") {
|
|
186
|
-
const timer = setTimeout(() => {
|
|
187
|
-
if (!isContentHoveredOuter) {
|
|
188
|
-
setIsOpen(false);
|
|
189
|
-
}
|
|
190
|
-
hintTimeoutMap.delete(hintId);
|
|
191
|
-
}, 100);
|
|
192
|
-
hintTimeoutMap.set(hintId, timer);
|
|
193
|
-
}
|
|
194
|
-
},
|
|
195
|
-
onMouseLeaveHoverableContent: () => {
|
|
196
|
-
const existing = hintTimeoutMap.get(hintId);
|
|
197
|
-
if (existing) clearTimeout(existing);
|
|
198
|
-
if (isHoverableContent && handleOpenType === "hover") {
|
|
199
|
-
const timer = setTimeout(() => {
|
|
200
|
-
setIsOpen(false);
|
|
201
|
-
isContentHoveredOuter = false;
|
|
202
|
-
hintTimeoutMap.delete(hintId);
|
|
203
|
-
}, 100);
|
|
204
|
-
hintTimeoutMap.set(hintId, timer);
|
|
205
|
-
}
|
|
206
|
-
},
|
|
207
|
-
onClick: isCloseOnChildrenClick ? () => setIsOpen(false) : () => {
|
|
208
|
-
}
|
|
209
|
-
};
|
|
210
|
-
const getHintMarkUp = (className2) => {
|
|
211
|
-
return /* @__PURE__ */ jsxs3(
|
|
212
|
-
"div",
|
|
213
|
-
{
|
|
214
|
-
"data-testid": "test-hint-text",
|
|
215
|
-
className: cn2("hint__text", `hint__text_${side}`, `hint--${className2}__text`),
|
|
216
|
-
onMouseEnter: () => {
|
|
217
|
-
if (isHoverableContent) isContentHoveredOuter = true;
|
|
218
|
-
},
|
|
219
|
-
onMouseLeave: isHoverableContent ? handle.onMouseLeaveHoverableContent : void 0,
|
|
220
|
-
onClick: handle.onClick,
|
|
221
|
-
style: { visibility: isStyleComputed ? "visible" : "hidden" },
|
|
222
|
-
children: [
|
|
223
|
-
isLoading && /* @__PURE__ */ jsx3(Spinner_default, { size: "small" }),
|
|
224
|
-
hint,
|
|
225
|
-
children
|
|
226
|
-
]
|
|
227
|
-
}
|
|
228
|
-
);
|
|
229
|
-
};
|
|
230
|
-
const setHintContainerStyles = () => {
|
|
231
|
-
const hc = getHintContainer(hintId);
|
|
232
|
-
if (!hc || !isOpen) return false;
|
|
233
|
-
const { width = 0, top = 0, left = 0 } = hintRef?.current !== null ? hintRef?.current?.getBoundingClientRect() : {};
|
|
234
|
-
const { addWidth, addLeft, addTop } = hintContainer ?? {};
|
|
235
|
-
const windowInnerWidth = document.documentElement.clientWidth;
|
|
236
|
-
const windowInnerHeight = document.documentElement.clientHeight;
|
|
237
|
-
const sw = hc.getElementsByClassName("hint__text")[0];
|
|
238
|
-
const { width: swWidth, height: swHeight } = sw?.getBoundingClientRect() || {};
|
|
239
|
-
hc.style.width = isOpen ? ((addWidth && !Number.isNaN(+addWidth) ? +addWidth : 0) + width)?.toString().concat("px") : "0";
|
|
240
|
-
hc.style.left = isOpen ? ((addLeft && !Number.isNaN(+addLeft) ? +addLeft : 0) + left)?.toString().concat("px") : "0";
|
|
241
|
-
hc.style.top = isOpen ? ((addTop && !Number.isNaN(+addTop) ? +addTop : 0) + top)?.toString().concat("px") : "0";
|
|
242
|
-
hc.style.maxHeight = isOpen ? swHeight?.toString().concat("px") : "0";
|
|
243
|
-
const INACCURACY = 20;
|
|
244
|
-
switch (side) {
|
|
245
|
-
case "top":
|
|
246
|
-
case "centeredTop":
|
|
247
|
-
if (top - swHeight - INACCURACY / 2 < 0) {
|
|
248
|
-
sw.classList.remove(`hint__text_${side}`);
|
|
249
|
-
sw.classList.add(`hint__text_${side === "top" ? "bottom" : "centeredBottom"}`);
|
|
250
|
-
}
|
|
251
|
-
break;
|
|
252
|
-
case "bottom":
|
|
253
|
-
case "centeredBottom":
|
|
254
|
-
if (top + swHeight + INACCURACY > windowInnerHeight) {
|
|
255
|
-
sw.classList.remove(`hint__text_${side}`);
|
|
256
|
-
sw.classList.add(`hint__text_${side === "bottom" ? "top" : "centeredTop"}`);
|
|
257
|
-
}
|
|
258
|
-
break;
|
|
259
|
-
case "left":
|
|
260
|
-
if (left - swWidth - INACCURACY / 2 < 0) {
|
|
261
|
-
sw.classList.remove(`hint__text_${side}`);
|
|
262
|
-
sw.classList.add("hint__text_right");
|
|
263
|
-
}
|
|
264
|
-
break;
|
|
265
|
-
case "right":
|
|
266
|
-
default:
|
|
267
|
-
if (left + width + swWidth + INACCURACY / 2 > windowInnerWidth) {
|
|
268
|
-
sw.classList.remove(`hint__text_${side}`);
|
|
269
|
-
sw.classList.add("hint__text_left");
|
|
270
|
-
}
|
|
271
|
-
break;
|
|
272
|
-
}
|
|
273
|
-
setIsStyleComputed(true);
|
|
274
|
-
};
|
|
275
|
-
const renderHintContainer = (className2) => {
|
|
276
|
-
const hc = getHintContainer(hintId);
|
|
277
|
-
if (!hc) return null;
|
|
278
|
-
return createPortal(getHintMarkUp(className2), hc);
|
|
279
|
-
};
|
|
280
|
-
useEffect2(() => {
|
|
281
|
-
initHintContainer(hintId, hintContainer);
|
|
282
|
-
const iAmOpenedCallback = (ev) => {
|
|
283
|
-
const event = ev;
|
|
284
|
-
if (event?.detail?.hintId !== hintId) {
|
|
285
|
-
setIsOpen(false);
|
|
286
|
-
const timer = hintTimeoutMap.get(hintId);
|
|
287
|
-
if (timer) {
|
|
288
|
-
clearTimeout(timer);
|
|
289
|
-
hintTimeoutMap.delete(hintId);
|
|
290
|
-
}
|
|
291
|
-
}
|
|
292
|
-
return event;
|
|
293
|
-
};
|
|
294
|
-
if (hintRef.current) {
|
|
295
|
-
document.addEventListener(I_AM_OPENED_EVENT_NAME, iAmOpenedCallback);
|
|
296
|
-
}
|
|
297
|
-
return () => {
|
|
298
|
-
document.removeEventListener(I_AM_OPENED_EVENT_NAME, iAmOpenedCallback);
|
|
299
|
-
const timer = hintTimeoutMap.get(hintId);
|
|
300
|
-
if (timer) {
|
|
301
|
-
clearTimeout(timer);
|
|
302
|
-
hintTimeoutMap.delete(hintId);
|
|
303
|
-
}
|
|
304
|
-
};
|
|
305
|
-
}, []);
|
|
306
|
-
useEffect2(() => {
|
|
307
|
-
setIsStyleComputed(false);
|
|
308
|
-
setHintContainerStyles();
|
|
309
|
-
onOpenChange?.(isOpen);
|
|
310
|
-
if (isOpen) {
|
|
311
|
-
document.addEventListener("scroll", handleScroll, true);
|
|
312
|
-
document.addEventListener("click", handleClickOutside, true);
|
|
313
|
-
} else {
|
|
314
|
-
document.removeEventListener("scroll", handleScroll, true);
|
|
315
|
-
document.removeEventListener("click", handleClickOutside, true);
|
|
316
|
-
}
|
|
317
|
-
return () => {
|
|
318
|
-
const timer = hintTimeoutMap.get(hintId);
|
|
319
|
-
if (timer) {
|
|
320
|
-
clearTimeout(timer);
|
|
321
|
-
hintTimeoutMap.delete(hintId);
|
|
322
|
-
}
|
|
323
|
-
};
|
|
324
|
-
}, [isOpen]);
|
|
325
|
-
return /* @__PURE__ */ jsxs3("div", { "data-testid": testId, className: cn2("hint", className), ref: hintRef, children: [
|
|
326
|
-
/* @__PURE__ */ jsxs3(
|
|
327
|
-
"button",
|
|
328
|
-
{
|
|
329
|
-
tabIndex: isAccessability ? 0 : -1,
|
|
330
|
-
"data-testid": typeof label === "string" && label.length ? label.replace?.(/\s/g, "-") : `${testId}--button`,
|
|
331
|
-
"aria-label": isAccessability && typeof label === "string" ? label : "",
|
|
332
|
-
onClick: () => handleOpenType === "click" && (isCallbackExist ? onClickCallback?.() : setIsOpen(!isOpen)),
|
|
333
|
-
onMouseEnter: handle.onMouseEnter,
|
|
334
|
-
onMouseLeave: handle.onMouseLeave,
|
|
335
|
-
className: cn2("hint__button", { hint__button_active: isOpen }),
|
|
336
|
-
children: [
|
|
337
|
-
icon || icon === null || /* @__PURE__ */ jsxs3(Fragment, { children: [
|
|
338
|
-
variant === "outlined" && /* @__PURE__ */ jsx3(HelpCircle, { width: 16, height: 16, className: "hint__icon outlined" }),
|
|
339
|
-
variant === "filled" && /* @__PURE__ */ jsx3(HelpCircleFilled, { className: "hint__icon filled" }),
|
|
340
|
-
variant === "warning" && /* @__PURE__ */ jsx3(AlertTriangle, { className: "hint__icon", color: "#F06D8D", width: 16, height: 16 })
|
|
341
|
-
] }),
|
|
342
|
-
label && /* @__PURE__ */ jsx3("span", { className: cn2("hint__label", { "color--primary": isOpen }), children: typeof label === "string" ? capitalized(label) : label })
|
|
343
|
-
]
|
|
344
|
-
}
|
|
345
|
-
),
|
|
346
|
-
isOpen && renderHintContainer(className)
|
|
347
|
-
] });
|
|
348
|
-
};
|
|
349
|
-
var Hint_default = Hint;
|
|
350
|
-
|
|
351
|
-
// src/Atomic/Layout/Header/Header.tsx
|
|
352
|
-
import { jsx as jsx4, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
353
|
-
function Header({
|
|
354
|
-
className,
|
|
355
|
-
name = "John",
|
|
356
|
-
surname = "Silver",
|
|
357
|
-
status = "admin",
|
|
358
|
-
img = "",
|
|
359
|
-
hintLabel = "Help",
|
|
360
|
-
hintText = "Hint text"
|
|
361
|
-
}) {
|
|
362
|
-
const [isOpen, setIsOpen] = useState2(false);
|
|
363
|
-
const userMenu = useRef2(null);
|
|
364
|
-
const handle = {
|
|
365
|
-
toggleMenu: () => {
|
|
366
|
-
if (!isOpen) setIsOpen(!isOpen);
|
|
367
|
-
},
|
|
368
|
-
closeMenu: () => {
|
|
369
|
-
setTimeout(() => setIsOpen(false), 50);
|
|
370
|
-
},
|
|
371
|
-
logout: () => {
|
|
372
|
-
handle.toggleMenu();
|
|
373
|
-
}
|
|
374
|
-
};
|
|
375
|
-
return /* @__PURE__ */ jsxs4("header", { className: cn3("header", className), children: [
|
|
376
|
-
/* @__PURE__ */ jsx4("div", { className: "df", children: /* @__PURE__ */ jsx4(
|
|
377
|
-
Hint_default,
|
|
378
|
-
{
|
|
379
|
-
side: "bottom",
|
|
380
|
-
hint: hintText,
|
|
381
|
-
className: "header__hint",
|
|
382
|
-
label: hintLabel
|
|
383
|
-
}
|
|
384
|
-
) }),
|
|
385
|
-
/* @__PURE__ */ jsxs4("div", { className: "j6 user-menu", children: [
|
|
386
|
-
/* @__PURE__ */ jsxs4("div", { onClick: () => {
|
|
387
|
-
}, className: "header--bell", children: [
|
|
388
|
-
/* @__PURE__ */ jsx4(Bell, { className: "header--bell-icon" }),
|
|
389
|
-
/* @__PURE__ */ jsx4("div", { className: "header--bell-notification-icon" })
|
|
390
|
-
] }),
|
|
391
|
-
/* @__PURE__ */ jsx4("div", { className: "header--user-ava", children: img && /* @__PURE__ */ jsx4("img", { src: img, alt: "user-avatar" }) }),
|
|
392
|
-
/* @__PURE__ */ jsxs4("div", { className: "dfc mr10", children: [
|
|
393
|
-
/* @__PURE__ */ jsxs4("span", { className: "header--user-name", children: [
|
|
394
|
-
name,
|
|
395
|
-
" ",
|
|
396
|
-
surname
|
|
397
|
-
] }),
|
|
398
|
-
/* @__PURE__ */ jsx4("span", { className: "header--user-status", children: status })
|
|
399
|
-
] }),
|
|
400
|
-
/* @__PURE__ */ jsx4(
|
|
401
|
-
ChevronRight,
|
|
402
|
-
{
|
|
403
|
-
onClick: handle.toggleMenu,
|
|
404
|
-
"data-testid": "accordion--title-chevron",
|
|
405
|
-
className: cn3("accordion--title-chevron", {
|
|
406
|
-
"accordion--title-chevron-open": isOpen
|
|
407
|
-
})
|
|
408
|
-
}
|
|
409
|
-
),
|
|
410
|
-
isOpen && /* @__PURE__ */ jsx4("div", { className: "user-menu__dropdown", ref: userMenu, children: /* @__PURE__ */ jsxs4("div", { className: "user-menu__item", onClick: handle.logout, children: [
|
|
411
|
-
/* @__PURE__ */ jsx4(Power, { className: "mr10" }),
|
|
412
|
-
" ",
|
|
413
|
-
"Logout"
|
|
414
|
-
] }) })
|
|
415
|
-
] })
|
|
416
|
-
] });
|
|
417
|
-
}
|
|
418
|
-
var Header_default = Header;
|
|
419
|
-
|
|
420
|
-
// src/Atomic/Layout/Spinner/index.ts
|
|
421
|
-
var Spinner_default2 = Spinner_default;
|
|
422
|
-
export {
|
|
423
|
-
Header_default as Header,
|
|
424
|
-
Spinner_default2 as Spinner
|
|
425
|
-
};
|
|
426
|
-
//# sourceMappingURL=layout.js.map
|
package/dist/layout.js.map
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/Atomic/Layout/Header/Header.tsx", "../src/Atomic/UI/Hint/Hint.tsx", "../src/Functions/utils.js", "../src/Molecular/CustomIcons/components/HelpCircleFilled.tsx", "../src/Atomic/Layout/Spinner/Spinner.tsx", "../src/Atomic/UI/Hint/partials/_constants.ts", "../src/Atomic/UI/Hint/partials/_utils.ts", "../src/Atomic/Layout/Spinner/index.ts"],
|
|
4
|
-
"sourcesContent": ["import type { ReactElement } from 'react';\n\nimport type { IHeaderProps } from './Header.interface';\nimport cn from 'classnames';\nimport { useRef, useState } from 'react';\n\nimport { Bell, ChevronRight, Power } from 'react-feather';\n\nimport Hint from '../../UI/Hint/Hint';\nimport './Header.scss';\n\nfunction Header({\n className,\n name = 'John',\n surname = 'Silver',\n status = 'admin',\n img = '',\n hintLabel = 'Help',\n hintText = 'Hint text',\n}: IHeaderProps): ReactElement {\n const [isOpen, setIsOpen] = useState(false);\n\n const userMenu = useRef(null);\n\n const handle = {\n toggleMenu: () => {\n if (!isOpen) setIsOpen(!isOpen);\n },\n closeMenu: () => {\n setTimeout(() => setIsOpen(false), 50);\n },\n logout: () => {\n handle.toggleMenu();\n },\n };\n\n return (\n <header className={cn('header', className)}>\n <div className=\"df\">\n <Hint\n side=\"bottom\"\n hint={hintText}\n className=\"header__hint\"\n label={hintLabel}\n />\n </div>\n\n <div className=\"j6 user-menu\">\n <div onClick={() => {}} className=\"header--bell\">\n <Bell className=\"header--bell-icon\" />\n <div className=\"header--bell-notification-icon\" />\n </div>\n\n <div className=\"header--user-ava\">\n {img && <img src={img} alt=\"user-avatar\" />}\n </div>\n\n <div className=\"dfc mr10\">\n <span className=\"header--user-name\">\n {name}\n {' '}\n {surname}\n </span>\n <span className=\"header--user-status\">{status}</span>\n </div>\n\n <ChevronRight\n onClick={handle.toggleMenu}\n data-testid=\"accordion--title-chevron\"\n className={cn('accordion--title-chevron', {\n 'accordion--title-chevron-open': isOpen,\n })}\n />\n {isOpen && (\n <div className=\"user-menu__dropdown\" ref={userMenu}>\n <div className=\"user-menu__item\" onClick={handle.logout}>\n <Power className=\"mr10\" />\n {' '}\n Logout\n </div>\n </div>\n )}\n </div>\n </header>\n );\n}\n\nexport default Header;\n", "/* eslint-disable react-web-api/no-leaked-event-listener */\n/* eslint-disable react-dom/no-missing-button-type */\nimport type { ReactNode } from 'react';\nimport type { IHintProps } from './Hint.interface';\n\nimport cn from 'classnames';\nimport React, { useEffect, useRef, useState } from 'react';\nimport { createPortal } from 'react-dom';\nimport { AlertTriangle, HelpCircle } from 'react-feather';\n\nimport { capitalized } from '../../../Functions/utils';\nimport { HelpCircleFilled } from '../../../Molecular/CustomIcons';\n\nimport Spinner from '../../Layout/Spinner/Spinner';\n\nimport { I_AM_OPENED_EVENT_NAME, I_AM_OPENED_EVENT_OPTIONS } from './partials/_constants';\nimport { getHintContainer, HandleClickOutsideObj, HandleScrollObj, initHintContainer } from './partials/_utils';\n\nimport './Hint.scss';\n\n// \u0413\u043B\u043E\u0431\u0430\u043B\u044C\u043D\u044B\u0439 \u043C\u0430\u043F \u0434\u043B\u044F \u0445\u0440\u0430\u043D\u0435\u043D\u0438\u044F \u0442\u0430\u0439\u043C\u0435\u0440\u043E\u0432 \u043F\u043E hintId\nconst hintTimeoutMap = new Map<string, NodeJS.Timeout>();\n\nlet isContentHoveredOuter = false;\n\nconst DEFAULT_EMPTY_OBJ = {} as IHintProps['hintContainer'];\n\nfunction DEFAULT_VOID_FN(): void {}\n\ninterface IIAmOpenedDetails {\n hintId: string;\n}\n\nconst Hint: React.FC<IHintProps> = ({\n hint,\n side = 'right',\n className,\n hintContainer = DEFAULT_EMPTY_OBJ,\n label = '',\n variant = 'filled',\n handleOpenType = 'click',\n onClickCallback,\n onOpenChange = DEFAULT_VOID_FN,\n key,\n id,\n children,\n icon,\n isAccessability = false,\n testId = 'hint',\n isHoverableContent = false,\n isLoading,\n isCloseOnChildrenClick = false,\n}) => {\n const hintRef = useRef(null);\n const [hintId] = useState<string>(id ?? key ?? Math.random().toString(16).slice(2));\n const [iAmOpenedOptions] = useState<Record<string, any>>({ ...I_AM_OPENED_EVENT_OPTIONS, detail: { hintId } });\n const [isOpen, setIsOpen] = useState<boolean>(false);\n const [isStyleComputed, setIsStyleComputed] = useState<boolean>(false);\n\n // ? \u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u043C handleScroll-\u0441\u0442\u0435\u0439\u0442, \u0447\u0442\u043E\u0431\u044B \u043D\u0438\u043A\u043E\u0433\u0434\u0430 \u043D\u0435 \u043C\u0435\u043D\u044F\u0442\u044C \u0441\u0441\u044B\u043B\u043A\u0443 \u0442\u0435\u043C \u0441\u0430\u043C\u044B\u043C \u0433\u0430\u0440\u0430\u043D\u0442\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u043A\u043E\u0440\u0440\u0435\u043A\u0442\u043D\u0443\u044E \u0440\u0430\u0431\u043E\u0442\u0443 removeEventListener.\n // ? \u0418\u043D\u0438\u0446\u0438\u0430\u043B\u0438\u0437\u0438\u0440\u0443\u0435\u043C \u0441\u0442\u0435\u0439\u0442 \u0432\u044B\u0437\u043E\u0432\u043E\u043C \u043A\u043E\u043D\u0441\u0442\u0440\u0443\u043A\u0442\u043E\u0440\u0430 HandleScrollObj, \u043F\u0435\u0440\u0435\u0434\u0430\u0435\u043C setIsOpen \u0434\u043B\u044F \u0437\u0430\u043F\u0438\u0441\u0438 \u0432 \u043E\u0431\u044A\u0435\u043A\u0442.\n const [handleScroll] = useState(new (HandleScrollObj as any)(setIsOpen));\n // ? \u041F\u043E \u0430\u043D\u0430\u043B\u043E\u0433\u0438\u0438 \u043E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0435\u043C handleClickOutside\n const [handleClickOutside] = useState(new (HandleClickOutsideObj as any)(hintId, setIsOpen));\n\n const isCallbackExist: boolean = typeof onClickCallback === 'function';\n\n const handle = {\n onMouseEnter: (): void => {\n const existing = hintTimeoutMap.get(hintId);\n if (existing) clearTimeout(existing);\n\n if (handleOpenType === 'hover') {\n const timer = setTimeout(() => {\n setIsOpen(true);\n !isOpen && onClickCallback?.();\n\n // ? (FIN-10491) \u0418\u0434\u0435\u044F \u0441\u043B\u0435\u0434\u0443\u044E\u0449\u0430\u044F:\n // ? \u041B\u044E\u0431\u043E\u0439 hint \u043A\u0430\u043A \u0442\u043E\u043B\u044C\u043A\u043E \u043E\u043D \u043E\u0442\u043A\u0440\u044B\u0432\u0430\u0435\u0442\u0441\u044F \"\u0448\u0438\u0440\u043E\u043A\u043E\u0432\u0435\u0449\u0430\u0442\u0435\u043B\u044C\u043D\u043E \u043E\u0440\u0451\u0442\" - \"\u044F \u043E\u0442\u043A\u0440\u044B\u0442!\"\n // ? \u0418, \u0432 \u0441\u0432\u043E\u044E \u043E\u0447\u0435\u0440\u0435\u0434\u044C, \u043B\u044E\u0431\u043E\u0439 hint \u0441\u043B\u0443\u0448\u0430\u0435\u0442 \"\u0448\u0438\u0440\u043E\u043A\u043E\u0432\u0435\u0449\u0430\u0442\u0435\u043B\u044C\u043D\u044B\u0439 \u043E\u0440\" \u0438 \u043A\u0430\u043A \u0443\u0441\u043B\u044B\u0448\u0438\u0442 \"\u0434\u0443\u043C\u0430\u0435\u0442\" - \"\u0430 \u044D\u0442\u043E \u043D\u0435 \u044F \u043B\u0438 \u0441\u043B\u0443\u0447\u0430\u0439\u043D\u043E \u043E\u0442\u043A\u0440\u044B\u0442?\".\n // ? \u0415\u0441\u043B\u0438 \u041D\u0415 \u043E\u043D, \u0442\u043E \u0442\u043E\u0433\u0434\u0430 \u043E\u043D \u043F\u0440\u0438\u043D\u0443\u0434\u0438\u0442\u0435\u043B\u044C\u043D\u043E \u0437\u0430\u043A\u0440\u044B\u0432\u0430\u0435\u0442\u0441\u044F\n\n // ? \u0412 \u043A\u0430\u0447\u0435\u0441\u0442\u0432\u0435 \"\u0448\u0438\u0440\u043E\u043A\u043E\u0432\u0435\u0449\u0430\u0442\u0435\u043B\u044C\u043D\u043E\u0433\u043E \u043E\u0440\u0430\" \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u043C \u0441\u0438\u0441\u0442\u0435\u043C\u0443:\n // ? - \u0434\u0438\u0441\u043F\u0430\u0442\u0447\u0438\u043C \u043D\u0430 \"\u0441\u0435\u0431\u0435\" \u0412\u0421\u041F\u041B\u042B\u0412\u0410\u042E\u0429\u0418\u0419 \u043A\u0430\u0441\u0442\u043E\u043C\u043D\u044B\u0439 \u0438\u0432\u0435\u043D\u0442\n // ? - \u043D\u043E \u0447\u0442\u043E\u0431\u044B \"\u0441\u043B\u044B\u0448\u0430\u0442\u044C \u0433\u043E\u043B\u043E\u0441\u0430\" \u0432\u0441\u0435\u0445 \u0445\u0438\u043D\u0442\u043E\u0432 \"\u0441\u043B\u0443\u0448\u0430\u0435\u043C\" \u043D\u0430 \u043D\u0430\u0447\u0430\u043B\u044C\u043D\u043E\u0439 \u0442\u043E\u0447\u043A\u0435 \u0432\u0441\u043F\u043B\u044B\u0442\u0438\u044F (\u0442.\u0435. \u043D\u0430 document)\n // @ts-ignore\n hintRef.current?.dispatchEvent?.(new CustomEvent(I_AM_OPENED_EVENT_NAME, iAmOpenedOptions));\n }, 350);\n hintTimeoutMap.set(hintId, timer);\n }\n },\n onMouseLeave: (): void => {\n const existing = hintTimeoutMap.get(hintId);\n if (existing) clearTimeout(existing);\n\n if (!isHoverableContent && handleOpenType === 'hover') {\n const timer = setTimeout(() => {\n setIsOpen(false);\n hintTimeoutMap.delete(hintId);\n }, 1000);\n hintTimeoutMap.set(hintId, timer);\n }\n else if (isHoverableContent && handleOpenType === 'hover') {\n const timer = setTimeout(() => {\n if (!isContentHoveredOuter) {\n setIsOpen(false);\n }\n hintTimeoutMap.delete(hintId);\n }, 100);\n hintTimeoutMap.set(hintId, timer);\n }\n },\n onMouseLeaveHoverableContent: (): void => {\n const existing = hintTimeoutMap.get(hintId);\n if (existing) clearTimeout(existing);\n\n if (isHoverableContent && handleOpenType === 'hover') {\n const timer = setTimeout(() => {\n setIsOpen(false);\n isContentHoveredOuter = false;\n hintTimeoutMap.delete(hintId);\n }, 100);\n hintTimeoutMap.set(hintId, timer);\n }\n },\n onClick: isCloseOnChildrenClick ? (): void => setIsOpen(false) : (): void => {},\n };\n\n const getHintMarkUp = (className: string | undefined): ReactNode => {\n return (\n <div\n data-testid=\"test-hint-text\"\n className={cn('hint__text', `hint__text_${side}`, `hint--${className}__text`)}\n onMouseEnter={(): void => {\n if (isHoverableContent) isContentHoveredOuter = true;\n }}\n onMouseLeave={isHoverableContent ? handle.onMouseLeaveHoverableContent : undefined}\n onClick={handle.onClick}\n style={{ visibility: isStyleComputed ? 'visible' : 'hidden' }}\n >\n {isLoading && <Spinner size=\"small\" />}\n {hint}\n {children}\n </div>\n );\n };\n\n const setHintContainerStyles = (): void | boolean => {\n const hc = getHintContainer(hintId);\n\n if (!hc || !isOpen) return false;\n\n const { width = 0, top = 0, left = 0 } = hintRef?.current !== null ? (hintRef?.current as HTMLElement)?.getBoundingClientRect() : {};\n const { addWidth, addLeft, addTop } = hintContainer ?? {};\n const windowInnerWidth = document.documentElement.clientWidth;\n const windowInnerHeight = document.documentElement.clientHeight;\n\n const sw = hc.getElementsByClassName('hint__text')[0];\n const { width: swWidth, height: swHeight } = sw?.getBoundingClientRect() || {};\n\n hc.style.width = isOpen ? ((addWidth && !Number.isNaN(+addWidth) ? +addWidth : 0) + width)?.toString().concat('px') : '0';\n hc.style.left = isOpen ? ((addLeft && !Number.isNaN(+addLeft) ? +addLeft : 0) + left)?.toString().concat('px') : '0';\n hc.style.top = isOpen ? ((addTop && !Number.isNaN(+addTop) ? +addTop : 0) + top)?.toString().concat('px') : '0';\n hc.style.maxHeight = isOpen ? swHeight?.toString().concat('px') : '0';\n\n // ? \u0411\u0430\u0437\u043E\u0432\u043E\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435 \u043F\u043E\u0433\u0440\u0435\u0448\u043D\u043E\u0441\u0442\u0438\n // ? \u0412 \u0440\u0430\u0437\u043D\u044B\u0445 \u0441\u0432\u0438\u0442\u0447-\u043A\u0435\u0439\u0441\u0430\u0445 \u043C\u043E\u0436\u0435\u0442 \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C\u0441\u044F \u043F\u043E \u0440\u0430\u0437\u043D\u043E\u043C\u0443 (\u0432\u0441\u044F \u0438\u043B\u0438 \u0447\u0430\u0441\u0442\u0438\u0447\u043D\u043E). \u041E\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u043B \"\u043D\u0430 \u0433\u043B\u0430\u0437\u043E\u043A\"\n const INACCURACY = 20;\n switch (side) {\n case 'top':\n case 'centeredTop':\n if (top - swHeight - (INACCURACY / 2) < 0) {\n sw.classList.remove(`hint__text_${side}`);\n sw.classList.add(`hint__text_${side === 'top' ? 'bottom' : 'centeredBottom'}`);\n }\n break;\n\n case 'bottom':\n case 'centeredBottom':\n if (top + swHeight + INACCURACY > windowInnerHeight) {\n sw.classList.remove(`hint__text_${side}`);\n sw.classList.add(`hint__text_${side === 'bottom' ? 'top' : 'centeredTop'}`);\n }\n break;\n\n case 'left':\n if (left - swWidth - (INACCURACY / 2) < 0) {\n sw.classList.remove(`hint__text_${side}`);\n sw.classList.add('hint__text_right');\n }\n break;\n\n case 'right':\n default:\n if (left + width + swWidth + (INACCURACY / 2) > windowInnerWidth) {\n sw.classList.remove(`hint__text_${side}`);\n sw.classList.add('hint__text_left');\n }\n break;\n }\n\n setIsStyleComputed(true);\n };\n\n const renderHintContainer = (className: string | undefined): React.ReactPortal | null => {\n const hc = getHintContainer(hintId);\n if (!hc) return null;\n return createPortal(getHintMarkUp(className), hc);\n }\n\n useEffect(() => {\n initHintContainer(hintId, hintContainer);\n\n // ? useEffect \u043F\u043E \u043D\u0443\u043B\u0435\u0432\u043E\u0439 \u0437\u0430\u0432\u0438\u0441\u0438\u043C\u043E\u0441\u0442\u0438 \u0437\u0430\u043F\u0443\u0441\u043A\u0430\u0435\u0442\u0441\u044F 1 \u0440\u0430\u0437, \u043F\u043E\u044D\u0442\u043E\u043C\u0443 \u0441\u0441\u044B\u043B\u043A\u0430 \u043D\u0430 \u043A\u043E\u043B\u0431\u0435\u043A \u043D\u0435 \u0438\u0437\u043C\u0435\u043D\u0438\u0442\u0441\u044F\n const iAmOpenedCallback = (ev: Event): CustomEvent<IIAmOpenedDetails> => {\n const event = ev as CustomEvent<IIAmOpenedDetails>;\n if (event?.detail?.hintId !== hintId) {\n setIsOpen(false);\n const timer = hintTimeoutMap.get(hintId);\n if (timer) {\n clearTimeout(timer);\n hintTimeoutMap.delete(hintId);\n }\n }\n return event;\n };\n\n if (hintRef.current) {\n // ? \u0423\u0441\u0442\u0430\u043D\u0430\u0432\u043B\u0438\u0432\u0430\u0435\u043C \u043F\u0440\u043E\u0441\u043B\u0443\u0448\u043A\u0443 \u043D\u0430 \u043D\u0430\u0447\u0430\u043B\u044C\u043D\u043E\u0439 \u0442\u043E\u0447\u043A\u0435 \u0432\u0441\u043F\u043B\u044B\u0442\u0438\u044F\n document.addEventListener(I_AM_OPENED_EVENT_NAME, iAmOpenedCallback);\n }\n\n return () => {\n document.removeEventListener(I_AM_OPENED_EVENT_NAME, iAmOpenedCallback);\n const timer = hintTimeoutMap.get(hintId);\n if (timer) {\n clearTimeout(timer);\n hintTimeoutMap.delete(hintId);\n }\n };\n }, []);\n\n useEffect(() => {\n setIsStyleComputed(false);\n setHintContainerStyles();\n onOpenChange?.(isOpen);\n\n if (isOpen) {\n document.addEventListener('scroll', handleScroll, true);\n document.addEventListener('click', handleClickOutside, true);\n }\n else {\n document.removeEventListener('scroll', handleScroll, true);\n document.removeEventListener('click', handleClickOutside, true);\n }\n\n return () => {\n const timer = hintTimeoutMap.get(hintId);\n if (timer) {\n clearTimeout(timer);\n hintTimeoutMap.delete(hintId);\n }\n };\n }, [isOpen]);\n\n return (\n <div data-testid={testId} className={cn('hint', className)} ref={hintRef}>\n <button\n tabIndex={isAccessability ? 0 : -1}\n data-testid={typeof label === 'string' && label.length ? label.replace?.(/\\s/g, '-') : `${testId}--button`}\n aria-label={isAccessability && typeof label === 'string' ? label : ''}\n onClick={() =>\n handleOpenType === 'click'\n && (isCallbackExist ? onClickCallback?.() : setIsOpen(!isOpen))}\n onMouseEnter={handle.onMouseEnter}\n onMouseLeave={handle.onMouseLeave}\n className={cn('hint__button', { hint__button_active: isOpen })}\n >\n {icon || icon === null || (\n <>\n {variant === 'outlined' && <HelpCircle width={16} height={16} className=\"hint__icon outlined\" />}\n {variant === 'filled' && <HelpCircleFilled className=\"hint__icon filled\" />}\n {variant === 'warning' && (\n <AlertTriangle className=\"hint__icon\" color=\"#F06D8D\" width={16} height={16} />\n )}\n </>\n )}\n\n {label && (\n <span className={cn('hint__label', { 'color--primary': isOpen })}>\n {typeof label === 'string' ? capitalized(label) : label}\n </span>\n )}\n </button>\n\n {isOpen && renderHintContainer(className)}\n </div>\n );\n}\n\nexport default Hint;\n", "import { useEffect } from \"react\";\n\nimport moment from \"moment-timezone\";\n\nimport { DEFAULT_COLORS, OS } from \"../Constants/index.constants\";\n\nexport const uuid = () => Date.now().toString(36) + Math.random().toString(36).substring(2);\n\nexport const getIsOnlyAnObject = (input) => {\n return (\n typeof input === \"object\" && // \"\u043E\u0442\u0431\u0438\u0432\u0430\u0435\u0442\" \u043F\u0440\u0438\u043C\u0438\u0442\u0438\u0432\u044B \u0438 \u0444\u0443\u043D\u043A\u0446\u0438\u0438\n input instanceof Object && // \"\u043E\u0442\u0431\u0438\u0432\u0430\u0435\u0442\" null\n !Array.isArray(input) && // \"\u043E\u0442\u0431\u0438\u0432\u0430\u0435\u0442\" \u043C\u0430\u0441\u0441\u0438\u0432\u044B\n !(input instanceof Set) && // \"\u043E\u0442\u0431\u0438\u0432\u0430\u0435\u0442\" \u0441\u0435\u0442\u044B\n !(input instanceof Map) // \"\u043E\u0442\u0431\u0438\u0432\u0430\u0435\u0442\" \u043C\u0430\u043F\u044B\n );\n};\n\n/* eslint-disable guard-for-in, no-unused-vars */\nexport const handleObjectChange =\n (updateObject, updateFunction) =>\n (data, prop = \"\", isNumber) => {\n let value;\n if (data?.target) {\n value =\n data.target.type === \"checkbox\"\n ? data.target.checked\n : data.target.value;\n } else value = data;\n\n value = isNumber ? Number(value) : value;\n\n const props = prop.split(\".\");\n const currentObject = props.reduce((res, chapter, index) => {\n if (props.length !== index + 1) res = res[chapter];\n return res;\n }, updateObject);\n\n currentObject[props.pop()] = value;\n updateFunction();\n };\n\nexport const useOutsideToggle = (ref, setOut, open) => {\n function handleClickOutside(event) {\n if (ref.current && !ref.current.contains(event.target)) {\n setOut(open);\n }\n }\n useEffect(() => {\n document.addEventListener(\"mouseup\", handleClickOutside);\n return () => {\n // Unbind the event listener on clean up\n document.removeEventListener(\"mouseup\", handleClickOutside);\n };\n }, [ref]);\n};\n\n// export const clone = obj => {\n// const data = obj instanceof Array ? [] : {};\n// for (const i in obj) data[i] = typeof obj[i] === 'object' && obj[i] != null ? clone(obj[i]) : obj[i];\n// return data;\n// };\n// ! \u042D\u0442\u043E\u0442 \u043F\u0440\u0430\u0432\u0438\u043B\u044C\u043D\u0435\u0435\nexport const clone = (input) => {\n if (input === null || typeof input !== \"object\") return input;\n const data = input instanceof Array ? [] : {};\n for (const i in input) data[i] = clone(input[i]);\n return data;\n};\n\nexport const getResponseClone = async (res) =>\n await (typeof res?.clone === \"function\" ? res.clone() : clone(res));\n\n//TimeUtils\nexport function transformUTCTimeToLocal(date, format = \"YYYY-MM-DD HH:mm:ss\") {\n if (!date) return;\n const utcDate = moment.utc(date).toDate();\n return moment(utcDate, format).local().format(format);\n}\nexport function transformLocalTimeToUTC(date, format = \"YYYY-MM-DD HH:mm:ss\") {\n if (!date) return;\n return moment(date, format).utc().format(format);\n}\nexport function transformUTCHoursToLocal(time, format = \"HH:mm:ss\") {\n if (!time) return;\n const splitedTime = time.split(\":\");\n const offset = moment().utcOffset();\n let HH = Number(splitedTime[0]);\n let mm = Number(splitedTime[1]);\n const ss = splitedTime[2];\n mm = mm + offset;\n while (mm > 59) {\n mm -= 60;\n HH += 1;\n }\n if (HH > 23) HH -= 24;\n while (mm < 0) {\n mm += 60;\n HH -= 1;\n }\n if (HH < 0) HH += 24;\n return `${HH}:${mm}:${ss}`;\n}\n\n//? \u041D\u0430\u043C\u0435\u0440\u044F\u043D\u043D\u043E \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\u043C \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E \u043D\u0430\u0437\u043D\u0430\u0447\u0430\u044E \u0441\u0430\u043C\u044B\u0439 \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u043E\u043D\u043D\u043E-\u043C\u0430\u043B\u0435\u043D\u044C\u043A\u0438\u0439 \u043F\u0430\u0442\u0442\u0435\u0440\u043D\nexport function transformDateOrTimeOrTogetherToFormat(\n data,\n outputFormat = \"HH:mm\",\n additional,\n) {\n const ERROR_VALUE = \"Invalid date\";\n const ERROR_MESSGE = `Invalid input data for ${outputFormat} format`;\n const { parseFormat, isReturnAsMomentInstance } = getIsOnlyAnObject(\n additional,\n )\n ? additional\n : {};\n\n if (typeof data !== \"string\" && typeof data !== \"number\") {\n return isReturnAsMomentInstance ? moment(\"error\") : ERROR_MESSGE;\n }\n\n //? \u0418\u0433\u043D\u043E\u0440\u0438\u0440\u0443\u0435\u043C parseFormat, \u0435\u0441\u043B\u0438 data \u043F\u0440\u0438\u0448\u043B\u0430 \u043A\u0430\u043A timestamp \u0438\u043B\u0438 \u0435\u0441\u043B\u0438 parseFormat \u043D\u0435 \u0441\u0442\u0440\u043E\u043A\u0430\n const momentArgs = [\n data,\n ...(!Number.isNaN(Number(data)) || typeof parseFormat === \"string\"\n ? []\n : [parseFormat]),\n ];\n\n //? \u0417\u0430\u0434\u0430\u0447\u0430 \u043F\u043E\u043B\u0443\u0447\u0438\u0442\u044C moment-\u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440, \u0432\u0430\u043B\u0438\u0434\u043D\u044B\u0439 \u043B\u0438\u0431\u043E \u043D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u044B\u0439\n const momentInstance = (() => {\n let instance = moment(...momentArgs);\n\n //? \u041F\u0440\u043E\u0432\u0435\u0440\u044F\u0435\u043C \u0432\u0430\u043B\u0438\u0434\u043D\u043E\u0441\u0442\u044C moment-\u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440-\u0430 \u043F\u0443\u0442\u0435\u043C \u043F\u043E\u043F\u044B\u0442\u043A\u0438 \u043F\u0440\u0438\u0432\u0435\u0441\u0442\u0438 \u0435\u0433\u043E \u043A \u0432\u044B\u0445\u043E\u0434\u043D\u043E\u043C\u0443 \u0444\u043E\u0440\u043C\u0430\u0442\u0443\n //? \u041F\u043E\u043F\u0430\u0434\u0435\u043C \u0432 \u044D\u0442\u043E\u0442 \u043A\u0435\u0439\u0441 \u0435\u0441\u043B\u0438\n //? - data \u044D\u0442\u043E timestamp\n //? - data \u044D\u0442\u043E \u0441\u0442\u0440\u043E\u043A\u0430 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 date-time\n //? - data \u044D\u0442\u043E \u0441\u0442\u0440\u043E\u043A\u0430 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 date (\u0432 \u044D\u0442\u043E\u043C \u0441\u043B\u0443\u0447\u0430\u0435 \u0432\u0440\u0435\u043C\u044F \u0432\u044B\u0441\u0442\u0430\u0432\u0438\u0442\u0441\u044F 00:00:00)\n if (instance.format(outputFormat) !== ERROR_VALUE) return instance;\n //? \u0415\u0441\u043B\u0438 \u0436\u0435 \u043F\u0440\u0438\u0432\u0435\u0434\u0435\u043D\u0438\u0435 \u043D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C, \u0442\u043E \u043F\u0440\u0435\u0434\u043F\u043E\u043B\u0430\u0433\u0430\u0435\u043C, \u0447\u0442\u043E data \u043F\u0440\u0438\u0448\u043B\u0430 \u0432 \u0444\u043E\u0440\u043C\u0430\u0442\u0435 time\n //? \u0412 \u044D\u0442\u043E\u043C \u0441\u043B\u0443\u0447\u0430\u0435 \u0441\u043E\u0437\u0434\u0430\u0434\u0438\u043C \u043E\u0431\u044A\u0435\u043A\u0442 \u043E\u0442 \u0442\u0435\u043A\u0443\u0449\u0435\u0439 \u0434\u0430\u0442\u044B, \u0440\u0430\u0441\u043F\u0430\u0440\u0441\u0438\u043C data \u0438 \u0443\u0441\u0442\u0430\u043D\u043E\u0432\u0438\u043C \u0432\u0440\u0435\u043C\u044F\n //? \u041A\u043E\u0440\u0440\u0435\u043A\u0442\u043D\u043E \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u0430\u044E\u0442\u0441\u044F \u043F\u0430\u0442\u0442\u0435\u0440\u043D\u044B: 'HH*mm', 'HH*mm*ss', 'HH*mm*ss*\u043B\u044E\u0431\u043E\u0435_\u043A\u043E\u043B\u0438\u0447\u0435\u0441\u0442\u0432\u043E_ms', \u0433\u0434\u0435 * - \u043B\u044E\u0431\u043E\u0439 \u0440\u0430\u0437\u0434\u0435\u043B\u0438\u0442\u0435\u043B\u044C\n else if (/^\\d\\d.\\d\\d/.test(data)) {\n instance = moment();\n const symbols = data.split(\"\");\n\n const timeArr = symbols\n .reduce(\n (acc, symbol, idx) => {\n if (Number.isNaN(Number(symbol))) {\n if (acc.group) acc.result.push(acc.group);\n acc.group = \"\";\n } else acc.group = `${acc.group}${symbol}`;\n if (idx === symbols.length - 1 && acc.group)\n acc.result.push(acc.group);\n return acc;\n },\n { result: [], group: \"\" },\n )\n //? reverse \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0435\u0442\u0441\u044F \u0438\u0441\u043A\u043B\u044E\u0447\u0438\u0442\u0435\u043B\u044C\u043D\u043E \u0434\u043B\u044F \u0442\u043E\u0433\u043E, \u0447\u0442\u043E\u0431\u044B \u043F\u043E\u0441\u043B\u0435 \u043C\u043E\u0436\u043D\u043E \u0431\u044B\u043B\u043E \u0438\u0441\u043F\u043E\u043B\u044C\u0437\u043E\u0432\u0430\u0442\u044C \u043C\u0435\u0442\u043E\u0434 pop, \u0430 \u043D\u0435 shift,\n //? \u0442.\u043A. \u043C\u0435\u0442\u043E\u0434\u044B \u0434\u043E\u0431\u0430\u0432\u043B\u0435\u043D\u0438\u044F/\u0438\u0437\u0432\u043B\u0435\u0447\u0435\u043D\u0438\u044F \u043E\u0442\u043D\u043E\u0441\u0438\u0442\u0435\u043B\u044C\u043D\u043E \u043A\u043E\u043D\u0446\u0430 \u043C\u0430\u0441\u0441\u0438\u0432\u0430 \u0440\u0430\u0431\u043E\u0442\u0430\u044E\u0442 \u0431\u044B\u0441\u0442\u0440\u0435\u0435,\n //? \u0447\u0435\u043C \u0430\u043D\u0430\u043B\u043E\u0433\u0438\u0447\u043D\u044B\u0435 \u043E\u0442\u043D\u043E\u0441\u0438\u0442\u0435\u043B\u044C\u043D\u043E \u043D\u0430\u0447\u0430\u043B\u0430 \u043C\u0430\u0441\u0441\u0438\u0432\u0430\n .result.reverse();\n\n instance.hours(Number(timeArr.pop()));\n instance.minutes(Number(timeArr.pop()));\n instance.seconds(timeArr.length ? Number(timeArr.pop()) : 0);\n instance.milliseconds(timeArr.length ? Number(timeArr.pop()) : 0);\n } else instance = moment(\"error\"); //? \u0418\u043D\u0430\u0447\u0435 \u0441\u043E\u0437\u0434\u0430\u0435\u043C \u0437\u0430\u0432\u0435\u0434\u043E\u043C\u043E \u043D\u0435\u0432\u0430\u043B\u0438\u0434\u043D\u044B\u0439 moment-\u044D\u043A\u0437\u0435\u043C\u043F\u043B\u044F\u0440\n\n return instance;\n })();\n\n if (isReturnAsMomentInstance) return momentInstance;\n\n const output = momentInstance.format(outputFormat);\n return output === ERROR_VALUE ? ERROR_MESSGE : output;\n}\n\n//? \u041D\u0430\u043C\u0435\u0440\u044F\u043D\u043D\u043E \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u0435\u043C \u043F\u043E \u0443\u043C\u043E\u043B\u0447\u0430\u043D\u0438\u044E \u043D\u0430\u0437\u043D\u0430\u0447\u0430\u044E \u0441\u0430\u043C\u044B\u0439 \u0438\u043D\u0444\u043E\u0440\u043C\u0430\u0446\u0438\u043E\u043D\u043D\u043E-\u043C\u0430\u043B\u0435\u043D\u044C\u043A\u0438\u0439 \u043F\u0430\u0442\u0442\u0435\u0440\u043D\nexport function transformDateOrTimeOrTogetherToFormattedLocal(\n data,\n outputFormat = \"HH:mm\",\n additional,\n) {\n const ERROR_VALUE = \"Invalid date\";\n const ERROR_MESSGE = `Invalid input data for ${outputFormat} format`;\n\n if (additional && !getIsOnlyAnObject(additional)) {\n throw new Error(\n \"Bad additional [transformDateOrTimeOrTogetherToFormattedLocal]\",\n );\n }\n\n const compositeAdditional = {\n ...(additional || {}),\n isReturnAsMomentInstance: true,\n };\n const date = transformDateOrTimeOrTogetherToFormat(\n data,\n outputFormat,\n compositeAdditional,\n );\n\n const dateWithLocale = date.add(moment().utcOffset(), \"minutes\");\n const output = dateWithLocale.format(outputFormat);\n\n return output === ERROR_VALUE ? ERROR_MESSGE : output;\n}\n\n//\u043F\u0440\u0438\u043D\u0438\u043C\u0430\u0435\u0442 \u043E\u0431\u044C\u0435\u043A\u0442 \u0438 \u043C\u0430\u0441\u0441\u0438\u0432 \u043A\u043B\u044E\u0447\u0435\u0439 \u043E\u0431\u044C\u0435\u043A\u0442\u0430\n//\u0432\u043E\u0437\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u043E\u0431\u044C\u0435\u043A\u0442 \u0441 \u0442\u0435\u043C\u0438 \u043F\u043E\u043B\u044F\u043C\u0438, \u043A\u043E\u0442\u043E\u0440\u044B\u0445 \u043D\u0435\u0442 \u0432 \u043C\u0430\u0441\u0441\u0438\u0432\u0435 \u043A\u043B\u044E\u0447\u0435\u0439\nexport const omitKeys = (obj = {}, keys = []) =>\n keys.reduce((acc, key) => {\n const { [key]: omit, ...rest } = acc;\n return rest;\n }, obj);\n\nexport const logout = () => {\n window.localStorage.removeItem(\"accessToken\");\n window.localStorage.removeItem(\"tokenExpires\");\n window.location.reload();\n};\n\nexport const getStyles = (el, prop) => {\n if (!el) return null;\n if (!prop) return window.getComputedStyle(el);\n return window.getComputedStyle(el).getPropertyValue(prop);\n};\n\nexport const getColorById = (id, colors) => {\n if (!id) return \"#FF7D00\";\n\n const idToArr = Array.from(id);\n const colorsArr = colors && colors.length > 0 ? colors : DEFAULT_COLORS;\n\n let number = idToArr.reduce((acc, item) => {\n if (Number(item)) {\n return acc + Number(item);\n }\n return acc;\n }, 0);\n\n while (number >= colorsArr.length) {\n number -= colorsArr.length;\n }\n\n return colorsArr[number];\n};\n\nexport const debounce = (fn, ms) => {\n let id = null;\n return (...args) => {\n clearTimeout(id);\n id = setTimeout(() => {\n clearTimeout(id);\n fn(...args);\n }, ms);\n };\n};\n\nexport const throttle = (fn, ms) => {\n let id = null;\n return (...args) => {\n if (id) return;\n fn(...args);\n id = setTimeout(() => {\n clearTimeout(id);\n id = null;\n }, ms);\n };\n};\n\nexport const addBitDepthPoints = (value, step = 3) => {\n //\u0441\u043E\u0434\u0435\u0440\u0436\u0438\u0442 \u043B\u0438 value \u0442\u043E\u0447\u043A\u0443\n const isFraction = value?.includes(\".\");\n\n //\u0432\u0437\u044F\u0442\u044C \u0441\u0442\u0440\u043E\u043A\u0443 \u0434\u043E \u0442\u043E\u0447\u043A\u0438\n const valueBeforeDot = isFraction\n ? value?.slice(0, value?.indexOf(\".\"))\n : value;\n\n //\u0440\u0430\u0441\u0441\u0442\u0430\u043D\u043E\u0432\u043A\u0430 \u0437\u0430\u043F\u044F\u0442\u044B\u0445 \u043F\u043E\u0441\u043B\u0435 \u043A\u0430\u0436\u0434\u043E\u0439 3\u0439 \u0446\u0438\u0444\u0440\u044B \u0441 \u043A\u043E\u043D\u0446\u0430\n const intPart = valueBeforeDot\n .split(\"\")\n .reverse()\n .reduce(\n (acc, item, idx) =>\n idx % step === 0 && idx !== 0 ? [...acc, \",\", item] : [...acc, item],\n [],\n )\n .reverse()\n .join(\"\");\n\n return isFraction ? intPart + value?.slice(value?.indexOf(\".\")) : intPart;\n};\n\nexport const changeMeta = (key, items = []) => {\n const defaultMeta = items.find((i) => i.key === \"default\");\n\n if (key) {\n const item = items.find((i) => i.key === key);\n document.title = item?.title ?? defaultMeta?.title;\n document\n .querySelector('meta[name=\"description\"]')\n .setAttribute(\"content\", item?.description ?? defaultMeta?.description);\n }\n};\n\nexport const firstLetterCapital = (str) =>\n typeof str === \"string\"\n ? `${str.charAt(0).toUpperCase()}${str.slice(1)}`\n : str;\nexport const capitalized = firstLetterCapital;\n\nexport const checkedRef = (ref) =>\n ref ? (typeof ref === \"function\" ? (node) => ref(node) : ref) : null;\n\nexport function downloadEmulation(data, filename, type = \"image/*\") {\n const file = new Blob([data], { type });\n if (window.navigator.msSaveOrOpenBlob)\n // IE10+\n window.navigator.msSaveOrOpenBlob(file, filename);\n else {\n // Others\n const a = document.createElement(\"a\"),\n url = URL.createObjectURL(file);\n a.href = url;\n a.download = filename;\n document.body.appendChild(a);\n a.click();\n setTimeout(() => {\n document.body.removeChild(a);\n window.URL.revokeObjectURL(url);\n }, 0);\n }\n}\n\nexport const downloadFile = async ({ url, name, type = null }) => {\n const response = await fetch(url).then(async (res) => ({\n data: await res.blob(),\n type: type ?? res.headers.get(\"content-type\"),\n }));\n downloadEmulation(response.data, name, response.type);\n};\n\nexport const compare = (first, second, keys = []) => {\n //? \u0415\u0441\u043B\u0438 \u0442\u0438\u043F\u044B \u041D\u0415 \u0440\u0430\u0432\u043D\u044B - \u043D\u0435 \u0440\u0430\u0432\u043D\u044B \u0430\u043F\u0440\u0438\u043E\u0440\u0438\n if (typeof first !== typeof second) return false;\n //? \u0415\u0441\u043B\u0438 \u043E\u0442\u0432\u0435\u0442\u044B \u043D\u0430 \u0432\u043E\u043F\u0440\u043E\u0441 \"\u043C\u0430\u0441\u0441\u0438\u0432 \u043B\u0438?\" \u043D\u0435 \u0440\u0430\u0432\u043D\u044B, \u0442\u043E \u043D\u0435 \u0440\u0430\u0432\u043D\u044B \u0438 \u0442\u0438\u043F\u044B, \u0437\u043D\u0430\u0447\u0438\u0442 \u0442\u043E\u0436\u0435 \u043D\u0435 \u0440\u0430\u0432\u043D\u044B \u0430\u043F\u0440\u0438\u043E\u0440\u0438\n if (Array.isArray(first) !== Array.isArray(second)) return false;\n //? \u0415\u0441\u043B\u0438 \u043F\u0440\u043E\u0448\u043B\u0438 if-\u043A\u0443 - \u0442\u0438\u043F\u044B \u0443\u0441\u043B\u043E\u0432\u043D\u043E \u0440\u0430\u0432\u043D\u044B, \u043C\u043E\u0436\u0435\u043C \u043E\u0446\u0435\u043D\u0438\u0432\u0430\u0442\u044C \u0442\u0438\u043F \u043B\u0438\u0448\u044C \u043E\u0434\u043D\u043E\u0433\u043E \u043F\u0430\u0440\u0430\u043C\u0435\u0442\u0440\u0430, \u044D\u0442\u043E \u0431\u0443\u0434\u0435\u0442 \u0441\u043F\u0440\u0430\u0432\u0435\u0434\u043B\u0438\u0432\u043E \u0438 \u0434\u043B\u044F \u0432\u0442\u043E\u0440\u043E\u0433\u043E\n\n //? \u0415\u0441\u043B\u0438 \u043F\u0440\u0438\u043C\u0438\u0442\u0438\u0432\u044B - \u043F\u0440\u043E\u0441\u0442\u043E \u0441\u0440\u0430\u0432\u043D\u0438\u0432\u0430\u0435\u043C. \u041A\u0435\u0439\u0441 \u0441 null \u043E\u0431\u0440\u0430\u0431\u043E\u0442\u0430\u043D \u0442\u0443\u0442.\n if (!(first instanceof Object)) return first === second;\n\n //? \u0415\u0441\u043B\u0438 \u041D\u0415 \u043F\u0440\u0438\u043C\u0435\u0442\u0438\u0432\u044B - \u043D\u0435 \u0432\u0430\u0436\u043D\u043E \u043C\u0430\u0441\u0441\u0438\u0432 \u0438\u043B\u0438 \u043D\u0435\u0442, \u043C\u0435\u0442\u043E\u0434\u044B \u043E\u0431\u044A\u0435\u043A\u0442\u0430 \u0434\u043B\u044F \u043C\u0430\u0441\u0441\u0438\u0432\u0430 \u0442\u043E\u0436\u0435 \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u044B\n\n const getComparationStructure = (data) => {\n if (typeof data === 'function') return data.toString();\n if (!(data instanceof Object)) return data;\n\n return Object.entries(data)\n .sort((a, b) => (a[0]).localeCompare(b[0]))\n .map(([key, value]) => ([key, getComparationStructure(data[key])]));\n };\n\n //? \u041F\u043E\u043B\u0443\u0447\u0430\u0435\u043C \u0441\u0442\u0440\u0443\u043A\u0442\u0443\u0440\u044B \u0434\u043B\u044F \u0441\u0440\u0430\u0432\u043D\u0435\u043D\u0438\u044F (\u0441 \u0443\u0447\u0435\u0442\u043E\u043C \u0433\u043B\u0443\u0431\u0438\u043D\u044B) - \u043C\u0430\u0441\u0441\u0438\u0432\u044B \u043C\u0430\u0441\u0441\u0438\u0432\u043E\u0432, \u0441\u043E\u0440\u0442\u0438\u0440\u0443\u0435\u043C \u043F\u043E \u043A\u043B\u044E\u0447\u0430\u043C,\n const structureForComparingOfFirst = getComparationStructure(first);\n const structureForComparingOfSecond = getComparationStructure(second);\n\n return (JSON.stringify(structureForComparingOfFirst) === JSON.stringify(structureForComparingOfSecond));\n};\n\n// Set Carret to the End of Input\nexport const setCarretToEnd = (input) => {\n setTimeout(() => {\n const tmp = input.value;\n input.value = \"\";\n input.value = tmp;\n }, 10);\n};\n\nexport const compareAlphabetical = (a, b, key = \"label\") => {\n let item1 = a?.[key];\n let item2 = b?.[key];\n\n if (typeof item1 !== \"string\" || typeof item2 !== \"string\") return 0;\n\n item1 = item1?.toLowerCase();\n item2 = item2?.toLowerCase();\n\n if (item1 < item2) {\n return -1;\n }\n if (item1 > item2) {\n return 1;\n }\n return 0;\n};\n\nexport const getBase64 = (file) => {\n if (file) {\n return new Promise(function (resolve, reject) {\n const reader = new FileReader();\n reader.readAsDataURL(file);\n reader.onload = () => resolve(reader.result);\n reader.onerror = (error) => reject(\"Error: \", error);\n });\n }\n};\n\nexport const renderFileSize = (bytes, decimals = 2) => {\n if (!Number(bytes)) return \"0 Bytes\";\n\n const k = 1024;\n const dm = decimals < 0 ? 0 : decimals;\n const sizes = [\"Bytes\", \"KB\", \"MB\", \"GB\"];\n\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n\n return `${parseFloat((bytes / Math.pow(k, i)).toFixed(dm))} ${sizes[i]}`;\n};\n\nexport const getUniqueFileExtensions = (extListString) => {\n // Split the extensions list into an array\n const extArray = extListString\n ?.split(\",\")\n .map((ext) => ext.trim().toUpperCase());\n\n // Remove duplicates using a Set\n const uniqueExts = [...new Set(extArray)];\n\n // Join the unique extensions into a string\n return uniqueExts.join(\", \");\n};\n\nexport const getOS = () => {\n let userAgent = window.navigator.userAgent,\n platform =\n window.navigator?.userAgentData?.platform || window.navigator.platform,\n macosPlatforms = [\"Macintosh\", \"MacIntel\", \"MacPPC\", \"Mac68K\"],\n windowsPlatforms = [\"Win32\", \"Win64\", \"Windows\", \"WinCE\"],\n iosPlatforms = [\"iPhone\", \"iPad\", \"iPod\"],\n os = OS.Unknown;\n\n if (macosPlatforms.indexOf(platform) !== -1) {\n os = OS.MacOS;\n } else if (iosPlatforms.indexOf(platform) !== -1) {\n os = OS.iOS;\n } else if (windowsPlatforms.indexOf(platform) !== -1) {\n os = OS.Windows;\n } else if (/Android/.test(userAgent)) {\n os = OS.Android;\n } else if (/Linux/.test(platform)) {\n os = OS.Linux;\n }\n\n return os;\n};\n\n\nString.prototype.longerThan = function (compareWith) {\n return this?.length > compareWith?.length;\n};\nString.prototype.lastIndexEqualsTo = function (index) {\n return this?.length - 1 === index;\n};\n\nexport const getCorrectTestId = ({ testId = \"\", withTier = true }) =>\n testId && testId !== undefined ? `${withTier ? \"-\" : \"\"}${testId}` : \"\";\n\n\n", "import type { ReactElement, SVGProps } from 'react';\n\nexport function HelpCircleFilled(props: SVGProps<SVGSVGElement>): ReactElement {\n return (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width={16}\n height={16}\n fill=\"none\"\n {...props}\n >\n <path\n fill=\"#9AA0B9\"\n d=\"M8 14.667A6.667 6.667 0 1 0 8 1.333a6.667 6.667 0 0 0 0 13.334Z\"\n />\n <path\n stroke=\"#fff\"\n d=\"M6.06 6a2 2 0 0 1 3.887.667c0 1.333-2 2-2 2M8 11.333h.006\"\n />\n </svg>\n )\n}\n", "import type { ISpinnerProps } from './Spinner.interface';\nimport cn from 'classnames';\n\nimport React from 'react';\n\nimport './Spinner.scss';\n\nconst CN = 'loader-box';\n\nconst Spinner: React.FC<ISpinnerProps> = ({ size = null, className, testId = CN }) => {\n return (\n <div\n role=\"status\"\n aria-live=\"polite\"\n aria-busy=\"true\"\n data-testid={testId}\n className={cn(\n CN,\n {\n j5: size !== 'small',\n j8: size === 'small',\n },\n className,\n )}\n >\n <div className={cn('lds-ring', { [`lds-ring_${size}`]: size })}>\n <div />\n <div />\n <div />\n <div />\n </div>\n </div>\n );\n};\n\nexport default Spinner;\n", "export const I_AM_OPENED_EVENT_NAME = 'hint:i-am-open';\nexport const I_AM_OPENED_EVENT_OPTIONS = {\n bubbles: true,\n cancelable: true,\n composed: false,\n};\n", "export const getHintContainerId = (hintId: string | number): string => `hint-container-for-hint--id-${hintId}`;\n\nexport function getHintContainer(hintId: string | number): HTMLElement | null {\n return document.getElementById(getHintContainerId(hintId));\n}\n\nexport function getParentNode(): HTMLElement | null {\n return (\n document.querySelector('div#root')\n ?? document.querySelector('div#app')\n ?? document.body\n );\n}\n\nexport function initHintContainer(hintId: string | number, hintContainerSettings: any): void {\n const { className } = hintContainerSettings;\n const hintContainer = document.createElement('div');\n\n hintContainer.setAttribute('id', getHintContainerId(hintId));\n hintContainer.classList.add('hint__container');\n if (className) hintContainer.classList.add(className);\n\n getParentNode()?.append(hintContainer);\n}\n\n// ? addEventListener \u043C\u043E\u0436\u043D\u043E \u0438\u043D\u0438\u0446\u0438\u0430\u043B\u0438\u0437\u0438\u0440\u043E\u0432\u0430\u0442\u044C \u0434\u0432\u0443\u043C\u044F \u0441\u043F\u043E\u0441\u043E\u0431\u0430\u043C\u0438\n// ? - \u043F\u0435\u0440\u0435\u0434\u0430\u0442\u044C \u043F\u0440\u044F\u043C\u043E\u0439 \u043A\u043E\u043B\u0431\u044D\u043A (\u0444-\u044E)\n// ? - \u043F\u0435\u0440\u0435\u0434\u0430\u0442\u044C \u043E\u0431\u044A\u0435\u043A\u0442 \u0432 \u043A\u043E\u0442\u043E\u0440\u043E\u043C \u0435\u0441\u0442\u044C \u043C\u0435\u0442\u043E\u0434 handleEvent (\u043F\u043E\u043C\u0438\u043C\u043E handleEvent \u043C\u043E\u0436\u043D\u043E \u0437\u0430\u043F\u0438\u0441\u0430\u0442\u044C \u0432 this \u043F\u0440\u043E\u0447\u0438\u0435 \u043F\u043E\u043B\u0435\u0437\u043D\u044B\u0435 \u0437\u043D\u0430\u0447\u0435\u043D\u0438\u044F)\n// ? \u041F\u043E\u043B\u044C\u0437\u0443\u0435\u043C\u0441\u044F \u0432\u0442\u043E\u0440\u044B\u043C \u0441\u043F\u043E\u0441\u043E\u0431\u043E\u043C, \u0447\u0442\u043E\u0431\u044B \u0437\u0430\u043F\u0438\u0441\u0430\u0442\u044C \u0432\u0445\u043E\u0434\u043D\u044B\u0435 \u0434\u0430\u043D\u043D\u044B\u0435 (\u0432\u043E\u043E\u0431\u0449\u0435 \u043C\u043E\u0436\u043D\u043E \u043D\u0435 \u043F\u0438\u0441\u0430\u0442\u044C, \u0440\u0430\u0431\u043E\u0442\u0430\u0435\u0442 \u0438 \u043F\u0440\u043E\u0441\u0442\u043E \u043E\u0442 \u0437\u0430\u043C\u044B\u043A\u0430\u043D\u0438\u044F, \u043D\u043E \u0434\u0435\u043B\u0430\u0435\u043C \u043F\u043E \"\u0434\u0437\u0435\u043D\u0443\")\n// ! \u041C\u0435\u0442\u043E\u0434 \u043D\u0430\u043F\u0438\u0441\u0430\u043D \u0441 \u0440\u0430\u0441\u0447\u0435\u0442\u043E\u043C \u043D\u0430 \u0442\u043E, \u0447\u0442\u043E \u0431\u0443\u0434\u0435\u0442 \u0432\u044B\u0437\u044B\u0432\u0430\u0442\u044C\u0441\u044F \u0422\u041E\u041B\u042C\u041A\u041E \u043E\u0442\u043A\u0440\u044B\u0442\u044B\u043C \u0442\u0443\u043B\u0442\u0438\u043F\u043E\u043C\nexport function HandleScrollObj(this: any, setIsOpen: (isOpen: boolean) => void): void {\n this.setIsOpen = setIsOpen;\n this.handleEvent = function () {\n this.setIsOpen(false);\n };\n}\n\nexport function HandleClickOutsideObj(this: any, id: string | number, setIsOpen: (isOpen: boolean) => void): void {\n this.id = id;\n this.setIsOpen = setIsOpen;\n this.handleEvent = function (event: Event) {\n if (getHintContainer(this.id)) {\n if (!(getHintContainer(this.id) as HTMLElement).contains(event?.target as Node)) {\n this.setIsOpen(false);\n }\n }\n };\n}\n", "import Spinner from './Spinner';\n\nexport default Spinner;\nexport type { ISpinnerProps } from './Spinner.interface';\n"],
|
|
5
|
-
"mappings": ";AAGA,OAAOA,SAAQ;AACf,SAAS,UAAAC,SAAQ,YAAAC,iBAAgB;AAEjC,SAAS,MAAM,cAAc,aAAa;;;ACD1C,OAAOC,SAAQ;AACf,SAAgB,aAAAC,YAAW,QAAQ,gBAAgB;AACnD,SAAS,oBAAoB;AAC7B,SAAS,eAAe,kBAAkB;;;ACR1C,SAAS,iBAAiB;AAE1B,OAAO,YAAY;AAoTZ,IAAM,qBAAqB,CAAC,QACjC,OAAO,QAAQ,WACX,GAAG,IAAI,OAAO,CAAC,EAAE,YAAY,CAAC,GAAG,IAAI,MAAM,CAAC,CAAC,KAC7C;AACC,IAAM,cAAc;AAqJ3B,OAAO,UAAU,aAAa,SAAU,aAAa;AACnD,SAAO,MAAM,SAAS,aAAa;AACrC;AACA,OAAO,UAAU,oBAAoB,SAAU,OAAO;AACpD,SAAO,MAAM,SAAS,MAAM;AAC9B;;;AChdI,SAOE,KAPF;AAFG,SAAS,iBAAiB,OAA8C;AAC7E,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAM;AAAA,MACN,OAAO;AAAA,MACP,QAAQ;AAAA,MACR,MAAK;AAAA,MACJ,GAAG;AAAA,MAEJ;AAAA;AAAA,UAAC;AAAA;AAAA,YACC,MAAK;AAAA,YACL,GAAE;AAAA;AAAA,QACJ;AAAA,QACA;AAAA,UAAC;AAAA;AAAA,YACC,QAAO;AAAA,YACP,GAAE;AAAA;AAAA,QACJ;AAAA;AAAA;AAAA,EACF;AAEJ;;;ACpBA,OAAO,QAAQ;AAwBT,SACE,OAAAC,MADF,QAAAC,aAAA;AAlBN,IAAM,KAAK;AAEX,IAAM,UAAmC,CAAC,EAAE,OAAO,MAAM,WAAW,SAAS,GAAG,MAAM;AACpF,SACE,gBAAAD;AAAA,IAAC;AAAA;AAAA,MACC,MAAK;AAAA,MACL,aAAU;AAAA,MACV,aAAU;AAAA,MACV,eAAa;AAAA,MACb,WAAW;AAAA,QACT;AAAA,QACA;AAAA,UACE,IAAI,SAAS;AAAA,UACb,IAAI,SAAS;AAAA,QACf;AAAA,QACA;AAAA,MACF;AAAA,MAEA,0BAAAC,MAAC,SAAI,WAAW,GAAG,YAAY,EAAE,CAAC,YAAY,IAAI,EAAE,GAAG,KAAK,CAAC,GAC3D;AAAA,wBAAAD,KAAC,SAAI;AAAA,QACL,gBAAAA,KAAC,SAAI;AAAA,QACL,gBAAAA,KAAC,SAAI;AAAA,QACL,gBAAAA,KAAC,SAAI;AAAA,SACP;AAAA;AAAA,EACF;AAEJ;AAEA,IAAO,kBAAQ;;;ACnCR,IAAM,yBAAyB;AAC/B,IAAM,4BAA4B;AAAA,EACvC,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,UAAU;AACZ;;;ACLO,IAAM,qBAAqB,CAAC,WAAoC,+BAA+B,MAAM;AAErG,SAAS,iBAAiB,QAA6C;AAC5E,SAAO,SAAS,eAAe,mBAAmB,MAAM,CAAC;AAC3D;AAEO,SAAS,gBAAoC;AAClD,SACE,SAAS,cAAc,UAAU,KAC9B,SAAS,cAAc,SAAS,KAChC,SAAS;AAEhB;AAEO,SAAS,kBAAkB,QAAyB,uBAAkC;AAC3F,QAAM,EAAE,UAAU,IAAI;AACtB,QAAM,gBAAgB,SAAS,cAAc,KAAK;AAElD,gBAAc,aAAa,MAAM,mBAAmB,MAAM,CAAC;AAC3D,gBAAc,UAAU,IAAI,iBAAiB;AAC7C,MAAI,UAAW,eAAc,UAAU,IAAI,SAAS;AAEpD,gBAAc,GAAG,OAAO,aAAa;AACvC;AAOO,SAAS,gBAA2B,WAA4C;AACrF,OAAK,YAAY;AACjB,OAAK,cAAc,WAAY;AAC7B,SAAK,UAAU,KAAK;AAAA,EACtB;AACF;AAEO,SAAS,sBAAiC,IAAqB,WAA4C;AAChH,OAAK,KAAK;AACV,OAAK,YAAY;AACjB,OAAK,cAAc,SAAU,OAAc;AACzC,QAAI,iBAAiB,KAAK,EAAE,GAAG;AAC7B,UAAI,CAAE,iBAAiB,KAAK,EAAE,EAAkB,SAAS,OAAO,MAAc,GAAG;AAC/E,aAAK,UAAU,KAAK;AAAA,MACtB;AAAA,IACF;AAAA,EACF;AACF;;;ALmFM,SAqJI,UA3IY,OAAAE,MAVhB,QAAAC,aAAA;AA7GN,IAAM,iBAAiB,oBAAI,IAA4B;AAEvD,IAAI,wBAAwB;AAE5B,IAAM,oBAAoB,CAAC;AAE3B,SAAS,kBAAwB;AAAC;AAMlC,IAAM,OAA6B,CAAC;AAAA,EAClC;AAAA,EACA,OAAO;AAAA,EACP;AAAA,EACA,gBAAgB;AAAA,EAChB,QAAQ;AAAA,EACR,UAAU;AAAA,EACV,iBAAiB;AAAA,EACjB;AAAA,EACA,eAAe;AAAA,EACf;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,kBAAkB;AAAA,EAClB,SAAS;AAAA,EACT,qBAAqB;AAAA,EACrB;AAAA,EACA,yBAAyB;AAC3B,MAAM;AACJ,QAAM,UAAU,OAAO,IAAI;AAC3B,QAAM,CAAC,MAAM,IAAI,SAAiB,MAAM,OAAO,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,MAAM,CAAC,CAAC;AAClF,QAAM,CAAC,gBAAgB,IAAI,SAA8B,EAAE,GAAG,2BAA2B,QAAQ,EAAE,OAAO,EAAE,CAAC;AAC7G,QAAM,CAAC,QAAQ,SAAS,IAAI,SAAkB,KAAK;AACnD,QAAM,CAAC,iBAAiB,kBAAkB,IAAI,SAAkB,KAAK;AAIrE,QAAM,CAAC,YAAY,IAAI,SAAS,IAAK,gBAAwB,SAAS,CAAC;AAEvE,QAAM,CAAC,kBAAkB,IAAI,SAAS,IAAK,sBAA8B,QAAQ,SAAS,CAAC;AAE3F,QAAM,kBAA2B,OAAO,oBAAoB;AAE5D,QAAM,SAAS;AAAA,IACb,cAAc,MAAY;AACxB,YAAM,WAAW,eAAe,IAAI,MAAM;AAC1C,UAAI,SAAU,cAAa,QAAQ;AAEnC,UAAI,mBAAmB,SAAS;AAC9B,cAAM,QAAQ,WAAW,MAAM;AAC7B,oBAAU,IAAI;AACd,WAAC,UAAU,kBAAkB;AAW7B,kBAAQ,SAAS,gBAAgB,IAAI,YAAY,wBAAwB,gBAAgB,CAAC;AAAA,QAC5F,GAAG,GAAG;AACN,uBAAe,IAAI,QAAQ,KAAK;AAAA,MAClC;AAAA,IACF;AAAA,IACA,cAAc,MAAY;AACxB,YAAM,WAAW,eAAe,IAAI,MAAM;AAC1C,UAAI,SAAU,cAAa,QAAQ;AAEnC,UAAI,CAAC,sBAAsB,mBAAmB,SAAS;AACrD,cAAM,QAAQ,WAAW,MAAM;AAC7B,oBAAU,KAAK;AACf,yBAAe,OAAO,MAAM;AAAA,QAC9B,GAAG,GAAI;AACP,uBAAe,IAAI,QAAQ,KAAK;AAAA,MAClC,WACS,sBAAsB,mBAAmB,SAAS;AACzD,cAAM,QAAQ,WAAW,MAAM;AAC7B,cAAI,CAAC,uBAAuB;AAC1B,sBAAU,KAAK;AAAA,UACjB;AACA,yBAAe,OAAO,MAAM;AAAA,QAC9B,GAAG,GAAG;AACN,uBAAe,IAAI,QAAQ,KAAK;AAAA,MAClC;AAAA,IACF;AAAA,IACA,8BAA8B,MAAY;AACxC,YAAM,WAAW,eAAe,IAAI,MAAM;AAC1C,UAAI,SAAU,cAAa,QAAQ;AAEnC,UAAI,sBAAsB,mBAAmB,SAAS;AACpD,cAAM,QAAQ,WAAW,MAAM;AAC7B,oBAAU,KAAK;AACf,kCAAwB;AACxB,yBAAe,OAAO,MAAM;AAAA,QAC9B,GAAG,GAAG;AACN,uBAAe,IAAI,QAAQ,KAAK;AAAA,MAClC;AAAA,IACF;AAAA,IACA,SAAS,yBAAyB,MAAY,UAAU,KAAK,IAAI,MAAY;AAAA,IAAC;AAAA,EAChF;AAEA,QAAM,gBAAgB,CAACC,eAA6C;AAClE,WACE,gBAAAD;AAAA,MAAC;AAAA;AAAA,QACC,eAAY;AAAA,QACZ,WAAWE,IAAG,cAAc,cAAc,IAAI,IAAI,SAASD,UAAS,QAAQ;AAAA,QAC5E,cAAc,MAAY;AACxB,cAAI,mBAAoB,yBAAwB;AAAA,QAClD;AAAA,QACA,cAAc,qBAAqB,OAAO,+BAA+B;AAAA,QACzE,SAAS,OAAO;AAAA,QAChB,OAAO,EAAE,YAAY,kBAAkB,YAAY,SAAS;AAAA,QAE3D;AAAA,uBAAa,gBAAAF,KAAC,mBAAQ,MAAK,SAAQ;AAAA,UACnC;AAAA,UACA;AAAA;AAAA;AAAA,IACH;AAAA,EAEJ;AAEA,QAAM,yBAAyB,MAAsB;AACnD,UAAM,KAAK,iBAAiB,MAAM;AAElC,QAAI,CAAC,MAAM,CAAC,OAAQ,QAAO;AAE3B,UAAM,EAAE,QAAQ,GAAG,MAAM,GAAG,OAAO,EAAE,IAAI,SAAS,YAAY,OAAQ,SAAS,SAAyB,sBAAsB,IAAI,CAAC;AACnI,UAAM,EAAE,UAAU,SAAS,OAAO,IAAI,iBAAiB,CAAC;AACxD,UAAM,mBAAmB,SAAS,gBAAgB;AAClD,UAAM,oBAAoB,SAAS,gBAAgB;AAEnD,UAAM,KAAK,GAAG,uBAAuB,YAAY,EAAE,CAAC;AACpD,UAAM,EAAE,OAAO,SAAS,QAAQ,SAAS,IAAI,IAAI,sBAAsB,KAAK,CAAC;AAE7E,OAAG,MAAM,QAAQ,WAAW,YAAY,CAAC,OAAO,MAAM,CAAC,QAAQ,IAAI,CAAC,WAAW,KAAK,QAAQ,SAAS,EAAE,OAAO,IAAI,IAAI;AACtH,OAAG,MAAM,OAAO,WAAW,WAAW,CAAC,OAAO,MAAM,CAAC,OAAO,IAAI,CAAC,UAAU,KAAK,OAAO,SAAS,EAAE,OAAO,IAAI,IAAI;AACjH,OAAG,MAAM,MAAM,WAAW,UAAU,CAAC,OAAO,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS,KAAK,MAAM,SAAS,EAAE,OAAO,IAAI,IAAI;AAC5G,OAAG,MAAM,YAAY,SAAS,UAAU,SAAS,EAAE,OAAO,IAAI,IAAI;AAIlE,UAAM,aAAa;AACnB,YAAQ,MAAM;AAAA,MACZ,KAAK;AAAA,MACL,KAAK;AACH,YAAI,MAAM,WAAY,aAAa,IAAK,GAAG;AACzC,aAAG,UAAU,OAAO,cAAc,IAAI,EAAE;AACxC,aAAG,UAAU,IAAI,cAAc,SAAS,QAAQ,WAAW,gBAAgB,EAAE;AAAA,QAC/E;AACA;AAAA,MAEF,KAAK;AAAA,MACL,KAAK;AACH,YAAI,MAAM,WAAW,aAAa,mBAAmB;AACnD,aAAG,UAAU,OAAO,cAAc,IAAI,EAAE;AACxC,aAAG,UAAU,IAAI,cAAc,SAAS,WAAW,QAAQ,aAAa,EAAE;AAAA,QAC5E;AACA;AAAA,MAEF,KAAK;AACH,YAAI,OAAO,UAAW,aAAa,IAAK,GAAG;AACzC,aAAG,UAAU,OAAO,cAAc,IAAI,EAAE;AACxC,aAAG,UAAU,IAAI,kBAAkB;AAAA,QACrC;AACA;AAAA,MAEF,KAAK;AAAA,MACL;AACE,YAAI,OAAO,QAAQ,UAAW,aAAa,IAAK,kBAAkB;AAChE,aAAG,UAAU,OAAO,cAAc,IAAI,EAAE;AACxC,aAAG,UAAU,IAAI,iBAAiB;AAAA,QACpC;AACA;AAAA,IACJ;AAEA,uBAAmB,IAAI;AAAA,EACzB;AAEA,QAAM,sBAAsB,CAACE,eAA4D;AACvF,UAAM,KAAK,iBAAiB,MAAM;AAClC,QAAI,CAAC,GAAI,QAAO;AAChB,WAAO,aAAa,cAAcA,UAAS,GAAG,EAAE;AAAA,EAClD;AAEA,EAAAE,WAAU,MAAM;AACd,sBAAkB,QAAQ,aAAa;AAGvC,UAAM,oBAAoB,CAAC,OAA8C;AACvE,YAAM,QAAQ;AACd,UAAI,OAAO,QAAQ,WAAW,QAAQ;AACpC,kBAAU,KAAK;AACf,cAAM,QAAQ,eAAe,IAAI,MAAM;AACvC,YAAI,OAAO;AACT,uBAAa,KAAK;AAClB,yBAAe,OAAO,MAAM;AAAA,QAC9B;AAAA,MACF;AACA,aAAO;AAAA,IACT;AAEA,QAAI,QAAQ,SAAS;AAEnB,eAAS,iBAAiB,wBAAwB,iBAAiB;AAAA,IACrE;AAEA,WAAO,MAAM;AACX,eAAS,oBAAoB,wBAAwB,iBAAiB;AACtE,YAAM,QAAQ,eAAe,IAAI,MAAM;AACvC,UAAI,OAAO;AACT,qBAAa,KAAK;AAClB,uBAAe,OAAO,MAAM;AAAA,MAC9B;AAAA,IACF;AAAA,EACF,GAAG,CAAC,CAAC;AAEL,EAAAA,WAAU,MAAM;AACd,uBAAmB,KAAK;AACxB,2BAAuB;AACvB,mBAAe,MAAM;AAErB,QAAI,QAAQ;AACV,eAAS,iBAAiB,UAAU,cAAc,IAAI;AACtD,eAAS,iBAAiB,SAAS,oBAAoB,IAAI;AAAA,IAC7D,OACK;AACH,eAAS,oBAAoB,UAAU,cAAc,IAAI;AACzD,eAAS,oBAAoB,SAAS,oBAAoB,IAAI;AAAA,IAChE;AAEA,WAAO,MAAM;AACX,YAAM,QAAQ,eAAe,IAAI,MAAM;AACvC,UAAI,OAAO;AACT,qBAAa,KAAK;AAClB,uBAAe,OAAO,MAAM;AAAA,MAC9B;AAAA,IACF;AAAA,EACF,GAAG,CAAC,MAAM,CAAC;AAEX,SACE,gBAAAH,MAAC,SAAI,eAAa,QAAQ,WAAWE,IAAG,QAAQ,SAAS,GAAG,KAAK,SAC/D;AAAA,oBAAAF;AAAA,MAAC;AAAA;AAAA,QACC,UAAU,kBAAkB,IAAI;AAAA,QAChC,eAAa,OAAO,UAAU,YAAY,MAAM,SAAS,MAAM,UAAU,OAAO,GAAG,IAAI,GAAG,MAAM;AAAA,QAChG,cAAY,mBAAmB,OAAO,UAAU,WAAW,QAAQ;AAAA,QACnE,SAAS,MACP,mBAAmB,YACf,kBAAkB,kBAAkB,IAAI,UAAU,CAAC,MAAM;AAAA,QAC/D,cAAc,OAAO;AAAA,QACrB,cAAc,OAAO;AAAA,QACrB,WAAWE,IAAG,gBAAgB,EAAE,qBAAqB,OAAO,CAAC;AAAA,QAE5D;AAAA,kBAAQ,SAAS,QAChB,gBAAAF,MAAA,YACG;AAAA,wBAAY,cAAc,gBAAAD,KAAC,cAAW,OAAO,IAAI,QAAQ,IAAI,WAAU,uBAAsB;AAAA,YAC7F,YAAY,YAAY,gBAAAA,KAAC,oBAAiB,WAAU,qBAAoB;AAAA,YACxE,YAAY,aACX,gBAAAA,KAAC,iBAAc,WAAU,cAAa,OAAM,WAAU,OAAO,IAAI,QAAQ,IAAI;AAAA,aAEjF;AAAA,UAGD,SACC,gBAAAA,KAAC,UAAK,WAAWG,IAAG,eAAe,EAAE,kBAAkB,OAAO,CAAC,GAC5D,iBAAO,UAAU,WAAW,YAAY,KAAK,IAAI,OACpD;AAAA;AAAA;AAAA,IAEJ;AAAA,IAEC,UAAU,oBAAoB,SAAS;AAAA,KAC1C;AAEJ;AAEA,IAAO,eAAQ;;;ADrQP,gBAAAE,MASA,QAAAC,aATA;AA5BR,SAAS,OAAO;AAAA,EACd;AAAA,EACA,OAAO;AAAA,EACP,UAAU;AAAA,EACV,SAAS;AAAA,EACT,MAAM;AAAA,EACN,YAAY;AAAA,EACZ,WAAW;AACb,GAA+B;AAC7B,QAAM,CAAC,QAAQ,SAAS,IAAIC,UAAS,KAAK;AAE1C,QAAM,WAAWC,QAAO,IAAI;AAE5B,QAAM,SAAS;AAAA,IACb,YAAY,MAAM;AAChB,UAAI,CAAC,OAAQ,WAAU,CAAC,MAAM;AAAA,IAChC;AAAA,IACA,WAAW,MAAM;AACf,iBAAW,MAAM,UAAU,KAAK,GAAG,EAAE;AAAA,IACvC;AAAA,IACA,QAAQ,MAAM;AACZ,aAAO,WAAW;AAAA,IACpB;AAAA,EACF;AAEA,SACE,gBAAAF,MAAC,YAAO,WAAWG,IAAG,UAAU,SAAS,GACvC;AAAA,oBAAAJ,KAAC,SAAI,WAAU,MACb,0BAAAA;AAAA,MAAC;AAAA;AAAA,QACC,MAAK;AAAA,QACL,MAAM;AAAA,QACN,WAAU;AAAA,QACV,OAAO;AAAA;AAAA,IACT,GACF;AAAA,IAEA,gBAAAC,MAAC,SAAI,WAAU,gBACb;AAAA,sBAAAA,MAAC,SAAI,SAAS,MAAM;AAAA,MAAC,GAAG,WAAU,gBAChC;AAAA,wBAAAD,KAAC,QAAK,WAAU,qBAAoB;AAAA,QACpC,gBAAAA,KAAC,SAAI,WAAU,kCAAiC;AAAA,SAClD;AAAA,MAEA,gBAAAA,KAAC,SAAI,WAAU,oBACZ,iBAAO,gBAAAA,KAAC,SAAI,KAAK,KAAK,KAAI,eAAc,GAC3C;AAAA,MAEA,gBAAAC,MAAC,SAAI,WAAU,YACb;AAAA,wBAAAA,MAAC,UAAK,WAAU,qBACb;AAAA;AAAA,UACA;AAAA,UACA;AAAA,WACH;AAAA,QACA,gBAAAD,KAAC,UAAK,WAAU,uBAAuB,kBAAO;AAAA,SAChD;AAAA,MAEA,gBAAAA;AAAA,QAAC;AAAA;AAAA,UACC,SAAS,OAAO;AAAA,UAChB,eAAY;AAAA,UACZ,WAAWI,IAAG,4BAA4B;AAAA,YACxC,iCAAiC;AAAA,UACnC,CAAC;AAAA;AAAA,MACH;AAAA,MACC,UACC,gBAAAJ,KAAC,SAAI,WAAU,uBAAsB,KAAK,UACxC,0BAAAC,MAAC,SAAI,WAAU,mBAAkB,SAAS,OAAO,QAC/C;AAAA,wBAAAD,KAAC,SAAM,WAAU,QAAO;AAAA,QACvB;AAAA,QAAI;AAAA,SAEP,GACF;AAAA,OAEJ;AAAA,KACF;AAEJ;AAEA,IAAO,iBAAQ;;;AOrFf,IAAOK,mBAAQ;",
|
|
6
|
-
"names": ["cn", "useRef", "useState", "cn", "useEffect", "jsx", "jsxs", "jsx", "jsxs", "className", "cn", "useEffect", "jsx", "jsxs", "useState", "useRef", "cn", "Spinner_default"]
|
|
7
|
-
}
|