fui-material 2.8.13 → 2.8.14
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/f-ui-kit.es.js +422 -259
- package/dist/f-ui-kit.es.js.map +1 -1
- package/dist/f-ui-kit.umd.js +2 -2
- package/dist/f-ui-kit.umd.js.map +1 -1
- package/dist/index.css +1 -1
- package/dist/types/material/FImagePreview/FImagePreview.d.ts +10 -0
- package/dist/types/material/FImagePreview/index.d.ts +1 -0
- package/dist/types/material/FOpenImgFull/FOpenImgFull.d.ts +0 -85
- package/dist/types/material/FVideoPlayer/FVideoPlayer.d.ts +9 -0
- package/dist/types/material/FVideoPlayer/index.d.ts +1 -0
- package/dist/types/material/index.d.ts +2 -0
- package/package.json +1 -1
package/dist/f-ui-kit.es.js
CHANGED
|
@@ -9,7 +9,7 @@ import { initializeModule as initializeModule$1, installFormatCode } from "allor
|
|
|
9
9
|
import { useQueryClient, useMutation, useQuery } from "@tanstack/react-query";
|
|
10
10
|
import './index.css';const btn = "_btn_gdyy6_1";
|
|
11
11
|
const disabled$4 = "_disabled_gdyy6_31";
|
|
12
|
-
const styles$
|
|
12
|
+
const styles$D = {
|
|
13
13
|
btn,
|
|
14
14
|
disabled: disabled$4,
|
|
15
15
|
"btn-xs": "_btn-xs_gdyy6_40",
|
|
@@ -55,9 +55,9 @@ const FButton = forwardRef(({
|
|
|
55
55
|
};
|
|
56
56
|
const variantClass = variant === "contained" ? `btn-${color}` : `btn-outline-${color}`;
|
|
57
57
|
const buttonClasses = [
|
|
58
|
-
styles$
|
|
59
|
-
styles$
|
|
60
|
-
styles$
|
|
58
|
+
styles$D["btn"],
|
|
59
|
+
styles$D[size],
|
|
60
|
+
styles$D[variantClass],
|
|
61
61
|
className
|
|
62
62
|
].filter(Boolean).join(" ");
|
|
63
63
|
return /* @__PURE__ */ jsx(
|
|
@@ -123,7 +123,7 @@ FTrashIcon.displayName = "FTrashIcon";
|
|
|
123
123
|
const progressBar = "_progressBar_1iwax_48";
|
|
124
124
|
const completed = "_completed_1iwax_60";
|
|
125
125
|
const progress = "_progress_1iwax_48";
|
|
126
|
-
const styles$
|
|
126
|
+
const styles$C = {
|
|
127
127
|
"file-preview-card": "_file-preview-card_1iwax_1",
|
|
128
128
|
"file-preview-info": "_file-preview-info_1iwax_22",
|
|
129
129
|
"file-preview-name": "_file-preview-name_1iwax_28",
|
|
@@ -145,18 +145,18 @@ const FFile = ({
|
|
|
145
145
|
return /* @__PURE__ */ jsxs(
|
|
146
146
|
"div",
|
|
147
147
|
{
|
|
148
|
-
className: `${styles$
|
|
148
|
+
className: `${styles$C["file-preview-card"]} ${className || ""}`,
|
|
149
149
|
id,
|
|
150
150
|
style: st,
|
|
151
151
|
children: [
|
|
152
|
-
/* @__PURE__ */ jsxs("div", { className: styles$
|
|
153
|
-
/* @__PURE__ */ jsx("span", { className: styles$
|
|
154
|
-
typeof size === "number" && /* @__PURE__ */ jsxs("span", { className: styles$
|
|
152
|
+
/* @__PURE__ */ jsxs("div", { className: styles$C["file-preview-info"], children: [
|
|
153
|
+
/* @__PURE__ */ jsx("span", { className: styles$C["file-preview-name"], title: name, children: name }),
|
|
154
|
+
typeof size === "number" && /* @__PURE__ */ jsxs("span", { className: styles$C["file-preview-size"], children: [
|
|
155
155
|
Math.round(size / 1024),
|
|
156
156
|
" КБ"
|
|
157
157
|
] })
|
|
158
158
|
] }),
|
|
159
|
-
handleDelete && /* @__PURE__ */ jsx("div", { className: styles$
|
|
159
|
+
handleDelete && /* @__PURE__ */ jsx("div", { className: styles$C["trash-icon"], children: /* @__PURE__ */ jsx(
|
|
160
160
|
FTrashIcon,
|
|
161
161
|
{
|
|
162
162
|
size: 20,
|
|
@@ -164,10 +164,10 @@ const FFile = ({
|
|
|
164
164
|
handleClick: handleDelete
|
|
165
165
|
}
|
|
166
166
|
) }),
|
|
167
|
-
typeof progress2 === "number" && /* @__PURE__ */ jsx("div", { className: `${styles$
|
|
167
|
+
typeof progress2 === "number" && /* @__PURE__ */ jsx("div", { className: `${styles$C.progressBar} ${progress2 === 100 ? styles$C.completed : ""}`, children: /* @__PURE__ */ jsx(
|
|
168
168
|
"div",
|
|
169
169
|
{
|
|
170
|
-
className: styles$
|
|
170
|
+
className: styles$C.progress,
|
|
171
171
|
style: { width: `${progress2}%` }
|
|
172
172
|
}
|
|
173
173
|
) })
|
|
@@ -270,7 +270,7 @@ const FButtonFile = ({
|
|
|
270
270
|
)) }) })
|
|
271
271
|
] });
|
|
272
272
|
};
|
|
273
|
-
const styles$
|
|
273
|
+
const styles$B = {
|
|
274
274
|
"f-text-field": "_f-text-field_200bb_1"
|
|
275
275
|
};
|
|
276
276
|
const FLoadIcon = React.forwardRef(({
|
|
@@ -349,7 +349,7 @@ const FTextField = forwardRef(
|
|
|
349
349
|
return /* @__PURE__ */ jsxs(
|
|
350
350
|
"div",
|
|
351
351
|
{
|
|
352
|
-
className: `f-form-element ${styles$
|
|
352
|
+
className: `f-form-element ${styles$B["f-text-field"]} ${className || ""}`,
|
|
353
353
|
style: mergedStyle,
|
|
354
354
|
role: "group",
|
|
355
355
|
id: inputId + "-text-field-block",
|
|
@@ -455,7 +455,7 @@ const FStack = ({
|
|
|
455
455
|
}
|
|
456
456
|
);
|
|
457
457
|
};
|
|
458
|
-
const styles$
|
|
458
|
+
const styles$A = {
|
|
459
459
|
"f-grid": "_f-grid_3g4xh_1",
|
|
460
460
|
"f-grid__col": "_f-grid__col_3g4xh_10",
|
|
461
461
|
"f-grid__col--auto": "_f-grid__col--auto_3g4xh_16",
|
|
@@ -558,21 +558,21 @@ const FGrid = ({
|
|
|
558
558
|
xxl: xxl ?? xl ?? lg ?? md ?? sm ?? xs
|
|
559
559
|
};
|
|
560
560
|
const getColumnClasses = () => {
|
|
561
|
-
if (colAuto) return styles$
|
|
562
|
-
const classes = [styles$
|
|
563
|
-
if (resolvedSizes.xs !== void 0) classes.push(styles$
|
|
564
|
-
if (resolvedSizes.sm !== void 0) classes.push(styles$
|
|
565
|
-
if (resolvedSizes.md !== void 0) classes.push(styles$
|
|
566
|
-
if (resolvedSizes.lg !== void 0) classes.push(styles$
|
|
567
|
-
if (resolvedSizes.xl !== void 0) classes.push(styles$
|
|
568
|
-
if (resolvedSizes.xxl !== void 0) classes.push(styles$
|
|
561
|
+
if (colAuto) return styles$A["f-grid__col--auto"];
|
|
562
|
+
const classes = [styles$A["f-grid__col"]];
|
|
563
|
+
if (resolvedSizes.xs !== void 0) classes.push(styles$A[`f-grid__col--xs-${resolvedSizes.xs}`]);
|
|
564
|
+
if (resolvedSizes.sm !== void 0) classes.push(styles$A[`f-grid__col--sm-${resolvedSizes.sm}`]);
|
|
565
|
+
if (resolvedSizes.md !== void 0) classes.push(styles$A[`f-grid__col--md-${resolvedSizes.md}`]);
|
|
566
|
+
if (resolvedSizes.lg !== void 0) classes.push(styles$A[`f-grid__col--lg-${resolvedSizes.lg}`]);
|
|
567
|
+
if (resolvedSizes.xl !== void 0) classes.push(styles$A[`f-grid__col--xl-${resolvedSizes.xl}`]);
|
|
568
|
+
if (resolvedSizes.xxl !== void 0) classes.push(styles$A[`f-grid__col--xxl-${resolvedSizes.xxl}`]);
|
|
569
569
|
return classes.join(" ");
|
|
570
570
|
};
|
|
571
571
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
572
572
|
obj === "container" && /* @__PURE__ */ jsx(
|
|
573
573
|
"div",
|
|
574
574
|
{
|
|
575
|
-
className: `${styles$
|
|
575
|
+
className: `${styles$A["f-grid"]} ${className || ""}`,
|
|
576
576
|
style,
|
|
577
577
|
id,
|
|
578
578
|
children
|
|
@@ -590,7 +590,7 @@ const FGrid = ({
|
|
|
590
590
|
obj === void 0 && /* @__PURE__ */ jsx("div", { className, style, id, children })
|
|
591
591
|
] });
|
|
592
592
|
};
|
|
593
|
-
const styles$
|
|
593
|
+
const styles$z = {
|
|
594
594
|
"f-grid-row": "_f-grid-row_1crbx_1",
|
|
595
595
|
"f-grid-row--justify-start": "_f-grid-row--justify-start_1crbx_7",
|
|
596
596
|
"f-grid-row--justify-center": "_f-grid-row--justify-center_1crbx_10",
|
|
@@ -612,21 +612,21 @@ const FGridRow = ({
|
|
|
612
612
|
}) => {
|
|
613
613
|
const getJustifyContentClass = () => {
|
|
614
614
|
if (!justifyContent) return "";
|
|
615
|
-
return styles$
|
|
615
|
+
return styles$z[`f-grid-row--justify-${justifyContent}`];
|
|
616
616
|
};
|
|
617
617
|
const getAlignItemsClass = () => {
|
|
618
618
|
if (!alignItems) return "";
|
|
619
|
-
return styles$
|
|
619
|
+
return styles$z[`f-grid-row--align-${alignItems}`];
|
|
620
620
|
};
|
|
621
621
|
const rowClasses = [
|
|
622
|
-
styles$
|
|
622
|
+
styles$z["f-grid-row"],
|
|
623
623
|
getJustifyContentClass(),
|
|
624
624
|
getAlignItemsClass(),
|
|
625
625
|
className
|
|
626
626
|
].filter(Boolean).join(" ");
|
|
627
627
|
return /* @__PURE__ */ jsx("div", { className: rowClasses, style: st, id, children });
|
|
628
628
|
};
|
|
629
|
-
const styles$
|
|
629
|
+
const styles$y = {
|
|
630
630
|
"f-container": "_f-container_g9ck3_1",
|
|
631
631
|
"container-fluid": "_container-fluid_g9ck3_1",
|
|
632
632
|
"container-xxl": "_container-xxl_g9ck3_1",
|
|
@@ -646,7 +646,7 @@ const FContainer = ({
|
|
|
646
646
|
return /* @__PURE__ */ jsx(
|
|
647
647
|
"div",
|
|
648
648
|
{
|
|
649
|
-
className: `${styles$
|
|
649
|
+
className: `${styles$y["f-container"]} ${styles$y[maxWidth]} ${className || ""}`,
|
|
650
650
|
style: st,
|
|
651
651
|
id,
|
|
652
652
|
children
|
|
@@ -654,7 +654,7 @@ const FContainer = ({
|
|
|
654
654
|
);
|
|
655
655
|
};
|
|
656
656
|
const panel = "_panel_q7in0_1";
|
|
657
|
-
const styles$
|
|
657
|
+
const styles$x = {
|
|
658
658
|
panel,
|
|
659
659
|
"panel-default": "_panel-default_q7in0_6",
|
|
660
660
|
"panel-heading": "_panel-heading_q7in0_12",
|
|
@@ -687,15 +687,15 @@ const FPaper = ({
|
|
|
687
687
|
return /* @__PURE__ */ jsxs(
|
|
688
688
|
"div",
|
|
689
689
|
{
|
|
690
|
-
className: `${styles$
|
|
690
|
+
className: `${styles$x["panel"]} ${styles$x["panel-default"]} ${className || ""} ${animated ? `${styles$x[`animated-${animated.name}`]} ${animated.name}` : ""}`,
|
|
691
691
|
style: st,
|
|
692
692
|
id,
|
|
693
693
|
onAnimationEnd,
|
|
694
694
|
children: [
|
|
695
|
-
label && /* @__PURE__ */ jsx("div", { className: styles$
|
|
695
|
+
label && /* @__PURE__ */ jsx("div", { className: styles$x["panel-heading"], children: /* @__PURE__ */ jsx(
|
|
696
696
|
"h3",
|
|
697
697
|
{
|
|
698
|
-
className: styles$
|
|
698
|
+
className: styles$x["panel-title"],
|
|
699
699
|
style: { fontSize: fontSizeLabel },
|
|
700
700
|
children: label
|
|
701
701
|
}
|
|
@@ -703,7 +703,7 @@ const FPaper = ({
|
|
|
703
703
|
/* @__PURE__ */ jsx(
|
|
704
704
|
"div",
|
|
705
705
|
{
|
|
706
|
-
className: styles$
|
|
706
|
+
className: styles$x["panel-body"],
|
|
707
707
|
style: { fontSize: fontSizeBody },
|
|
708
708
|
children
|
|
709
709
|
}
|
|
@@ -713,12 +713,12 @@ const FPaper = ({
|
|
|
713
713
|
);
|
|
714
714
|
};
|
|
715
715
|
const TableControlsContext = createContext({ query: "", sort: null });
|
|
716
|
-
const left$
|
|
716
|
+
const left$2 = "_left_nsv5n_81";
|
|
717
717
|
const center = "_center_nsv5n_84";
|
|
718
|
-
const right = "_right_nsv5n_87";
|
|
718
|
+
const right$1 = "_right_nsv5n_87";
|
|
719
719
|
const justify = "_justify_nsv5n_90";
|
|
720
720
|
const more = "_more_nsv5n_198";
|
|
721
|
-
const styles$
|
|
721
|
+
const styles$w = {
|
|
722
722
|
"f-table-component": "_f-table-component_nsv5n_1",
|
|
723
723
|
"f-table-component__table": "_f-table-component__table_nsv5n_14",
|
|
724
724
|
"f-table-component__table_header": "_f-table-component__table_header_nsv5n_22",
|
|
@@ -729,9 +729,9 @@ const styles$u = {
|
|
|
729
729
|
"f-table-component__table_row": "_f-table-component__table_row_nsv5n_64",
|
|
730
730
|
"f-table-component__table_row_no-hover": "_f-table-component__table_row_no-hover_nsv5n_64",
|
|
731
731
|
"f-table-component__table_footer": "_f-table-component__table_footer_nsv5n_71",
|
|
732
|
-
left: left$
|
|
732
|
+
left: left$2,
|
|
733
733
|
center,
|
|
734
|
-
right,
|
|
734
|
+
right: right$1,
|
|
735
735
|
justify,
|
|
736
736
|
"cell-text": "_cell-text_nsv5n_94",
|
|
737
737
|
"cell-preview-text": "_cell-preview-text_nsv5n_115",
|
|
@@ -761,7 +761,7 @@ const FTableHead = ({
|
|
|
761
761
|
{
|
|
762
762
|
style: st,
|
|
763
763
|
...props,
|
|
764
|
-
className: `${styles$
|
|
764
|
+
className: `${styles$w["f-table-component__table_header"]} ${isSticky ? styles$w["is-sticky"] : ""} ${props.className || ""} ${styles$w[textAlignment]}`,
|
|
765
765
|
children
|
|
766
766
|
}
|
|
767
767
|
);
|
|
@@ -871,7 +871,7 @@ const FTableBody = ({
|
|
|
871
871
|
const { query, sort } = useContext(TableControlsContext);
|
|
872
872
|
const index = useMemo(() => indexTableRows(children), [children]);
|
|
873
873
|
const rows = useMemo(() => selectTableRows(index, query, sort), [index, query, sort]);
|
|
874
|
-
const [
|
|
874
|
+
const [viewport2, setViewport] = useState({ top: 0, height: 0 });
|
|
875
875
|
const [heights, setHeights] = useState(() => /* @__PURE__ */ new Map());
|
|
876
876
|
const virtual = Boolean(tableWrapperRef) && visibleRowCount !== void 0 && Number.isFinite(visibleRowCount) && visibleRowCount >= 1 && !index.hasRowSpans;
|
|
877
877
|
const keyOf = (row, index2) => React.isValidElement(row) ? String(row.key ?? index2) : String(index2);
|
|
@@ -880,7 +880,7 @@ const FTableBody = ({
|
|
|
880
880
|
if (virtual) rows.forEach((row, index2) => result.push(result[index2] + (heights.get(keyOf(row, index2)) ?? 32)));
|
|
881
881
|
return result;
|
|
882
882
|
}, [rows, heights, virtual]);
|
|
883
|
-
const { start, end } = virtual ? virtualRowRange(offsets,
|
|
883
|
+
const { start, end } = virtual ? virtualRowRange(offsets, viewport2.top, viewport2.height, visibleRowCount) : { start: 0, end: rows.length };
|
|
884
884
|
const visibleRows = useMemo(() => rows.slice(start, end), [rows, start, end]);
|
|
885
885
|
useLayoutEffect(() => {
|
|
886
886
|
setViewport((previous) => ({ ...previous, top: 0 }));
|
|
@@ -956,14 +956,14 @@ const FTableBody = ({
|
|
|
956
956
|
ref: tableBodyRef,
|
|
957
957
|
style: st,
|
|
958
958
|
...props,
|
|
959
|
-
className: `${styles$
|
|
959
|
+
className: `${styles$w["f-table-component__table_body"]} ${props.className || ""} ${styles$w[textAlignment]}`,
|
|
960
960
|
children: [
|
|
961
961
|
virtual && start > 0 && /* @__PURE__ */ jsx("tr", { "aria-hidden": "true", children: /* @__PURE__ */ jsx("td", { colSpan: index.columnCount, style: { height: offsets[start], padding: 0, border: 0 } }) }),
|
|
962
962
|
visibleRows.map((child, index2) => React.isValidElement(child) ? React.cloneElement(child, {
|
|
963
963
|
"data-row-index": start + index2,
|
|
964
964
|
"data-table-row-key": keyOf(child, start + index2)
|
|
965
965
|
}) : child),
|
|
966
|
-
query.trim() && rows.length === 0 && /* @__PURE__ */ jsx("tr", { children: /* @__PURE__ */ jsx("td", { colSpan: index.columnCount, className: styles$
|
|
966
|
+
query.trim() && rows.length === 0 && /* @__PURE__ */ jsx("tr", { children: /* @__PURE__ */ jsx("td", { colSpan: index.columnCount, className: styles$w["table-empty"], children: /* @__PURE__ */ jsx("span", { role: "status", children: "Ничего не найдено" }) }) }),
|
|
967
967
|
virtual && end < rows.length && /* @__PURE__ */ jsx("tr", { "aria-hidden": "true", children: /* @__PURE__ */ jsx("td", { colSpan: index.columnCount, style: { height: offsets[rows.length] - offsets[end], padding: 0, border: 0 } }) })
|
|
968
968
|
]
|
|
969
969
|
}
|
|
@@ -1013,7 +1013,7 @@ const FTable = ({
|
|
|
1013
1013
|
};
|
|
1014
1014
|
}, []);
|
|
1015
1015
|
return /* @__PURE__ */ jsxs(TableControlsContext.Provider, { value: controls, children: [
|
|
1016
|
-
searchable && /* @__PURE__ */ jsx("div", { className: styles$
|
|
1016
|
+
searchable && /* @__PURE__ */ jsx("div", { className: styles$w["table-tools"], children: /* @__PURE__ */ jsxs("label", { className: styles$w["table-search"], children: [
|
|
1017
1017
|
/* @__PURE__ */ jsxs("svg", { width: "13", height: "13", viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: "2", "aria-hidden": "true", children: [
|
|
1018
1018
|
/* @__PURE__ */ jsx("circle", { cx: "11", cy: "11", r: "7" }),
|
|
1019
1019
|
/* @__PURE__ */ jsx("path", { d: "m20 20-3.5-3.5" })
|
|
@@ -1036,7 +1036,7 @@ const FTable = ({
|
|
|
1036
1036
|
"div",
|
|
1037
1037
|
{
|
|
1038
1038
|
ref: tableWrapperRef,
|
|
1039
|
-
className: styles$
|
|
1039
|
+
className: styles$w["f-table-component"],
|
|
1040
1040
|
style: { overflowX, overflowY },
|
|
1041
1041
|
children: /* @__PURE__ */ jsx(
|
|
1042
1042
|
"table",
|
|
@@ -1048,7 +1048,7 @@ const FTable = ({
|
|
|
1048
1048
|
...st
|
|
1049
1049
|
},
|
|
1050
1050
|
...props,
|
|
1051
|
-
className: `table ${styles$
|
|
1051
|
+
className: `table ${styles$w["f-table-component__table"]} ${props.className || ""}`,
|
|
1052
1052
|
children: React.Children.map(children, (child) => {
|
|
1053
1053
|
if (React.isValidElement(child) && child.type === FTableHead) {
|
|
1054
1054
|
const headProps = child.props;
|
|
@@ -1087,14 +1087,14 @@ const FTableRow = ({
|
|
|
1087
1087
|
...props
|
|
1088
1088
|
}) => {
|
|
1089
1089
|
const rowClasses = [
|
|
1090
|
-
styles$
|
|
1090
|
+
styles$w["f-table-component__table_row"],
|
|
1091
1091
|
props.className || ""
|
|
1092
1092
|
];
|
|
1093
1093
|
if (disableHover) {
|
|
1094
|
-
rowClasses.push(styles$
|
|
1094
|
+
rowClasses.push(styles$w["f-table-component__table_row_no-hover"]);
|
|
1095
1095
|
}
|
|
1096
1096
|
if (textAlignment !== void 0) {
|
|
1097
|
-
rowClasses.push(styles$
|
|
1097
|
+
rowClasses.push(styles$w[textAlignment]);
|
|
1098
1098
|
}
|
|
1099
1099
|
return /* @__PURE__ */ jsx(
|
|
1100
1100
|
"tr",
|
|
@@ -1142,13 +1142,13 @@ const FTableHeaderCell = ({
|
|
|
1142
1142
|
colSpan: col && col > 1 ? col : void 0,
|
|
1143
1143
|
...props,
|
|
1144
1144
|
"aria-sort": sortable ? direction ?? "none" : props["aria-sort"],
|
|
1145
|
-
className: `${styles$
|
|
1145
|
+
className: `${styles$w["f-table-component__table_header-cell"]} ${props.className || ""}`,
|
|
1146
1146
|
style,
|
|
1147
1147
|
children: sortable ? /* @__PURE__ */ jsxs(
|
|
1148
1148
|
"button",
|
|
1149
1149
|
{
|
|
1150
1150
|
type: "button",
|
|
1151
|
-
className: styles$
|
|
1151
|
+
className: styles$w["table-sort"],
|
|
1152
1152
|
onClick: () => toggleSort == null ? void 0 : toggleSort(sortKey),
|
|
1153
1153
|
title: direction === "ascending" ? "По убыванию" : direction === "descending" ? "Исходный порядок" : "По возрастанию",
|
|
1154
1154
|
children: [
|
|
@@ -1212,7 +1212,7 @@ function FTableTextTooltip({ text, enabled, children }) {
|
|
|
1212
1212
|
"span",
|
|
1213
1213
|
{
|
|
1214
1214
|
ref: anchor,
|
|
1215
|
-
className: styles$
|
|
1215
|
+
className: styles$w["cell-tooltip-anchor"],
|
|
1216
1216
|
onMouseEnter: show,
|
|
1217
1217
|
onMouseLeave: hide2,
|
|
1218
1218
|
onFocus: show,
|
|
@@ -1225,7 +1225,7 @@ function FTableTextTooltip({ text, enabled, children }) {
|
|
|
1225
1225
|
ref: panel2,
|
|
1226
1226
|
id,
|
|
1227
1227
|
role: "tooltip",
|
|
1228
|
-
className: styles$
|
|
1228
|
+
className: styles$w["cell-tooltip"],
|
|
1229
1229
|
style: position,
|
|
1230
1230
|
onMouseEnter: show,
|
|
1231
1231
|
onMouseLeave: hide2,
|
|
@@ -1273,20 +1273,20 @@ const FTableDataCell = ({
|
|
|
1273
1273
|
rowSpan: row && row > 1 ? row : void 0,
|
|
1274
1274
|
colSpan: col && col > 1 ? col : void 0,
|
|
1275
1275
|
...props,
|
|
1276
|
-
className: `${styles$
|
|
1276
|
+
className: `${styles$w["f-table-component__table_body-cell"]} ${props.className || ""}`.trim(),
|
|
1277
1277
|
style,
|
|
1278
1278
|
children: collapsible ? /* @__PURE__ */ jsx(FTableTextTooltip, { text, enabled: !expanded, children: /* @__PURE__ */ jsxs(
|
|
1279
1279
|
"button",
|
|
1280
1280
|
{
|
|
1281
1281
|
type: "button",
|
|
1282
|
-
className: styles$
|
|
1282
|
+
className: styles$w["cell-text"],
|
|
1283
1283
|
"aria-expanded": expanded,
|
|
1284
1284
|
"aria-controls": textId,
|
|
1285
1285
|
"data-expanded": expanded,
|
|
1286
1286
|
onClick: () => setExpanded((value) => !value),
|
|
1287
1287
|
children: [
|
|
1288
|
-
/* @__PURE__ */ jsx("span", { className: styles$
|
|
1289
|
-
/* @__PURE__ */ jsx("span", { className: styles$
|
|
1288
|
+
/* @__PURE__ */ jsx("span", { className: styles$w["cell-preview"], "aria-hidden": "true", children: /* @__PURE__ */ jsx("span", { className: styles$w["cell-preview-text"], children: text }) }),
|
|
1289
|
+
/* @__PURE__ */ jsx("span", { className: styles$w["cell-reveal"], children: /* @__PURE__ */ jsx("span", { id: textId, children: text }) })
|
|
1290
1290
|
]
|
|
1291
1291
|
}
|
|
1292
1292
|
) }) : children
|
|
@@ -1303,19 +1303,19 @@ const FTableFooter = ({
|
|
|
1303
1303
|
{
|
|
1304
1304
|
style: st,
|
|
1305
1305
|
...props,
|
|
1306
|
-
className: `${styles$
|
|
1306
|
+
className: `${styles$w["f-table-component__table_footer"]} ${props.className || ""}`,
|
|
1307
1307
|
children
|
|
1308
1308
|
}
|
|
1309
1309
|
);
|
|
1310
1310
|
};
|
|
1311
|
-
const entering = "_entering_g7izy_19";
|
|
1312
|
-
const exiting = "_exiting_g7izy_25";
|
|
1311
|
+
const entering$2 = "_entering_g7izy_19";
|
|
1312
|
+
const exiting$2 = "_exiting_g7izy_25";
|
|
1313
1313
|
const hide = "_hide_g7izy_50";
|
|
1314
|
-
const styles$
|
|
1314
|
+
const styles$v = {
|
|
1315
1315
|
"f-dialog": "_f-dialog_g7izy_1",
|
|
1316
|
-
entering,
|
|
1316
|
+
entering: entering$2,
|
|
1317
1317
|
"f-dialog__content": "_f-dialog__content_g7izy_22",
|
|
1318
|
-
exiting,
|
|
1318
|
+
exiting: exiting$2,
|
|
1319
1319
|
hide,
|
|
1320
1320
|
"f-dialog__header": "_f-dialog__header_g7izy_61",
|
|
1321
1321
|
"f-dialog__header_title": "_f-dialog__header_title_g7izy_73",
|
|
@@ -1391,14 +1391,14 @@ const FDialog = ({
|
|
|
1391
1391
|
adaptive: "fit-content"
|
|
1392
1392
|
};
|
|
1393
1393
|
const contentWidth = widthStyles[width];
|
|
1394
|
-
const animationClass = isClosing ? styles$
|
|
1394
|
+
const animationClass = isClosing ? styles$v["exiting"] : styles$v["entering"];
|
|
1395
1395
|
return ReactDOM.createPortal(
|
|
1396
1396
|
/* @__PURE__ */ jsx(
|
|
1397
1397
|
"div",
|
|
1398
1398
|
{
|
|
1399
1399
|
id,
|
|
1400
1400
|
style: st,
|
|
1401
|
-
className: `${styles$
|
|
1401
|
+
className: `${styles$v["f-dialog"]} ${animationClass} ${className || ""}`,
|
|
1402
1402
|
onMouseDown: (e) => {
|
|
1403
1403
|
if (e.target === e.currentTarget) {
|
|
1404
1404
|
closeButtonBackPage == null ? void 0 : closeButtonBackPage(false);
|
|
@@ -1408,7 +1408,7 @@ const FDialog = ({
|
|
|
1408
1408
|
children: /* @__PURE__ */ jsx(
|
|
1409
1409
|
"div",
|
|
1410
1410
|
{
|
|
1411
|
-
className: `${styles$
|
|
1411
|
+
className: `${styles$v["f-dialog__content"]} ${hide2 ? styles$v["hide"] : ""}`,
|
|
1412
1412
|
style: {
|
|
1413
1413
|
width: contentWidth
|
|
1414
1414
|
},
|
|
@@ -1449,13 +1449,13 @@ const FCloseIcon = React.forwardRef(({
|
|
|
1449
1449
|
});
|
|
1450
1450
|
FCloseIcon.displayName = "FCloseIcon";
|
|
1451
1451
|
const FDialogHeader = ({ title: title2, handleClose }) => {
|
|
1452
|
-
return /* @__PURE__ */ jsxs("div", { className: styles$
|
|
1453
|
-
/* @__PURE__ */ jsx("h3", { className: styles$
|
|
1452
|
+
return /* @__PURE__ */ jsxs("div", { className: styles$v["f-dialog__header"], children: [
|
|
1453
|
+
/* @__PURE__ */ jsx("h3", { className: styles$v["f-dialog__header_title"], children: title2 }),
|
|
1454
1454
|
handleClose && /* @__PURE__ */ jsx(
|
|
1455
1455
|
"button",
|
|
1456
1456
|
{
|
|
1457
1457
|
type: "button",
|
|
1458
|
-
className: styles$
|
|
1458
|
+
className: styles$v["f-dialog__header_close"],
|
|
1459
1459
|
onClick: handleClose,
|
|
1460
1460
|
"aria-label": "Закрыть диалог",
|
|
1461
1461
|
children: /* @__PURE__ */ jsx(
|
|
@@ -1474,7 +1474,7 @@ const FDialogBody = ({ st, children, scroll = true }) => {
|
|
|
1474
1474
|
...scroll ? { overflowY: "auto" } : {},
|
|
1475
1475
|
...st
|
|
1476
1476
|
};
|
|
1477
|
-
return /* @__PURE__ */ jsx("div", { className: styles$
|
|
1477
|
+
return /* @__PURE__ */ jsx("div", { className: styles$v["f-dialog__body"], style, children });
|
|
1478
1478
|
};
|
|
1479
1479
|
const FDialogFooter = ({ children, className, st, id }) => {
|
|
1480
1480
|
return /* @__PURE__ */ jsx(
|
|
@@ -1482,7 +1482,7 @@ const FDialogFooter = ({ children, className, st, id }) => {
|
|
|
1482
1482
|
{
|
|
1483
1483
|
id,
|
|
1484
1484
|
style: st,
|
|
1485
|
-
className: `${styles$
|
|
1485
|
+
className: `${styles$v["f-dialog__footer"]} ${className || ""}`,
|
|
1486
1486
|
children
|
|
1487
1487
|
}
|
|
1488
1488
|
);
|
|
@@ -1497,7 +1497,7 @@ const info$4 = "_info_1glrn_62";
|
|
|
1497
1497
|
const light$2 = "_light_1glrn_66";
|
|
1498
1498
|
const dark$2 = "_dark_1glrn_70";
|
|
1499
1499
|
const link$1 = "_link_1glrn_74";
|
|
1500
|
-
const styles$
|
|
1500
|
+
const styles$u = {
|
|
1501
1501
|
"authorization-spinner": "_authorization-spinner_1glrn_1",
|
|
1502
1502
|
"spinner-item": "_spinner-item_1glrn_7",
|
|
1503
1503
|
loader,
|
|
@@ -1515,14 +1515,14 @@ const FProgress = ({ st, color = "primary", id, className }) => {
|
|
|
1515
1515
|
return /* @__PURE__ */ jsx(
|
|
1516
1516
|
"div",
|
|
1517
1517
|
{
|
|
1518
|
-
className: `${styles$
|
|
1518
|
+
className: `${styles$u["authorization-spinner"]} ${styles$u.visible} ${className || ""}`,
|
|
1519
1519
|
id,
|
|
1520
1520
|
style: st,
|
|
1521
|
-
children: /* @__PURE__ */ jsx("div", { className: `${styles$
|
|
1521
|
+
children: /* @__PURE__ */ jsx("div", { className: `${styles$u["spinner-item"]} ${styles$u[color]}` })
|
|
1522
1522
|
}
|
|
1523
1523
|
);
|
|
1524
1524
|
};
|
|
1525
|
-
const styles$
|
|
1525
|
+
const styles$t = {
|
|
1526
1526
|
"f-preloader": "_f-preloader_17f9x_1",
|
|
1527
1527
|
"active-preloader": "_active-preloader_17f9x_10"
|
|
1528
1528
|
};
|
|
@@ -1549,13 +1549,13 @@ const FPreloader = ({
|
|
|
1549
1549
|
return /* @__PURE__ */ jsx(
|
|
1550
1550
|
"div",
|
|
1551
1551
|
{
|
|
1552
|
-
className: `${styles$
|
|
1552
|
+
className: `${styles$t["f-preloader"]} ${open ? styles$t["active-preloader"] : ""}`,
|
|
1553
1553
|
style: mergedStyle,
|
|
1554
1554
|
children
|
|
1555
1555
|
}
|
|
1556
1556
|
);
|
|
1557
1557
|
};
|
|
1558
|
-
const styles$
|
|
1558
|
+
const styles$s = {
|
|
1559
1559
|
"f-checkbox": "_f-checkbox_1hxs0_1"
|
|
1560
1560
|
};
|
|
1561
1561
|
const FCheckbox = forwardRef(
|
|
@@ -1568,7 +1568,7 @@ const FCheckbox = forwardRef(
|
|
|
1568
1568
|
return /* @__PURE__ */ jsx(
|
|
1569
1569
|
"div",
|
|
1570
1570
|
{
|
|
1571
|
-
className: `${styles$
|
|
1571
|
+
className: `${styles$s["f-checkbox"]} ${className || ""}`,
|
|
1572
1572
|
style: st,
|
|
1573
1573
|
children: /* @__PURE__ */ jsxs("label", { children: [
|
|
1574
1574
|
/* @__PURE__ */ jsx("input", { ref, type: "checkbox", ...props }),
|
|
@@ -1578,7 +1578,7 @@ const FCheckbox = forwardRef(
|
|
|
1578
1578
|
);
|
|
1579
1579
|
}
|
|
1580
1580
|
);
|
|
1581
|
-
const styles$
|
|
1581
|
+
const styles$r = {
|
|
1582
1582
|
"f-radio": "_f-radio_1oidm_1"
|
|
1583
1583
|
};
|
|
1584
1584
|
const FRadioButton = forwardRef(
|
|
@@ -1591,7 +1591,7 @@ const FRadioButton = forwardRef(
|
|
|
1591
1591
|
return /* @__PURE__ */ jsx(
|
|
1592
1592
|
"div",
|
|
1593
1593
|
{
|
|
1594
|
-
className: `${styles$
|
|
1594
|
+
className: `${styles$r["f-radio"]} ${className || ""}`,
|
|
1595
1595
|
style: st,
|
|
1596
1596
|
children: /* @__PURE__ */ jsxs("label", { children: [
|
|
1597
1597
|
/* @__PURE__ */ jsx("input", { ref, type: "radio", ...props }),
|
|
@@ -1651,16 +1651,16 @@ const usePagination = ({
|
|
|
1651
1651
|
const dots = "_dots_uiqea_29";
|
|
1652
1652
|
const selected$1 = "_selected_uiqea_33";
|
|
1653
1653
|
const disabled$3 = "_disabled_uiqea_37";
|
|
1654
|
-
const arrow = "_arrow_uiqea_43";
|
|
1655
|
-
const left = "_left_uiqea_56";
|
|
1656
|
-
const styles$
|
|
1654
|
+
const arrow$1 = "_arrow_uiqea_43";
|
|
1655
|
+
const left$1 = "_left_uiqea_56";
|
|
1656
|
+
const styles$q = {
|
|
1657
1657
|
"pagination-container": "_pagination-container_uiqea_1",
|
|
1658
1658
|
"pagination-item": "_pagination-item_uiqea_9",
|
|
1659
1659
|
dots,
|
|
1660
1660
|
selected: selected$1,
|
|
1661
1661
|
disabled: disabled$3,
|
|
1662
|
-
arrow,
|
|
1663
|
-
left
|
|
1662
|
+
arrow: arrow$1,
|
|
1663
|
+
left: left$1
|
|
1664
1664
|
};
|
|
1665
1665
|
const FPagination = ({
|
|
1666
1666
|
currentPage,
|
|
@@ -1687,26 +1687,26 @@ const FPagination = ({
|
|
|
1687
1687
|
return /* @__PURE__ */ jsxs(
|
|
1688
1688
|
"ul",
|
|
1689
1689
|
{
|
|
1690
|
-
className: `${styles$
|
|
1690
|
+
className: `${styles$q["pagination-container"]} ${className || ""}`,
|
|
1691
1691
|
style: st,
|
|
1692
1692
|
id,
|
|
1693
1693
|
children: [
|
|
1694
1694
|
/* @__PURE__ */ jsx(
|
|
1695
1695
|
"li",
|
|
1696
1696
|
{
|
|
1697
|
-
className: `${styles$
|
|
1697
|
+
className: `${styles$q["pagination-item"]} ${currentPage === 1 ? styles$q.disabled : ""}`,
|
|
1698
1698
|
onClick: onPrevious,
|
|
1699
|
-
children: /* @__PURE__ */ jsx("div", { className: `${styles$
|
|
1699
|
+
children: /* @__PURE__ */ jsx("div", { className: `${styles$q.arrow} ${styles$q.left}` })
|
|
1700
1700
|
}
|
|
1701
1701
|
),
|
|
1702
1702
|
paginationRange.map((pageNumber, index) => {
|
|
1703
1703
|
if (pageNumber === DOTS) {
|
|
1704
|
-
return /* @__PURE__ */ jsx("li", { className: `${styles$
|
|
1704
|
+
return /* @__PURE__ */ jsx("li", { className: `${styles$q["pagination-item"]} ${styles$q.dots}`, children: "…" }, index);
|
|
1705
1705
|
}
|
|
1706
1706
|
return /* @__PURE__ */ jsx(
|
|
1707
1707
|
"li",
|
|
1708
1708
|
{
|
|
1709
|
-
className: `${styles$
|
|
1709
|
+
className: `${styles$q["pagination-item"]} ${pageNumber === currentPage ? styles$q.selected : ""}`,
|
|
1710
1710
|
onClick: () => onPageChange(pageNumber),
|
|
1711
1711
|
children: pageNumber
|
|
1712
1712
|
},
|
|
@@ -1716,16 +1716,16 @@ const FPagination = ({
|
|
|
1716
1716
|
/* @__PURE__ */ jsx(
|
|
1717
1717
|
"li",
|
|
1718
1718
|
{
|
|
1719
|
-
className: `${styles$
|
|
1719
|
+
className: `${styles$q["pagination-item"]} ${currentPage === lastPage ? styles$q.disabled : ""}`,
|
|
1720
1720
|
onClick: onNext,
|
|
1721
|
-
children: /* @__PURE__ */ jsx("div", { className: `${styles$
|
|
1721
|
+
children: /* @__PURE__ */ jsx("div", { className: `${styles$q.arrow} ${styles$q.right}` })
|
|
1722
1722
|
}
|
|
1723
1723
|
)
|
|
1724
1724
|
]
|
|
1725
1725
|
}
|
|
1726
1726
|
);
|
|
1727
1727
|
};
|
|
1728
|
-
const styles$
|
|
1728
|
+
const styles$p = {
|
|
1729
1729
|
"f-time-line": "_f-time-line_1ybe7_1",
|
|
1730
1730
|
"f-time-line__block": "_f-time-line__block_1ybe7_10",
|
|
1731
1731
|
"f-time-line__block-circle": "_f-time-line__block-circle_1ybe7_29",
|
|
@@ -1739,7 +1739,7 @@ const FTimeline = ({
|
|
|
1739
1739
|
id,
|
|
1740
1740
|
className
|
|
1741
1741
|
}) => {
|
|
1742
|
-
return /* @__PURE__ */ jsx("div", { className: `${styles$
|
|
1742
|
+
return /* @__PURE__ */ jsx("div", { className: `${styles$p["f-time-line"]} ${className || ""}`, style: st, id, children });
|
|
1743
1743
|
};
|
|
1744
1744
|
const FTimelineCard = ({
|
|
1745
1745
|
children,
|
|
@@ -1748,32 +1748,14 @@ const FTimelineCard = ({
|
|
|
1748
1748
|
id,
|
|
1749
1749
|
className
|
|
1750
1750
|
}) => {
|
|
1751
|
-
return /* @__PURE__ */ jsxs("div", { className: `${styles$
|
|
1752
|
-
/* @__PURE__ */ jsx("div", { className: styles$
|
|
1753
|
-
/* @__PURE__ */ jsxs("div", { className: styles$
|
|
1754
|
-
title2 && /* @__PURE__ */ jsx("div", { className: styles$
|
|
1755
|
-
/* @__PURE__ */ jsx("div", { className: styles$
|
|
1751
|
+
return /* @__PURE__ */ jsxs("div", { className: `${styles$p["f-time-line__block"]} ${className || ""}`, id, children: [
|
|
1752
|
+
/* @__PURE__ */ jsx("div", { className: styles$p["f-time-line__block-circle"] }),
|
|
1753
|
+
/* @__PURE__ */ jsxs("div", { className: styles$p["f-time-line__block-inner"], style: st, children: [
|
|
1754
|
+
title2 && /* @__PURE__ */ jsx("div", { className: styles$p["f-time-line__block-title"], children: title2 }),
|
|
1755
|
+
/* @__PURE__ */ jsx("div", { className: styles$p["f-time-line__block-content"], children })
|
|
1756
1756
|
] })
|
|
1757
1757
|
] });
|
|
1758
1758
|
};
|
|
1759
|
-
const spinner = "_spinner_f7bma_133";
|
|
1760
|
-
const active$4 = "_active_f7bma_183";
|
|
1761
|
-
const styles$m = {
|
|
1762
|
-
"fv-opn-img-full": "_fv-opn-img-full_f7bma_1",
|
|
1763
|
-
"fv-opn-img-full-body": "_fv-opn-img-full-body_f7bma_19",
|
|
1764
|
-
"close-button": "_close-button_f7bma_33",
|
|
1765
|
-
"image-container": "_image-container_f7bma_58",
|
|
1766
|
-
"image-wrapper": "_image-wrapper_f7bma_68",
|
|
1767
|
-
"full-image": "_full-image_f7bma_80",
|
|
1768
|
-
"arrow-left": "_arrow-left_f7bma_89",
|
|
1769
|
-
"arrow-right": "_arrow-right_f7bma_90",
|
|
1770
|
-
"loading-spinner": "_loading-spinner_f7bma_125",
|
|
1771
|
-
spinner,
|
|
1772
|
-
"error-message": "_error-message_f7bma_147",
|
|
1773
|
-
"progress-indicator": "_progress-indicator_f7bma_158",
|
|
1774
|
-
"progress-dot": "_progress-dot_f7bma_172",
|
|
1775
|
-
active: active$4
|
|
1776
|
-
};
|
|
1777
1759
|
const FArrowIcon = React.forwardRef(({
|
|
1778
1760
|
color = "primary",
|
|
1779
1761
|
size = 30,
|
|
@@ -1813,6 +1795,39 @@ const FArrowIcon = React.forwardRef(({
|
|
|
1813
1795
|
);
|
|
1814
1796
|
});
|
|
1815
1797
|
FArrowIcon.displayName = "FArrowIcon";
|
|
1798
|
+
const overlay$1 = "_overlay_avyqh_1";
|
|
1799
|
+
const entering$1 = "_entering_avyqh_15";
|
|
1800
|
+
const exiting$1 = "_exiting_avyqh_19";
|
|
1801
|
+
const viewport = "_viewport_avyqh_24";
|
|
1802
|
+
const image = "_image_avyqh_33";
|
|
1803
|
+
const zoomed = "_zoomed_avyqh_44";
|
|
1804
|
+
const close$1 = "_close_avyqh_52";
|
|
1805
|
+
const arrow = "_arrow_avyqh_53";
|
|
1806
|
+
const left = "_left_avyqh_95";
|
|
1807
|
+
const right = "_right_avyqh_99";
|
|
1808
|
+
const indicators = "_indicators_avyqh_103";
|
|
1809
|
+
const dot = "_dot_avyqh_112";
|
|
1810
|
+
const active$4 = "_active_avyqh_121";
|
|
1811
|
+
const spinner = "_spinner_avyqh_126";
|
|
1812
|
+
const error$2 = "_error_avyqh_136";
|
|
1813
|
+
const styles$o = {
|
|
1814
|
+
overlay: overlay$1,
|
|
1815
|
+
entering: entering$1,
|
|
1816
|
+
exiting: exiting$1,
|
|
1817
|
+
viewport,
|
|
1818
|
+
image,
|
|
1819
|
+
zoomed,
|
|
1820
|
+
close: close$1,
|
|
1821
|
+
arrow,
|
|
1822
|
+
left,
|
|
1823
|
+
right,
|
|
1824
|
+
indicators,
|
|
1825
|
+
dot,
|
|
1826
|
+
active: active$4,
|
|
1827
|
+
spinner,
|
|
1828
|
+
error: error$2
|
|
1829
|
+
};
|
|
1830
|
+
let openImageViewersCount = 0;
|
|
1816
1831
|
const FOpenImgFull = ({
|
|
1817
1832
|
id,
|
|
1818
1833
|
className,
|
|
@@ -1823,151 +1838,297 @@ const FOpenImgFull = ({
|
|
|
1823
1838
|
handleClose,
|
|
1824
1839
|
openAndClose
|
|
1825
1840
|
}) => {
|
|
1841
|
+
const [isMounted, setIsMounted] = useState(openAndClose);
|
|
1842
|
+
const [isClosing, setIsClosing] = useState(false);
|
|
1826
1843
|
const [isLoading, setIsLoading] = useState(true);
|
|
1827
|
-
const [
|
|
1828
|
-
const [
|
|
1829
|
-
const [
|
|
1830
|
-
const
|
|
1844
|
+
const [hasError, setHasError] = useState(false);
|
|
1845
|
+
const [zoom, setZoom] = useState(null);
|
|
1846
|
+
const [pan, setPan] = useState({ x: 0, y: 0 });
|
|
1847
|
+
const pointerStart = useRef(null);
|
|
1848
|
+
const suppressClick = useRef(false);
|
|
1849
|
+
const imageUrl = imagesUrl[selectedImg];
|
|
1831
1850
|
useEffect(() => {
|
|
1832
|
-
|
|
1833
|
-
|
|
1834
|
-
|
|
1835
|
-
|
|
1836
|
-
|
|
1837
|
-
nextImage.onload = () => {
|
|
1838
|
-
setIsLoading(false);
|
|
1839
|
-
};
|
|
1840
|
-
nextImage.onerror = () => {
|
|
1841
|
-
setError(true);
|
|
1842
|
-
setIsLoading(false);
|
|
1843
|
-
};
|
|
1844
|
-
}, [selectedImg, imagesUrl]);
|
|
1845
|
-
const handleKeyDown = useCallback((e) => {
|
|
1846
|
-
if (!openAndClose) return;
|
|
1847
|
-
switch (e.key) {
|
|
1848
|
-
case "ArrowLeft":
|
|
1849
|
-
if (selectedImg > 0) {
|
|
1850
|
-
setSelectedImg(selectedImg - 1);
|
|
1851
|
-
}
|
|
1852
|
-
break;
|
|
1853
|
-
case "ArrowRight":
|
|
1854
|
-
if (selectedImg < imagesUrl.length - 1) {
|
|
1855
|
-
setSelectedImg(selectedImg + 1);
|
|
1856
|
-
}
|
|
1857
|
-
break;
|
|
1858
|
-
case "Escape":
|
|
1859
|
-
handleClose == null ? void 0 : handleClose();
|
|
1860
|
-
break;
|
|
1861
|
-
case "z":
|
|
1862
|
-
setIsZoomed((prev) => !prev);
|
|
1863
|
-
break;
|
|
1851
|
+
if (openAndClose) {
|
|
1852
|
+
setIsMounted(true);
|
|
1853
|
+
setIsClosing(false);
|
|
1854
|
+
} else if (isMounted) {
|
|
1855
|
+
setIsClosing(true);
|
|
1864
1856
|
}
|
|
1865
|
-
}, [
|
|
1857
|
+
}, [openAndClose]);
|
|
1858
|
+
useEffect(() => {
|
|
1859
|
+
if (!isClosing) return;
|
|
1860
|
+
const timer = window.setTimeout(() => {
|
|
1861
|
+
setIsMounted(false);
|
|
1862
|
+
setIsClosing(false);
|
|
1863
|
+
}, 300);
|
|
1864
|
+
return () => window.clearTimeout(timer);
|
|
1865
|
+
}, [isClosing]);
|
|
1866
|
+
useEffect(() => {
|
|
1867
|
+
if (!isMounted || isClosing) return;
|
|
1868
|
+
openImageViewersCount += 1;
|
|
1869
|
+
document.body.classList.add("open-img-full");
|
|
1870
|
+
return () => {
|
|
1871
|
+
openImageViewersCount = Math.max(0, openImageViewersCount - 1);
|
|
1872
|
+
if (openImageViewersCount === 0) document.body.classList.remove("open-img-full");
|
|
1873
|
+
};
|
|
1874
|
+
}, [isMounted, isClosing]);
|
|
1875
|
+
useEffect(() => {
|
|
1876
|
+
setIsLoading(true);
|
|
1877
|
+
setHasError(false);
|
|
1878
|
+
setZoom(null);
|
|
1879
|
+
setPan({ x: 0, y: 0 });
|
|
1880
|
+
}, [imageUrl]);
|
|
1881
|
+
const handleKeyDown = useCallback((event) => {
|
|
1882
|
+
if (event.key === "Escape") handleClose == null ? void 0 : handleClose();
|
|
1883
|
+
else if (event.key === "ArrowLeft" && selectedImg > 0) setSelectedImg(selectedImg - 1);
|
|
1884
|
+
else if (event.key === "ArrowRight" && selectedImg < imagesUrl.length - 1) setSelectedImg(selectedImg + 1);
|
|
1885
|
+
}, [handleClose, imagesUrl.length, selectedImg, setSelectedImg]);
|
|
1866
1886
|
useEffect(() => {
|
|
1887
|
+
if (!isMounted || isClosing) return;
|
|
1867
1888
|
window.addEventListener("keydown", handleKeyDown);
|
|
1868
1889
|
return () => window.removeEventListener("keydown", handleKeyDown);
|
|
1869
|
-
}, [handleKeyDown]);
|
|
1870
|
-
|
|
1871
|
-
|
|
1872
|
-
|
|
1873
|
-
|
|
1874
|
-
setTouchEnd(e.touches[0].clientX);
|
|
1875
|
-
};
|
|
1876
|
-
const handleTouchEnd = () => {
|
|
1877
|
-
if (!touchStart || !touchEnd) return;
|
|
1878
|
-
const distance = touchStart - touchEnd;
|
|
1879
|
-
const isLeftSwipe = distance > 50;
|
|
1880
|
-
const isRightSwipe = distance < -50;
|
|
1881
|
-
if (isLeftSwipe && selectedImg < imagesUrl.length - 1) {
|
|
1882
|
-
setSelectedImg(selectedImg + 1);
|
|
1883
|
-
} else if (isRightSwipe && selectedImg > 0) {
|
|
1884
|
-
setSelectedImg(selectedImg - 1);
|
|
1885
|
-
}
|
|
1886
|
-
setTouchStart(null);
|
|
1887
|
-
setTouchEnd(null);
|
|
1890
|
+
}, [handleKeyDown, isClosing, isMounted]);
|
|
1891
|
+
if (!isMounted || !imagesUrl.length || selectedImg < 0 || selectedImg >= imagesUrl.length) return null;
|
|
1892
|
+
const changeImage = (offset) => {
|
|
1893
|
+
const nextIndex = selectedImg + offset;
|
|
1894
|
+
if (nextIndex >= 0 && nextIndex < imagesUrl.length) setSelectedImg(nextIndex);
|
|
1888
1895
|
};
|
|
1889
|
-
|
|
1890
|
-
|
|
1891
|
-
|
|
1892
|
-
|
|
1893
|
-
|
|
1894
|
-
|
|
1895
|
-
|
|
1896
|
-
|
|
1897
|
-
|
|
1898
|
-
|
|
1899
|
-
|
|
1900
|
-
|
|
1901
|
-
|
|
1902
|
-
|
|
1903
|
-
|
|
1904
|
-
|
|
1905
|
-
|
|
1906
|
-
|
|
1907
|
-
|
|
1908
|
-
|
|
1909
|
-
|
|
1910
|
-
|
|
1911
|
-
|
|
1912
|
-
|
|
1913
|
-
|
|
1914
|
-
|
|
1915
|
-
|
|
1916
|
-
|
|
1917
|
-
|
|
1918
|
-
|
|
1919
|
-
|
|
1920
|
-
|
|
1921
|
-
|
|
1922
|
-
|
|
1923
|
-
|
|
1924
|
-
|
|
1925
|
-
|
|
1926
|
-
|
|
1927
|
-
|
|
1928
|
-
|
|
1929
|
-
|
|
1930
|
-
|
|
1931
|
-
|
|
1932
|
-
|
|
1933
|
-
|
|
1934
|
-
|
|
1935
|
-
|
|
1936
|
-
|
|
1937
|
-
|
|
1938
|
-
|
|
1939
|
-
|
|
1940
|
-
|
|
1941
|
-
|
|
1942
|
-
|
|
1943
|
-
|
|
1944
|
-
|
|
1896
|
+
return createPortal(
|
|
1897
|
+
/* @__PURE__ */ jsxs(
|
|
1898
|
+
"div",
|
|
1899
|
+
{
|
|
1900
|
+
id,
|
|
1901
|
+
style: st,
|
|
1902
|
+
className: `${styles$o.overlay} ${isClosing ? styles$o.exiting : styles$o.entering} ${className || ""}`,
|
|
1903
|
+
onMouseDown: (event) => {
|
|
1904
|
+
if (event.target === event.currentTarget) handleClose == null ? void 0 : handleClose();
|
|
1905
|
+
},
|
|
1906
|
+
children: [
|
|
1907
|
+
handleClose && /* @__PURE__ */ jsx("button", { type: "button", className: styles$o.close, onClick: handleClose, "aria-label": "Закрыть просмотр изображений", children: /* @__PURE__ */ jsx(FCloseIcon, { color: "light", size: 24 }) }),
|
|
1908
|
+
selectedImg > 0 && /* @__PURE__ */ jsx("button", { type: "button", className: `${styles$o.arrow} ${styles$o.left}`, onClick: () => changeImage(-1), "aria-label": "Предыдущее изображение", children: /* @__PURE__ */ jsx(FArrowIcon, { direction: "left", color: "light", size: 28 }) }),
|
|
1909
|
+
/* @__PURE__ */ jsxs("div", { className: styles$o.viewport, children: [
|
|
1910
|
+
isLoading && !hasError && /* @__PURE__ */ jsx("span", { className: styles$o.spinner, "aria-label": "Загрузка изображения" }),
|
|
1911
|
+
hasError ? /* @__PURE__ */ jsx("p", { className: styles$o.error, children: "Ошибка загрузки изображения" }) : /* @__PURE__ */ jsx(
|
|
1912
|
+
"img",
|
|
1913
|
+
{
|
|
1914
|
+
src: imageUrl,
|
|
1915
|
+
alt: "Полноэкранное изображение",
|
|
1916
|
+
className: `${styles$o.image} ${zoom ? styles$o.zoomed : ""}`,
|
|
1917
|
+
style: {
|
|
1918
|
+
transform: `translate(${pan.x}px, ${pan.y}px) scale(${(zoom == null ? void 0 : zoom.scale) ?? 1})`,
|
|
1919
|
+
transformOrigin: zoom ? `${zoom.x}% ${zoom.y}%` : "center"
|
|
1920
|
+
},
|
|
1921
|
+
onLoad: () => setIsLoading(false),
|
|
1922
|
+
onError: () => {
|
|
1923
|
+
setHasError(true);
|
|
1924
|
+
setIsLoading(false);
|
|
1925
|
+
},
|
|
1926
|
+
onClick: (event) => {
|
|
1927
|
+
if (suppressClick.current) {
|
|
1928
|
+
suppressClick.current = false;
|
|
1929
|
+
return;
|
|
1930
|
+
}
|
|
1931
|
+
const bounds = event.currentTarget.getBoundingClientRect();
|
|
1932
|
+
setZoom(zoom ? null : {
|
|
1933
|
+
x: (event.clientX - bounds.left) / bounds.width * 100,
|
|
1934
|
+
y: (event.clientY - bounds.top) / bounds.height * 100,
|
|
1935
|
+
scale: 2.5
|
|
1936
|
+
});
|
|
1937
|
+
if (zoom) setPan({ x: 0, y: 0 });
|
|
1938
|
+
},
|
|
1939
|
+
onPointerDown: (event) => {
|
|
1940
|
+
pointerStart.current = { x: event.clientX, y: event.clientY };
|
|
1941
|
+
if (zoom) event.currentTarget.setPointerCapture(event.pointerId);
|
|
1942
|
+
},
|
|
1943
|
+
onPointerUp: (event) => {
|
|
1944
|
+
const start = pointerStart.current;
|
|
1945
|
+
if (!start) return;
|
|
1946
|
+
const dx = event.clientX - start.x;
|
|
1947
|
+
const dy = event.clientY - start.y;
|
|
1948
|
+
pointerStart.current = null;
|
|
1949
|
+
if (zoom) {
|
|
1950
|
+
if (Math.abs(dx) + Math.abs(dy) > 4) {
|
|
1951
|
+
setPan((position) => ({ x: position.x + dx, y: position.y + dy }));
|
|
1952
|
+
suppressClick.current = true;
|
|
1953
|
+
window.setTimeout(() => {
|
|
1954
|
+
suppressClick.current = false;
|
|
1955
|
+
}, 0);
|
|
1945
1956
|
}
|
|
1957
|
+
} else if (Math.abs(dx) > 50) {
|
|
1958
|
+
suppressClick.current = true;
|
|
1959
|
+
window.setTimeout(() => {
|
|
1960
|
+
suppressClick.current = false;
|
|
1961
|
+
}, 0);
|
|
1962
|
+
changeImage(dx < 0 ? 1 : -1);
|
|
1946
1963
|
}
|
|
1947
|
-
|
|
1948
|
-
|
|
1949
|
-
|
|
1950
|
-
|
|
1951
|
-
|
|
1952
|
-
|
|
1953
|
-
|
|
1954
|
-
|
|
1955
|
-
|
|
1956
|
-
|
|
1957
|
-
|
|
1958
|
-
|
|
1959
|
-
|
|
1960
|
-
|
|
1961
|
-
|
|
1962
|
-
|
|
1963
|
-
|
|
1964
|
-
}
|
|
1965
|
-
|
|
1966
|
-
|
|
1967
|
-
|
|
1968
|
-
|
|
1964
|
+
},
|
|
1965
|
+
draggable: false
|
|
1966
|
+
},
|
|
1967
|
+
imageUrl
|
|
1968
|
+
)
|
|
1969
|
+
] }),
|
|
1970
|
+
selectedImg < imagesUrl.length - 1 && /* @__PURE__ */ jsx("button", { type: "button", className: `${styles$o.arrow} ${styles$o.right}`, onClick: () => changeImage(1), "aria-label": "Следующее изображение", children: /* @__PURE__ */ jsx(FArrowIcon, { direction: "right", color: "light", size: 28 }) }),
|
|
1971
|
+
imagesUrl.length > 1 && /* @__PURE__ */ jsx("div", { className: styles$o.indicators, children: imagesUrl.map((_, index) => /* @__PURE__ */ jsx(
|
|
1972
|
+
"button",
|
|
1973
|
+
{
|
|
1974
|
+
type: "button",
|
|
1975
|
+
className: `${styles$o.dot} ${index === selectedImg ? styles$o.active : ""}`,
|
|
1976
|
+
onClick: () => setSelectedImg(index),
|
|
1977
|
+
"aria-label": `Изображение ${index + 1}`,
|
|
1978
|
+
"aria-current": index === selectedImg ? "true" : void 0
|
|
1979
|
+
},
|
|
1980
|
+
index
|
|
1981
|
+
)) })
|
|
1982
|
+
]
|
|
1983
|
+
}
|
|
1984
|
+
),
|
|
1985
|
+
document.body
|
|
1969
1986
|
);
|
|
1970
1987
|
};
|
|
1988
|
+
const preview$1 = "_preview_1mpqt_1";
|
|
1989
|
+
const styles$n = {
|
|
1990
|
+
preview: preview$1
|
|
1991
|
+
};
|
|
1992
|
+
const FImagePreview = ({ src, alt = "", id, className, st }) => {
|
|
1993
|
+
const [isOpen, setIsOpen] = useState(false);
|
|
1994
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
1995
|
+
/* @__PURE__ */ jsx(
|
|
1996
|
+
"button",
|
|
1997
|
+
{
|
|
1998
|
+
id,
|
|
1999
|
+
type: "button",
|
|
2000
|
+
className: `${styles$n.preview} ${className || ""}`,
|
|
2001
|
+
style: st,
|
|
2002
|
+
onClick: () => setIsOpen(true),
|
|
2003
|
+
"aria-label": alt ? `Открыть изображение: ${alt}` : "Открыть изображение в полном размере",
|
|
2004
|
+
children: /* @__PURE__ */ jsx("img", { src, alt })
|
|
2005
|
+
}
|
|
2006
|
+
),
|
|
2007
|
+
/* @__PURE__ */ jsx(
|
|
2008
|
+
FOpenImgFull,
|
|
2009
|
+
{
|
|
2010
|
+
imagesUrl: [src],
|
|
2011
|
+
selectedImg: 0,
|
|
2012
|
+
setSelectedImg: () => void 0,
|
|
2013
|
+
openAndClose: isOpen,
|
|
2014
|
+
handleClose: () => setIsOpen(false)
|
|
2015
|
+
}
|
|
2016
|
+
)
|
|
2017
|
+
] });
|
|
2018
|
+
};
|
|
2019
|
+
const preview = "_preview_1y6bd_1";
|
|
2020
|
+
const play = "_play_1y6bd_24";
|
|
2021
|
+
const overlay = "_overlay_1y6bd_53";
|
|
2022
|
+
const entering = "_entering_1y6bd_66";
|
|
2023
|
+
const exiting = "_exiting_1y6bd_70";
|
|
2024
|
+
const video = "_video_1y6bd_75";
|
|
2025
|
+
const close = "_close_1y6bd_83";
|
|
2026
|
+
const fullscreen = "_fullscreen_1y6bd_84";
|
|
2027
|
+
const styles$m = {
|
|
2028
|
+
preview,
|
|
2029
|
+
play,
|
|
2030
|
+
overlay,
|
|
2031
|
+
entering,
|
|
2032
|
+
exiting,
|
|
2033
|
+
video,
|
|
2034
|
+
close,
|
|
2035
|
+
fullscreen
|
|
2036
|
+
};
|
|
2037
|
+
let openVideoPlayersCount = 0;
|
|
2038
|
+
const FVideoPlayer = ({ src, poster, className, st }) => {
|
|
2039
|
+
const [isOpen, setIsOpen] = useState(false);
|
|
2040
|
+
const [isMounted, setIsMounted] = useState(false);
|
|
2041
|
+
const [isClosing, setIsClosing] = useState(false);
|
|
2042
|
+
const videoRef = useRef(null);
|
|
2043
|
+
useEffect(() => {
|
|
2044
|
+
if (isOpen) {
|
|
2045
|
+
setIsMounted(true);
|
|
2046
|
+
setIsClosing(false);
|
|
2047
|
+
} else if (isMounted) {
|
|
2048
|
+
setIsClosing(true);
|
|
2049
|
+
}
|
|
2050
|
+
}, [isMounted, isOpen]);
|
|
2051
|
+
useEffect(() => {
|
|
2052
|
+
if (!isClosing) return;
|
|
2053
|
+
const timer = window.setTimeout(() => {
|
|
2054
|
+
setIsMounted(false);
|
|
2055
|
+
setIsClosing(false);
|
|
2056
|
+
}, 300);
|
|
2057
|
+
return () => window.clearTimeout(timer);
|
|
2058
|
+
}, [isClosing]);
|
|
2059
|
+
useEffect(() => {
|
|
2060
|
+
if (!isMounted || isClosing) return;
|
|
2061
|
+
openVideoPlayersCount += 1;
|
|
2062
|
+
document.body.classList.add("open-video-player");
|
|
2063
|
+
return () => {
|
|
2064
|
+
openVideoPlayersCount = Math.max(0, openVideoPlayersCount - 1);
|
|
2065
|
+
if (openVideoPlayersCount === 0) document.body.classList.remove("open-video-player");
|
|
2066
|
+
};
|
|
2067
|
+
}, [isMounted, isClosing]);
|
|
2068
|
+
useEffect(() => {
|
|
2069
|
+
if (!isMounted || isClosing) return;
|
|
2070
|
+
const video2 = videoRef.current;
|
|
2071
|
+
if (video2) void video2.play().catch(() => {
|
|
2072
|
+
});
|
|
2073
|
+
}, [isClosing, isMounted, src]);
|
|
2074
|
+
useEffect(() => {
|
|
2075
|
+
if (!isMounted || isClosing) return;
|
|
2076
|
+
const closeOnEscape = (event) => {
|
|
2077
|
+
if (event.key === "Escape" && !document.fullscreenElement) setIsOpen(false);
|
|
2078
|
+
};
|
|
2079
|
+
window.addEventListener("keydown", closeOnEscape);
|
|
2080
|
+
return () => window.removeEventListener("keydown", closeOnEscape);
|
|
2081
|
+
}, [isClosing, isMounted]);
|
|
2082
|
+
const enterFullscreen = () => {
|
|
2083
|
+
const video2 = videoRef.current;
|
|
2084
|
+
if (video2 == null ? void 0 : video2.requestFullscreen) void video2.requestFullscreen().catch(() => {
|
|
2085
|
+
});
|
|
2086
|
+
};
|
|
2087
|
+
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
2088
|
+
/* @__PURE__ */ jsxs(
|
|
2089
|
+
"button",
|
|
2090
|
+
{
|
|
2091
|
+
type: "button",
|
|
2092
|
+
className: `${styles$m.preview} ${className || ""}`,
|
|
2093
|
+
style: st,
|
|
2094
|
+
onClick: () => setIsOpen(true),
|
|
2095
|
+
"aria-label": "Открыть видео",
|
|
2096
|
+
children: [
|
|
2097
|
+
/* @__PURE__ */ jsx("video", { src, poster, preload: "metadata", muted: true, playsInline: true }),
|
|
2098
|
+
/* @__PURE__ */ jsx("span", { className: styles$m.play, "aria-hidden": "true" })
|
|
2099
|
+
]
|
|
2100
|
+
}
|
|
2101
|
+
),
|
|
2102
|
+
isMounted && createPortal(
|
|
2103
|
+
/* @__PURE__ */ jsxs(
|
|
2104
|
+
"div",
|
|
2105
|
+
{
|
|
2106
|
+
className: `${styles$m.overlay} ${isClosing ? styles$m.exiting : styles$m.entering}`,
|
|
2107
|
+
onMouseDown: (event) => {
|
|
2108
|
+
if (event.target === event.currentTarget) setIsOpen(false);
|
|
2109
|
+
},
|
|
2110
|
+
children: [
|
|
2111
|
+
/* @__PURE__ */ jsx("button", { type: "button", className: styles$m.close, onClick: () => setIsOpen(false), "aria-label": "Закрыть видео", children: /* @__PURE__ */ jsx(FCloseIcon, { color: "light", size: 24 }) }),
|
|
2112
|
+
/* @__PURE__ */ jsx(
|
|
2113
|
+
"video",
|
|
2114
|
+
{
|
|
2115
|
+
ref: videoRef,
|
|
2116
|
+
className: styles$m.video,
|
|
2117
|
+
src,
|
|
2118
|
+
poster,
|
|
2119
|
+
controls: true,
|
|
2120
|
+
autoPlay: true,
|
|
2121
|
+
playsInline: true
|
|
2122
|
+
}
|
|
2123
|
+
),
|
|
2124
|
+
/* @__PURE__ */ jsx("button", { type: "button", className: styles$m.fullscreen, onClick: enterFullscreen, children: "На весь экран" })
|
|
2125
|
+
]
|
|
2126
|
+
}
|
|
2127
|
+
),
|
|
2128
|
+
document.body
|
|
2129
|
+
)
|
|
2130
|
+
] });
|
|
2131
|
+
};
|
|
1971
2132
|
const card$2 = "_card_1ytel_1";
|
|
1972
2133
|
const primary$1 = "_primary_1ytel_69";
|
|
1973
2134
|
const secondary$1 = "_secondary_1ytel_81";
|
|
@@ -2760,7 +2921,7 @@ const FAlert = ({
|
|
|
2760
2921
|
}) => {
|
|
2761
2922
|
const visible2 = useRef();
|
|
2762
2923
|
const hidden2 = useRef();
|
|
2763
|
-
const
|
|
2924
|
+
const close2 = useRef();
|
|
2764
2925
|
const [randomId] = useState(fGenerateUniqueId());
|
|
2765
2926
|
let newTime = displayTime;
|
|
2766
2927
|
useEffect(() => {
|
|
@@ -2768,7 +2929,7 @@ const FAlert = ({
|
|
|
2768
2929
|
if (!open) {
|
|
2769
2930
|
const el = document.querySelector(`#f-block-alert-${randomId}`);
|
|
2770
2931
|
if (el !== null) {
|
|
2771
|
-
|
|
2932
|
+
close2.current = setTimeout(() => {
|
|
2772
2933
|
if (onClose) {
|
|
2773
2934
|
onClose(false);
|
|
2774
2935
|
}
|
|
@@ -2796,7 +2957,7 @@ const FAlert = ({
|
|
|
2796
2957
|
el.classList.remove("f-alert-visible");
|
|
2797
2958
|
el.classList.add("f-alert-hidden");
|
|
2798
2959
|
}, (newTime - 1) * 1e3);
|
|
2799
|
-
|
|
2960
|
+
close2.current = setTimeout(() => {
|
|
2800
2961
|
onClose(false);
|
|
2801
2962
|
el.classList.remove("f-alert-hidden");
|
|
2802
2963
|
el.classList.remove("f-alert-visible");
|
|
@@ -2949,7 +3110,7 @@ const FAlert = ({
|
|
|
2949
3110
|
el.classList.remove("f-alert-hidden");
|
|
2950
3111
|
clearTimeout(visible2.current);
|
|
2951
3112
|
clearTimeout(hidden2.current);
|
|
2952
|
-
clearTimeout(
|
|
3113
|
+
clearTimeout(close2.current);
|
|
2953
3114
|
}
|
|
2954
3115
|
}
|
|
2955
3116
|
)
|
|
@@ -4347,7 +4508,7 @@ function FTableActions({ children, className, onClick, ...props }) {
|
|
|
4347
4508
|
type: "button",
|
|
4348
4509
|
"aria-label": "Действия",
|
|
4349
4510
|
...props,
|
|
4350
|
-
className: `${styles$
|
|
4511
|
+
className: `${styles$w.more} ${className || ""}`,
|
|
4351
4512
|
"aria-expanded": open,
|
|
4352
4513
|
"aria-controls": id,
|
|
4353
4514
|
onClick: (event) => {
|
|
@@ -4380,7 +4541,7 @@ function FTableActions({ children, className, onClick, ...props }) {
|
|
|
4380
4541
|
ref: menu,
|
|
4381
4542
|
id,
|
|
4382
4543
|
...{ popover: "auto" },
|
|
4383
|
-
className: styles$
|
|
4544
|
+
className: styles$w["row-menu"],
|
|
4384
4545
|
onKeyDown: (event) => {
|
|
4385
4546
|
var _a, _b;
|
|
4386
4547
|
if (event.key === "Escape") {
|
|
@@ -9548,6 +9709,7 @@ export {
|
|
|
9548
9709
|
FFullDateField,
|
|
9549
9710
|
FGrid,
|
|
9550
9711
|
FGridRow,
|
|
9712
|
+
FImagePreview,
|
|
9551
9713
|
FInfoCircleIcon,
|
|
9552
9714
|
FInputFileForm,
|
|
9553
9715
|
FLibraryProvider,
|
|
@@ -9596,6 +9758,7 @@ export {
|
|
|
9596
9758
|
FTrashIcon,
|
|
9597
9759
|
FUnlinkIcon,
|
|
9598
9760
|
FUploadIcon,
|
|
9761
|
+
FVideoPlayer,
|
|
9599
9762
|
FWaterErrorBoundaryPage,
|
|
9600
9763
|
LibraryContext,
|
|
9601
9764
|
calcDurationMs,
|