@ceed/ads 1.41.3 → 1.41.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/Autocomplete/Autocomplete.d.ts +4 -4
- package/dist/components/Autocomplete/index.d.ts +2 -1
- package/dist/components/DataTable/hooks.d.ts +3 -5
- package/dist/components/DataTable/types.d.ts +1 -0
- package/dist/components/DataTable/utils.d.ts +11 -0
- package/dist/components/IconMenuButton/IconMenuButton.d.ts +9 -8
- package/dist/components/IconMenuButton/IconMenuButton.type-test.d.ts +5 -0
- package/dist/components/IconMenuButton/index.d.ts +2 -1
- package/dist/components/Modal/Modal.d.ts +1 -4
- package/dist/components/Select/Select.d.ts +7 -4
- package/dist/components/Select/index.d.ts +2 -1
- package/dist/components/Textarea/Textarea.d.ts +1 -4
- package/dist/components/Textarea/index.d.ts +2 -1
- package/dist/components/data-display/DataTable.md +25 -23
- package/dist/components/inputs/Calendar.md +17 -17
- package/dist/components/navigation/IconMenuButton.md +17 -12
- package/dist/index.browser.js +6 -6
- package/dist/index.browser.js.map +4 -4
- package/dist/index.cjs +774 -692
- package/dist/index.js +378 -296
- package/dist/libs/slot-props.d.ts +22 -0
- package/framer/index.js +1 -1
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -347,7 +347,7 @@ function Alert(inProps) {
|
|
|
347
347
|
Alert.displayName = "Alert";
|
|
348
348
|
|
|
349
349
|
// src/components/Autocomplete/Autocomplete.tsx
|
|
350
|
-
var
|
|
350
|
+
var import_react7 = __toESM(require("react"));
|
|
351
351
|
var import_joy10 = require("@mui/joy");
|
|
352
352
|
var import_base = require("@mui/base");
|
|
353
353
|
var import_Close = __toESM(require("@mui/icons-material/Close"));
|
|
@@ -439,6 +439,46 @@ function useControlledState(controlledValue, defaultValue, onChange) {
|
|
|
439
439
|
return [displayValue, handleChange, isControlled];
|
|
440
440
|
}
|
|
441
441
|
|
|
442
|
+
// src/libs/slot-props.ts
|
|
443
|
+
var import_react6 = require("react");
|
|
444
|
+
function assignRef(ref, value) {
|
|
445
|
+
if (typeof ref === "function") ref(value);
|
|
446
|
+
else if (ref) ref.current = value;
|
|
447
|
+
}
|
|
448
|
+
function mergeRefs(...refs) {
|
|
449
|
+
const live = refs.filter((r) => r != null);
|
|
450
|
+
if (live.length === 0) return void 0;
|
|
451
|
+
if (live.length === 1) return live[0];
|
|
452
|
+
return (value) => live.forEach((r) => assignRef(r, value));
|
|
453
|
+
}
|
|
454
|
+
function useMergedRef(a, b) {
|
|
455
|
+
return (0, import_react6.useMemo)(() => mergeRefs(a, b), [a, b]);
|
|
456
|
+
}
|
|
457
|
+
function useSlotRef(slotProp, ref) {
|
|
458
|
+
const isFunctionForm = typeof slotProp === "function";
|
|
459
|
+
const slotRef = isFunctionForm ? void 0 : slotProp?.ref;
|
|
460
|
+
const mergedRef = useMergedRef(slotRef, ref);
|
|
461
|
+
const latestSlotRef = (0, import_react6.useRef)(null);
|
|
462
|
+
const stableMergedRef = (0, import_react6.useCallback)(
|
|
463
|
+
(value) => {
|
|
464
|
+
assignRef(latestSlotRef.current, value);
|
|
465
|
+
assignRef(ref, value);
|
|
466
|
+
},
|
|
467
|
+
[ref]
|
|
468
|
+
);
|
|
469
|
+
return (0, import_react6.useMemo)(() => {
|
|
470
|
+
if (isFunctionForm) {
|
|
471
|
+
return ((ownerState) => {
|
|
472
|
+
const resolved = slotProp(ownerState) ?? {};
|
|
473
|
+
const resolvedRef = resolved.ref;
|
|
474
|
+
latestSlotRef.current = resolvedRef ?? null;
|
|
475
|
+
return resolvedRef || ref ? { ...resolved, ref: stableMergedRef } : { ...resolved };
|
|
476
|
+
});
|
|
477
|
+
}
|
|
478
|
+
return mergedRef ? { ...slotProp, ref: mergedRef } : { ...slotProp };
|
|
479
|
+
}, [isFunctionForm, slotProp, mergedRef, ref, stableMergedRef]);
|
|
480
|
+
}
|
|
481
|
+
|
|
442
482
|
// src/components/Autocomplete/Autocomplete.tsx
|
|
443
483
|
var AutocompletePopper = (0, import_joy10.styled)(import_base2.Popper, {
|
|
444
484
|
name: "Autocomplete",
|
|
@@ -451,7 +491,7 @@ var itemHeightMap = {
|
|
|
451
491
|
md: { default: 36, secondary: 55 },
|
|
452
492
|
lg: { default: 44, secondary: 65 }
|
|
453
493
|
};
|
|
454
|
-
var AutocompleteListBox =
|
|
494
|
+
var AutocompleteListBox = import_react7.default.forwardRef((props, ref) => {
|
|
455
495
|
const {
|
|
456
496
|
anchorEl,
|
|
457
497
|
open,
|
|
@@ -461,13 +501,13 @@ var AutocompleteListBox = import_react6.default.forwardRef((props, ref) => {
|
|
|
461
501
|
ownerState: { loading, size: fontSize },
|
|
462
502
|
...innerProps
|
|
463
503
|
} = props;
|
|
464
|
-
const parentRef = (0,
|
|
504
|
+
const parentRef = (0, import_react7.useRef)(null);
|
|
465
505
|
const isGrouped = children[0].every((child) => child.hasOwnProperty("group"));
|
|
466
|
-
const itemHeight = (0,
|
|
506
|
+
const itemHeight = (0, import_react7.useMemo)(() => {
|
|
467
507
|
const heights = itemHeightMap[fontSize ?? "md"];
|
|
468
508
|
return hasSecondaryText ? heights.secondary : heights.default;
|
|
469
509
|
}, [fontSize, hasSecondaryText]);
|
|
470
|
-
const renderTargets = (0,
|
|
510
|
+
const renderTargets = (0, import_react7.useMemo)(() => {
|
|
471
511
|
if (loading) {
|
|
472
512
|
return [children[1]];
|
|
473
513
|
}
|
|
@@ -476,7 +516,7 @@ var AutocompleteListBox = import_react6.default.forwardRef((props, ref) => {
|
|
|
476
516
|
}
|
|
477
517
|
if (isGrouped) {
|
|
478
518
|
return children[0].flatMap((child) => [
|
|
479
|
-
/* @__PURE__ */
|
|
519
|
+
/* @__PURE__ */ import_react7.default.createElement(import_joy10.ListSubheader, { key: child.key, component: "li" }, child.group),
|
|
480
520
|
...child.children
|
|
481
521
|
]);
|
|
482
522
|
}
|
|
@@ -490,12 +530,12 @@ var AutocompleteListBox = import_react6.default.forwardRef((props, ref) => {
|
|
|
490
530
|
overscan: 5
|
|
491
531
|
});
|
|
492
532
|
const items = virtualizer.getVirtualItems();
|
|
493
|
-
(0,
|
|
533
|
+
(0, import_react7.useEffect)(() => {
|
|
494
534
|
if (open) {
|
|
495
535
|
virtualizer.measure();
|
|
496
536
|
}
|
|
497
537
|
}, [open, virtualizer]);
|
|
498
|
-
return /* @__PURE__ */
|
|
538
|
+
return /* @__PURE__ */ import_react7.default.createElement(AutocompletePopper, { ref, anchorEl, open, modifiers }, /* @__PURE__ */ import_react7.default.createElement(import_joy10.AutocompleteListbox, { ...innerProps, size: fontSize }, /* @__PURE__ */ import_react7.default.createElement("div", { ref: parentRef, style: { overflow: "auto" } }, /* @__PURE__ */ import_react7.default.createElement(
|
|
499
539
|
"div",
|
|
500
540
|
{
|
|
501
541
|
style: {
|
|
@@ -504,7 +544,7 @@ var AutocompleteListBox = import_react6.default.forwardRef((props, ref) => {
|
|
|
504
544
|
}
|
|
505
545
|
},
|
|
506
546
|
items.map(
|
|
507
|
-
({ index, size, start, key }) =>
|
|
547
|
+
({ index, size, start, key }) => import_react7.default.cloneElement(renderTargets[index], {
|
|
508
548
|
key,
|
|
509
549
|
style: {
|
|
510
550
|
position: "absolute",
|
|
@@ -516,7 +556,7 @@ var AutocompleteListBox = import_react6.default.forwardRef((props, ref) => {
|
|
|
516
556
|
transform: `translateY(${start}px)`,
|
|
517
557
|
overflow: "visible"
|
|
518
558
|
},
|
|
519
|
-
children: /* @__PURE__ */
|
|
559
|
+
children: /* @__PURE__ */ import_react7.default.createElement(
|
|
520
560
|
"div",
|
|
521
561
|
{
|
|
522
562
|
style: {
|
|
@@ -559,7 +599,7 @@ var autocompleteFilterOptions = (0, import_base.createFilterOptions)({
|
|
|
559
599
|
}
|
|
560
600
|
});
|
|
561
601
|
var getOptionLabel = (option) => `${option.label ?? ""}`;
|
|
562
|
-
function
|
|
602
|
+
function AutocompleteInner(props, ref) {
|
|
563
603
|
const {
|
|
564
604
|
label,
|
|
565
605
|
error,
|
|
@@ -578,7 +618,7 @@ function Autocomplete(props) {
|
|
|
578
618
|
const [rawValue, setValue] = useControlledState(
|
|
579
619
|
props.value,
|
|
580
620
|
props.defaultValue ?? null,
|
|
581
|
-
(0,
|
|
621
|
+
(0, import_react7.useCallback)(
|
|
582
622
|
(value2) => onChange?.({
|
|
583
623
|
target: {
|
|
584
624
|
value: value2,
|
|
@@ -589,7 +629,7 @@ function Autocomplete(props) {
|
|
|
589
629
|
)
|
|
590
630
|
);
|
|
591
631
|
const _value = rawValue ?? (props.multiple ? EMPTY_MULTIPLE_VALUE : "");
|
|
592
|
-
const options = (0,
|
|
632
|
+
const options = (0, import_react7.useMemo)(
|
|
593
633
|
() => props.options.map((option) => {
|
|
594
634
|
if (typeof option !== "object") {
|
|
595
635
|
return {
|
|
@@ -601,19 +641,19 @@ function Autocomplete(props) {
|
|
|
601
641
|
}),
|
|
602
642
|
[props.options]
|
|
603
643
|
);
|
|
604
|
-
const optionMap = (0,
|
|
644
|
+
const optionMap = (0, import_react7.useMemo)(() => {
|
|
605
645
|
const map = /* @__PURE__ */ new Map();
|
|
606
646
|
options.forEach((option) => {
|
|
607
647
|
map.set(option.value, option);
|
|
608
648
|
});
|
|
609
649
|
return map;
|
|
610
650
|
}, [options]);
|
|
611
|
-
const value = (0,
|
|
651
|
+
const value = (0, import_react7.useMemo)(() => {
|
|
612
652
|
if (props.loading) {
|
|
613
653
|
return {
|
|
614
654
|
value: "",
|
|
615
655
|
label: "",
|
|
616
|
-
startDecorator: /* @__PURE__ */
|
|
656
|
+
startDecorator: /* @__PURE__ */ import_react7.default.createElement(import_joy10.CircularProgress, { size: "sm", color: "neutral", variant: "plain", thickness: 3 })
|
|
617
657
|
};
|
|
618
658
|
}
|
|
619
659
|
if (Array.isArray(_value)) {
|
|
@@ -621,31 +661,33 @@ function Autocomplete(props) {
|
|
|
621
661
|
}
|
|
622
662
|
return optionMap.get(_value);
|
|
623
663
|
}, [_value, optionMap, props.loading]);
|
|
624
|
-
const applySize = (0,
|
|
664
|
+
const applySize = (0, import_react7.useCallback)(
|
|
625
665
|
(node) => {
|
|
626
|
-
return
|
|
666
|
+
return import_react7.default.isValidElement(node) && !props.loading ? import_react7.default.cloneElement(node, { ...{ size } }) : node;
|
|
627
667
|
},
|
|
628
668
|
[size, props.loading]
|
|
629
669
|
);
|
|
630
|
-
const startDecorator = (0,
|
|
670
|
+
const startDecorator = (0, import_react7.useMemo)(
|
|
631
671
|
() => applySize(value?.startDecorator || props.startDecorator),
|
|
632
672
|
[value, applySize, props.startDecorator]
|
|
633
673
|
);
|
|
634
|
-
const endDecorator = (0,
|
|
674
|
+
const endDecorator = (0, import_react7.useMemo)(
|
|
635
675
|
() => applySize(value?.endDecorator || props.endDecorator),
|
|
636
676
|
[value, applySize, props.endDecorator]
|
|
637
677
|
);
|
|
638
|
-
const
|
|
678
|
+
const inputSlotProps = useSlotRef(props.slotProps?.input, ref);
|
|
679
|
+
const slotProps = (0, import_react7.useMemo)(
|
|
639
680
|
() => ({
|
|
640
681
|
...props.slotProps,
|
|
641
682
|
listbox: {
|
|
642
683
|
...props.slotProps?.listbox,
|
|
643
684
|
hasSecondaryText: options.some((opt) => opt.secondaryText)
|
|
644
|
-
}
|
|
685
|
+
},
|
|
686
|
+
input: inputSlotProps
|
|
645
687
|
}),
|
|
646
|
-
[options, props.slotProps]
|
|
688
|
+
[options, props.slotProps, inputSlotProps]
|
|
647
689
|
);
|
|
648
|
-
const handleChange = (0,
|
|
690
|
+
const handleChange = (0, import_react7.useCallback)(
|
|
649
691
|
(event, value2) => {
|
|
650
692
|
const newValue = value2;
|
|
651
693
|
const _value2 = Array.isArray(newValue) ? newValue.map((value3) => value3.value) : newValue?.value;
|
|
@@ -662,7 +704,7 @@ function Autocomplete(props) {
|
|
|
662
704
|
},
|
|
663
705
|
[onChangeComplete, setValue, optionMap]
|
|
664
706
|
);
|
|
665
|
-
const autocomplete = /* @__PURE__ */
|
|
707
|
+
const autocomplete = /* @__PURE__ */ import_react7.default.createElement(
|
|
666
708
|
import_joy10.Autocomplete,
|
|
667
709
|
{
|
|
668
710
|
...innerProps,
|
|
@@ -677,10 +719,10 @@ function Autocomplete(props) {
|
|
|
677
719
|
endDecorator,
|
|
678
720
|
getOptionLabel,
|
|
679
721
|
renderTags: (tags, getTagProps) => tags.map((tag, index) => {
|
|
680
|
-
const { onClick, ...rest } = getTagProps({ index });
|
|
722
|
+
const { onClick, key, ...rest } = getTagProps({ index });
|
|
681
723
|
return applySize(
|
|
682
|
-
/* @__PURE__ */
|
|
683
|
-
/* @__PURE__ */
|
|
724
|
+
/* @__PURE__ */ import_react7.default.createElement(Chip_default, { key, color: "primary", ...rest }, /* @__PURE__ */ import_react7.default.createElement(Stack_default, { direction: "row", alignItems: "center", gap: 2, py: 0.5 }, tag.value, applySize(
|
|
725
|
+
/* @__PURE__ */ import_react7.default.createElement(AutocompleteTagDelete, { color: "primary", variant: "soft", onClick, size }, /* @__PURE__ */ import_react7.default.createElement(import_Close.default, null))
|
|
684
726
|
)))
|
|
685
727
|
);
|
|
686
728
|
}),
|
|
@@ -689,30 +731,33 @@ function Autocomplete(props) {
|
|
|
689
731
|
},
|
|
690
732
|
slotProps,
|
|
691
733
|
filterOptions: autocompleteFilterOptions,
|
|
692
|
-
renderOption: (props2, option) =>
|
|
693
|
-
|
|
694
|
-
{
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
applySize(option.label)
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
734
|
+
renderOption: (props2, option) => {
|
|
735
|
+
const { key, ...optionProps } = props2;
|
|
736
|
+
return /* @__PURE__ */ import_react7.default.createElement(import_joy10.AutocompleteOption, { key, ...optionProps }, option.startDecorator && /* @__PURE__ */ import_react7.default.createElement(
|
|
737
|
+
import_joy10.ListItemDecorator,
|
|
738
|
+
{
|
|
739
|
+
sx: (theme) => ({
|
|
740
|
+
marginInlineEnd: `var(--Input-gap, ${theme.spacing(1)})`
|
|
741
|
+
})
|
|
742
|
+
},
|
|
743
|
+
applySize(option.startDecorator)
|
|
744
|
+
), option.secondaryText ? /* @__PURE__ */ import_react7.default.createElement(import_joy10.ListItemContent, { sx: { gap: 0.5 } }, /* @__PURE__ */ import_react7.default.createElement(import_joy10.Typography, { level: "inherit" }, applySize(option.label)), /* @__PURE__ */ import_react7.default.createElement(import_joy10.Typography, { level: secondaryTextLevelMap[size ?? "md"], textColor: "text.tertiary" }, option.secondaryText)) : (
|
|
745
|
+
// TODO: haulla에서 사용할 때, label을 ReactNode로 넘기면 에러가 발생함....
|
|
746
|
+
applySize(option.label)
|
|
747
|
+
), option.endDecorator && /* @__PURE__ */ import_react7.default.createElement(
|
|
748
|
+
import_joy10.ListItemDecorator,
|
|
749
|
+
{
|
|
750
|
+
sx: (theme) => ({
|
|
751
|
+
marginInlineStart: `var(--Input-gap, ${theme.spacing(1)})`
|
|
752
|
+
})
|
|
753
|
+
},
|
|
754
|
+
applySize(option.endDecorator)
|
|
755
|
+
));
|
|
756
|
+
},
|
|
712
757
|
renderGroup: (params) => params
|
|
713
758
|
}
|
|
714
759
|
);
|
|
715
|
-
return /* @__PURE__ */
|
|
760
|
+
return /* @__PURE__ */ import_react7.default.createElement(
|
|
716
761
|
FormControl_default,
|
|
717
762
|
{
|
|
718
763
|
required,
|
|
@@ -723,18 +768,19 @@ function Autocomplete(props) {
|
|
|
723
768
|
sx,
|
|
724
769
|
className
|
|
725
770
|
},
|
|
726
|
-
label && /* @__PURE__ */
|
|
771
|
+
label && /* @__PURE__ */ import_react7.default.createElement(FormLabel_default, null, label),
|
|
727
772
|
autocomplete,
|
|
728
|
-
helperText && /* @__PURE__ */
|
|
773
|
+
helperText && /* @__PURE__ */ import_react7.default.createElement(FormHelperText_default, null, helperText)
|
|
729
774
|
);
|
|
730
775
|
}
|
|
776
|
+
var Autocomplete = import_react7.default.forwardRef(AutocompleteInner);
|
|
731
777
|
Autocomplete.displayName = "Autocomplete";
|
|
732
778
|
|
|
733
779
|
// src/components/Autocomplete/index.ts
|
|
734
780
|
var Autocomplete_default = Autocomplete;
|
|
735
781
|
|
|
736
782
|
// src/components/Avatar/Avatar.tsx
|
|
737
|
-
var
|
|
783
|
+
var import_react8 = __toESM(require("react"));
|
|
738
784
|
var import_joy11 = require("@mui/joy");
|
|
739
785
|
var StyledAvatar = (0, import_joy11.styled)(import_joy11.Avatar, {
|
|
740
786
|
name: "Avatar",
|
|
@@ -756,19 +802,19 @@ var defaultGetInitial = (name) => {
|
|
|
756
802
|
return (firstName.charAt(0) + lastName.charAt(0)).toUpperCase();
|
|
757
803
|
}
|
|
758
804
|
};
|
|
759
|
-
var Avatar = (0,
|
|
805
|
+
var Avatar = (0, import_react8.forwardRef)(function Avatar2(inProps, ref) {
|
|
760
806
|
const props = (0, import_joy11.useThemeProps)({
|
|
761
807
|
props: inProps,
|
|
762
808
|
name: "Avatar"
|
|
763
809
|
});
|
|
764
810
|
const { children, getInitial = defaultGetInitial, ...inheritProps } = props;
|
|
765
|
-
const calcChildren = (0,
|
|
811
|
+
const calcChildren = (0, import_react8.useMemo)(() => {
|
|
766
812
|
if (typeof children === "string") {
|
|
767
813
|
return getInitial?.(children) ?? "";
|
|
768
814
|
}
|
|
769
815
|
return children;
|
|
770
816
|
}, [children, getInitial]);
|
|
771
|
-
return /* @__PURE__ */
|
|
817
|
+
return /* @__PURE__ */ import_react8.default.createElement(StyledAvatar, { ...inheritProps, children: calcChildren, ref });
|
|
772
818
|
});
|
|
773
819
|
|
|
774
820
|
// src/components/Box/Box.tsx
|
|
@@ -782,16 +828,16 @@ Box.displayName = "Box";
|
|
|
782
828
|
var Box_default = Box;
|
|
783
829
|
|
|
784
830
|
// src/components/Breadcrumbs/Breadcrumbs.tsx
|
|
785
|
-
var
|
|
831
|
+
var import_react11 = __toESM(require("react"));
|
|
786
832
|
var import_joy16 = require("@mui/joy");
|
|
787
833
|
|
|
788
834
|
// src/components/Menu/Menu.tsx
|
|
789
|
-
var
|
|
835
|
+
var import_react9 = __toESM(require("react"));
|
|
790
836
|
var import_joy13 = require("@mui/joy");
|
|
791
837
|
var import_framer_motion10 = require("framer-motion");
|
|
792
838
|
var MotionMenu = (0, import_framer_motion10.motion)(import_joy13.Menu);
|
|
793
839
|
var Menu = (props) => {
|
|
794
|
-
return /* @__PURE__ */
|
|
840
|
+
return /* @__PURE__ */ import_react9.default.createElement(MotionMenu, { ...props });
|
|
795
841
|
};
|
|
796
842
|
Menu.displayName = "Menu";
|
|
797
843
|
var MenuItem = import_joy13.MenuItem;
|
|
@@ -800,22 +846,22 @@ var MenuItem = import_joy13.MenuItem;
|
|
|
800
846
|
var Menu_default = Menu;
|
|
801
847
|
|
|
802
848
|
// src/components/Dropdown/Dropdown.tsx
|
|
803
|
-
var
|
|
849
|
+
var import_react10 = __toESM(require("react"));
|
|
804
850
|
var import_joy14 = require("@mui/joy");
|
|
805
851
|
var import_joy15 = require("@mui/joy");
|
|
806
852
|
var import_useMenuButton = require("@mui/base/useMenuButton");
|
|
807
|
-
var DropdownNestedRegistryContext = (0,
|
|
853
|
+
var DropdownNestedRegistryContext = (0, import_react10.createContext)(null);
|
|
808
854
|
function Dropdown({ open: openProp, defaultOpen = false, onOpenChange, ...rest }) {
|
|
809
|
-
const [nestedCount, setNestedCount] = (0,
|
|
855
|
+
const [nestedCount, setNestedCount] = (0, import_react10.useState)(0);
|
|
810
856
|
const [open, setOpen] = useControlledState(openProp, defaultOpen);
|
|
811
|
-
const registry = (0,
|
|
857
|
+
const registry = (0, import_react10.useMemo)(
|
|
812
858
|
() => ({
|
|
813
859
|
register: () => setNestedCount((c) => c + 1),
|
|
814
860
|
unregister: () => setNestedCount((c) => Math.max(0, c - 1))
|
|
815
861
|
}),
|
|
816
862
|
[]
|
|
817
863
|
);
|
|
818
|
-
const handleOpenChange = (0,
|
|
864
|
+
const handleOpenChange = (0, import_react10.useCallback)(
|
|
819
865
|
(event, isOpen) => {
|
|
820
866
|
if (nestedCount > 0 && !isOpen && event?.type === "blur") {
|
|
821
867
|
return;
|
|
@@ -825,7 +871,7 @@ function Dropdown({ open: openProp, defaultOpen = false, onOpenChange, ...rest }
|
|
|
825
871
|
},
|
|
826
872
|
[nestedCount, setOpen, onOpenChange]
|
|
827
873
|
);
|
|
828
|
-
return /* @__PURE__ */
|
|
874
|
+
return /* @__PURE__ */ import_react10.default.createElement(DropdownNestedRegistryContext.Provider, { value: registry }, /* @__PURE__ */ import_react10.default.createElement(import_joy14.Dropdown, { open, onOpenChange: handleOpenChange, ...rest }));
|
|
829
875
|
}
|
|
830
876
|
Dropdown.displayName = "Dropdown";
|
|
831
877
|
|
|
@@ -848,29 +894,29 @@ function Breadcrumbs(props) {
|
|
|
848
894
|
} = props;
|
|
849
895
|
const Crumb = (props2) => {
|
|
850
896
|
if (props2.type === "link" && Link4) {
|
|
851
|
-
return /* @__PURE__ */
|
|
897
|
+
return /* @__PURE__ */ import_react11.default.createElement(Link4, { to: props2.linkHref, href: props2.linkHref, ...linkProps }, props2.label);
|
|
852
898
|
} else {
|
|
853
|
-
return /* @__PURE__ */
|
|
899
|
+
return /* @__PURE__ */ import_react11.default.createElement(Typography_default, null, props2.label);
|
|
854
900
|
}
|
|
855
901
|
};
|
|
856
902
|
if (!collapsed) {
|
|
857
|
-
return /* @__PURE__ */
|
|
903
|
+
return /* @__PURE__ */ import_react11.default.createElement(import_joy16.Breadcrumbs, { size, slots: restSlots, slotProps: restSlotProps, ...innerProps }, crumbs.map((crumb, index) => /* @__PURE__ */ import_react11.default.createElement(Crumb, { key: `breadcrumb-${index}`, ...crumb })));
|
|
858
904
|
}
|
|
859
905
|
const _endCrumbCount = Math.max(1, endCrumbCount);
|
|
860
|
-
const frontCrumbs = crumbs.slice(0, startCrumbCount).map((crumb) => /* @__PURE__ */
|
|
861
|
-
const backCrumbs = (startCrumbCount + _endCrumbCount > crumbs.length ? crumbs.slice(startCrumbCount) : crumbs.slice(-_endCrumbCount)).map((crumb) => /* @__PURE__ */
|
|
862
|
-
const collapsedCrumbs = crumbs.slice(startCrumbCount, -_endCrumbCount).map((crumb) => /* @__PURE__ */
|
|
863
|
-
return /* @__PURE__ */
|
|
906
|
+
const frontCrumbs = crumbs.slice(0, startCrumbCount).map((crumb) => /* @__PURE__ */ import_react11.default.createElement(Crumb, { key: `breadcrumb-${crumb.label}`, ...crumb }));
|
|
907
|
+
const backCrumbs = (startCrumbCount + _endCrumbCount > crumbs.length ? crumbs.slice(startCrumbCount) : crumbs.slice(-_endCrumbCount)).map((crumb) => /* @__PURE__ */ import_react11.default.createElement(Crumb, { key: `breadcrumb-${crumb.label}`, ...crumb }));
|
|
908
|
+
const collapsedCrumbs = crumbs.slice(startCrumbCount, -_endCrumbCount).map((crumb) => /* @__PURE__ */ import_react11.default.createElement(MenuItem, { key: `breadcrumb-${crumb.label}` }, /* @__PURE__ */ import_react11.default.createElement(Crumb, { ...crumb })));
|
|
909
|
+
return /* @__PURE__ */ import_react11.default.createElement(import_joy16.Breadcrumbs, { size, slots: restSlots, slotProps: restSlotProps, ...innerProps }, frontCrumbs, collapsedCrumbs.length && /* @__PURE__ */ import_react11.default.createElement(Dropdown_default, null, /* @__PURE__ */ import_react11.default.createElement(import_joy16.MenuButton, { size, variant: "plain" }, "..."), /* @__PURE__ */ import_react11.default.createElement(Menu_default, { size }, collapsedCrumbs)), backCrumbs);
|
|
864
910
|
}
|
|
865
911
|
Breadcrumbs.displayName = "Breadcrumbs";
|
|
866
912
|
|
|
867
913
|
// src/components/Button/Button.tsx
|
|
868
|
-
var
|
|
914
|
+
var import_react12 = __toESM(require("react"));
|
|
869
915
|
var import_joy17 = require("@mui/joy");
|
|
870
916
|
var import_framer_motion11 = require("framer-motion");
|
|
871
917
|
var MotionButton = (0, import_framer_motion11.motion)(import_joy17.Button);
|
|
872
|
-
var Button = (0,
|
|
873
|
-
return /* @__PURE__ */
|
|
918
|
+
var Button = (0, import_react12.forwardRef)(({ ...props }, ref) => {
|
|
919
|
+
return /* @__PURE__ */ import_react12.default.createElement(MotionButton, { ref, ...props });
|
|
874
920
|
});
|
|
875
921
|
Button.displayName = "Button";
|
|
876
922
|
|
|
@@ -878,19 +924,19 @@ Button.displayName = "Button";
|
|
|
878
924
|
var Button_default = Button;
|
|
879
925
|
|
|
880
926
|
// src/components/Calendar/Calendar.tsx
|
|
881
|
-
var
|
|
927
|
+
var import_react16 = __toESM(require("react"));
|
|
882
928
|
var import_joy20 = require("@mui/joy");
|
|
883
929
|
var import_ChevronLeft = __toESM(require("@mui/icons-material/ChevronLeft"));
|
|
884
930
|
var import_ChevronRight = __toESM(require("@mui/icons-material/ChevronRight"));
|
|
885
931
|
var import_framer_motion13 = require("framer-motion");
|
|
886
932
|
|
|
887
933
|
// src/components/Tooltip/Tooltip.tsx
|
|
888
|
-
var
|
|
934
|
+
var import_react13 = __toESM(require("react"));
|
|
889
935
|
var import_joy18 = require("@mui/joy");
|
|
890
936
|
var import_framer_motion12 = require("framer-motion");
|
|
891
937
|
var MotionTooltip = (0, import_framer_motion12.motion)(import_joy18.Tooltip);
|
|
892
938
|
var Tooltip = (props) => {
|
|
893
|
-
return /* @__PURE__ */
|
|
939
|
+
return /* @__PURE__ */ import_react13.default.createElement(MotionTooltip, { ...props });
|
|
894
940
|
};
|
|
895
941
|
Tooltip.displayName = "Tooltip";
|
|
896
942
|
|
|
@@ -972,43 +1018,43 @@ var isSameMonth = (date1, date2) => {
|
|
|
972
1018
|
};
|
|
973
1019
|
|
|
974
1020
|
// src/components/Calendar/hooks/use-calendar-props.ts
|
|
975
|
-
var
|
|
1021
|
+
var import_react14 = require("react");
|
|
976
1022
|
var import_joy19 = require("@mui/joy");
|
|
977
1023
|
var resolveView = (view, views) => {
|
|
978
1024
|
return views.includes(view) ? view : views[0];
|
|
979
1025
|
};
|
|
980
1026
|
var useCalendarProps = (inProps) => {
|
|
981
|
-
const [uncontrolledView, setUncontrolledView] = (0,
|
|
1027
|
+
const [uncontrolledView, setUncontrolledView] = (0, import_react14.useState)(
|
|
982
1028
|
() => resolveView(inProps.view || "day", inProps.views || ["day", "month"])
|
|
983
1029
|
);
|
|
984
|
-
const [uncontrolledValue, setUncontrolledValue] = (0,
|
|
1030
|
+
const [uncontrolledValue, setUncontrolledValue] = (0, import_react14.useState)(
|
|
985
1031
|
inProps.defaultValue
|
|
986
1032
|
);
|
|
987
|
-
const [viewMonth, setViewMonth] = (0,
|
|
1033
|
+
const [viewMonth, setViewMonth] = (0, import_react14.useState)(() => {
|
|
988
1034
|
const today = /* @__PURE__ */ new Date();
|
|
989
1035
|
today.setDate(1);
|
|
990
1036
|
today.setHours(0, 0, 0, 0);
|
|
991
1037
|
return inProps.value?.[0] || inProps.defaultValue?.[0] || today;
|
|
992
1038
|
});
|
|
993
|
-
const [[page, direction], setPage] = (0,
|
|
1039
|
+
const [[page, direction], setPage] = (0, import_react14.useState)([0, 0]);
|
|
994
1040
|
const resolvedView = inProps.view ?? uncontrolledView;
|
|
995
|
-
const resolvedMinDate = (0,
|
|
1041
|
+
const resolvedMinDate = (0, import_react14.useMemo)(() => {
|
|
996
1042
|
const minDate = inProps.minDate || /* @__PURE__ */ new Date(0);
|
|
997
1043
|
minDate.setHours(0, 0, 0, 0);
|
|
998
1044
|
return minDate;
|
|
999
1045
|
}, [inProps.minDate]);
|
|
1000
|
-
const resolvedMaxDate = (0,
|
|
1046
|
+
const resolvedMaxDate = (0, import_react14.useMemo)(() => {
|
|
1001
1047
|
const maxDate = inProps.maxDate || /* @__PURE__ */ new Date(864e13);
|
|
1002
1048
|
maxDate.setHours(0, 0, 0, 0);
|
|
1003
1049
|
return maxDate;
|
|
1004
1050
|
}, [inProps.maxDate]);
|
|
1005
|
-
const paginate = (0,
|
|
1051
|
+
const paginate = (0, import_react14.useCallback)(
|
|
1006
1052
|
(newDirection) => {
|
|
1007
1053
|
setPage([page + newDirection, newDirection]);
|
|
1008
1054
|
},
|
|
1009
1055
|
[page]
|
|
1010
1056
|
);
|
|
1011
|
-
const handleViewMonthChange = (0,
|
|
1057
|
+
const handleViewMonthChange = (0, import_react14.useCallback)(
|
|
1012
1058
|
(newMonth) => {
|
|
1013
1059
|
setViewMonth(newMonth);
|
|
1014
1060
|
if (resolvedView === "month") {
|
|
@@ -1056,22 +1102,22 @@ var useCalendarProps = (inProps) => {
|
|
|
1056
1102
|
},
|
|
1057
1103
|
name: "Calendar"
|
|
1058
1104
|
});
|
|
1059
|
-
const ownerState = (0,
|
|
1105
|
+
const ownerState = (0, import_react14.useMemo)(() => ({ ...props, viewMonth, direction }), [props, viewMonth, direction]);
|
|
1060
1106
|
return [props, ownerState];
|
|
1061
1107
|
};
|
|
1062
1108
|
|
|
1063
1109
|
// src/components/Calendar/hooks/use-calendar.ts
|
|
1064
|
-
var
|
|
1110
|
+
var import_react15 = require("react");
|
|
1065
1111
|
var useCalendar = (ownerState) => {
|
|
1066
|
-
const [localHoverDay, setLocalHoverDay] = (0,
|
|
1067
|
-
const [localHoverMonth, setLocalHoverMonth] = (0,
|
|
1112
|
+
const [localHoverDay, setLocalHoverDay] = (0, import_react15.useState)(null);
|
|
1113
|
+
const [localHoverMonth, setLocalHoverMonth] = (0, import_react15.useState)(null);
|
|
1068
1114
|
const hoverDay = ownerState.hoverDay !== void 0 ? ownerState.hoverDay : localHoverDay;
|
|
1069
1115
|
const setHoverDay = ownerState.onHoverDayChange ?? setLocalHoverDay;
|
|
1070
1116
|
const hoverMonth = ownerState.hoverMonth !== void 0 ? ownerState.hoverMonth : localHoverMonth;
|
|
1071
1117
|
const setHoverMonth = ownerState.onHoverMonthChange ?? setLocalHoverMonth;
|
|
1072
1118
|
return {
|
|
1073
1119
|
calendarTitle: ownerState.view === "month" ? getYearName(ownerState.viewMonth, ownerState.locale || "default") : getMonthName(ownerState.viewMonth, ownerState.locale || "default"),
|
|
1074
|
-
onPrev: (0,
|
|
1120
|
+
onPrev: (0, import_react15.useCallback)(() => {
|
|
1075
1121
|
if (ownerState.view === "day") {
|
|
1076
1122
|
const currentDate = new Date(ownerState.viewMonth || /* @__PURE__ */ new Date());
|
|
1077
1123
|
const currentYear = currentDate.getFullYear();
|
|
@@ -1088,7 +1134,7 @@ var useCalendar = (ownerState) => {
|
|
|
1088
1134
|
ownerState.onMonthChange?.(prevYear);
|
|
1089
1135
|
}
|
|
1090
1136
|
}, [ownerState.onMonthChange, ownerState.viewMonth, ownerState.view]),
|
|
1091
|
-
onNext: (0,
|
|
1137
|
+
onNext: (0, import_react15.useCallback)(() => {
|
|
1092
1138
|
if (ownerState.view === "day") {
|
|
1093
1139
|
const currentDate = new Date(ownerState.viewMonth || /* @__PURE__ */ new Date());
|
|
1094
1140
|
const currentYear = currentDate.getFullYear();
|
|
@@ -1105,7 +1151,7 @@ var useCalendar = (ownerState) => {
|
|
|
1105
1151
|
ownerState.onMonthChange?.(nextYear);
|
|
1106
1152
|
}
|
|
1107
1153
|
}, [ownerState.onMonthChange, ownerState.viewMonth, ownerState.view]),
|
|
1108
|
-
getDayCellProps: (0,
|
|
1154
|
+
getDayCellProps: (0, import_react15.useCallback)(
|
|
1109
1155
|
(day) => {
|
|
1110
1156
|
const thisDay = new Date(ownerState.viewMonth || /* @__PURE__ */ new Date());
|
|
1111
1157
|
thisDay.setHours(0, 0, 0, 0);
|
|
@@ -1120,7 +1166,7 @@ var useCalendar = (ownerState) => {
|
|
|
1120
1166
|
},
|
|
1121
1167
|
[ownerState.rangeSelection, ownerState.value, ownerState.viewMonth, hoverDay]
|
|
1122
1168
|
),
|
|
1123
|
-
getMonthCellProps: (0,
|
|
1169
|
+
getMonthCellProps: (0, import_react15.useCallback)(
|
|
1124
1170
|
(monthIndex) => {
|
|
1125
1171
|
const thisMonth = new Date(ownerState.viewMonth || /* @__PURE__ */ new Date());
|
|
1126
1172
|
thisMonth.setDate(1);
|
|
@@ -1137,7 +1183,7 @@ var useCalendar = (ownerState) => {
|
|
|
1137
1183
|
},
|
|
1138
1184
|
[ownerState.rangeSelection, ownerState.value, ownerState.viewMonth, hoverMonth]
|
|
1139
1185
|
),
|
|
1140
|
-
getPickerDayProps: (0,
|
|
1186
|
+
getPickerDayProps: (0, import_react15.useCallback)(
|
|
1141
1187
|
(day) => {
|
|
1142
1188
|
const thisDay = new Date(ownerState.viewMonth || /* @__PURE__ */ new Date());
|
|
1143
1189
|
thisDay.setHours(0, 0, 0, 0);
|
|
@@ -1191,7 +1237,7 @@ var useCalendar = (ownerState) => {
|
|
|
1191
1237
|
hoverDay
|
|
1192
1238
|
]
|
|
1193
1239
|
),
|
|
1194
|
-
getPickerMonthProps: (0,
|
|
1240
|
+
getPickerMonthProps: (0, import_react15.useCallback)(
|
|
1195
1241
|
(monthIndex) => {
|
|
1196
1242
|
const thisMonth = new Date(ownerState.viewMonth || /* @__PURE__ */ new Date());
|
|
1197
1243
|
thisMonth.setDate(1);
|
|
@@ -1488,9 +1534,9 @@ var swipePower = (offset, velocity) => {
|
|
|
1488
1534
|
var PickerDays = (props) => {
|
|
1489
1535
|
const { ownerState } = props;
|
|
1490
1536
|
const { getPickerDayProps, getDayCellProps } = useCalendar(ownerState);
|
|
1491
|
-
const calendarDates = (0,
|
|
1492
|
-
const weekdayNames = (0,
|
|
1493
|
-
return /* @__PURE__ */
|
|
1537
|
+
const calendarDates = (0, import_react16.useMemo)(() => getCalendarDates(ownerState.viewMonth), [ownerState.viewMonth]);
|
|
1538
|
+
const weekdayNames = (0, import_react16.useMemo)(() => getWeekdayNames(ownerState.locale || "default"), [ownerState.locale]);
|
|
1539
|
+
return /* @__PURE__ */ import_react16.default.createElement(CalendarViewContainer, { calendarType: "datePicker" }, /* @__PURE__ */ import_react16.default.createElement(import_framer_motion13.AnimatePresence, { initial: false, custom: ownerState.direction }, /* @__PURE__ */ import_react16.default.createElement(
|
|
1494
1540
|
CalendarViewTable,
|
|
1495
1541
|
{
|
|
1496
1542
|
key: `${ownerState.viewMonth.toString()}_${ownerState.direction}`,
|
|
@@ -1519,10 +1565,10 @@ var PickerDays = (props) => {
|
|
|
1519
1565
|
}
|
|
1520
1566
|
}
|
|
1521
1567
|
},
|
|
1522
|
-
/* @__PURE__ */
|
|
1523
|
-
/* @__PURE__ */
|
|
1524
|
-
(date, i) => date ? /* @__PURE__ */
|
|
1525
|
-
)), rowIndex < calendarDates.length - 1 && /* @__PURE__ */
|
|
1568
|
+
/* @__PURE__ */ import_react16.default.createElement(CalendarWeekHeaderContainer, null, /* @__PURE__ */ import_react16.default.createElement("tr", null, weekdayNames.map((name, i) => /* @__PURE__ */ import_react16.default.createElement(import_react16.Fragment, { key: `${ownerState.viewMonth}_${name}_${i}` }, /* @__PURE__ */ import_react16.default.createElement("th", null, /* @__PURE__ */ import_react16.default.createElement(Typography_default, { level: "body-xs", textAlign: "center" }, name)), i < 6 && /* @__PURE__ */ import_react16.default.createElement("th", { style: { width: 4 }, "aria-hidden": "true", "aria-description": "cell-gap" }))))),
|
|
1569
|
+
/* @__PURE__ */ import_react16.default.createElement(CalendarDayPickerContainer, null, calendarDates.map((weekDates, rowIndex) => /* @__PURE__ */ import_react16.default.createElement(import_react16.Fragment, { key: `${ownerState.viewMonth}_${rowIndex}` }, /* @__PURE__ */ import_react16.default.createElement("tr", null, weekDates.map(
|
|
1570
|
+
(date, i) => date ? /* @__PURE__ */ import_react16.default.createElement(import_react16.Fragment, { key: `${ownerState.viewMonth}_${date}_${i}` }, /* @__PURE__ */ import_react16.default.createElement(CalendarDayCell, { ...getDayCellProps(date) }, /* @__PURE__ */ import_react16.default.createElement(CalendarDay, { size: "sm", variant: "plain", color: "neutral", ...getPickerDayProps(date) }, date)), i < 6 && /* @__PURE__ */ import_react16.default.createElement("td", { "aria-hidden": "true", "aria-description": "cell-gap" })) : /* @__PURE__ */ import_react16.default.createElement(import_react16.Fragment, { key: `${ownerState.viewMonth}_${i}` }, /* @__PURE__ */ import_react16.default.createElement("td", null), i < 6 && /* @__PURE__ */ import_react16.default.createElement("td", { "aria-hidden": "true", "aria-description": "cell-gap" }))
|
|
1571
|
+
)), rowIndex < calendarDates.length - 1 && /* @__PURE__ */ import_react16.default.createElement("tr", { "aria-hidden": "true", "aria-description": "row-gap" }, /* @__PURE__ */ import_react16.default.createElement("td", { colSpan: 13, style: { height: 4 } })))))
|
|
1526
1572
|
)));
|
|
1527
1573
|
};
|
|
1528
1574
|
var PickerMonths = (props) => {
|
|
@@ -1539,7 +1585,7 @@ var PickerMonths = (props) => {
|
|
|
1539
1585
|
[[]]
|
|
1540
1586
|
);
|
|
1541
1587
|
const isMonthPicker = !ownerState.views?.find((view) => view === "day");
|
|
1542
|
-
return /* @__PURE__ */
|
|
1588
|
+
return /* @__PURE__ */ import_react16.default.createElement(CalendarViewContainer, { calendarType: isMonthPicker ? "monthPicker" : "datePicker" }, /* @__PURE__ */ import_react16.default.createElement(import_framer_motion13.AnimatePresence, { initial: false, custom: ownerState.direction }, /* @__PURE__ */ import_react16.default.createElement(
|
|
1543
1589
|
CalendarViewTable,
|
|
1544
1590
|
{
|
|
1545
1591
|
key: `${ownerState.viewMonth.getFullYear()}_${ownerState.direction}`,
|
|
@@ -1568,16 +1614,16 @@ var PickerMonths = (props) => {
|
|
|
1568
1614
|
}
|
|
1569
1615
|
}
|
|
1570
1616
|
},
|
|
1571
|
-
/* @__PURE__ */
|
|
1617
|
+
/* @__PURE__ */ import_react16.default.createElement("tbody", null, chunkedMonths.map((months, i) => /* @__PURE__ */ import_react16.default.createElement(import_react16.Fragment, { key: months.join("_") }, /* @__PURE__ */ import_react16.default.createElement("tr", null, months.map((monthIndex, j) => /* @__PURE__ */ import_react16.default.createElement(import_react16.Fragment, { key: monthIndex }, /* @__PURE__ */ import_react16.default.createElement(CalendarMonthCell, { ...getMonthCellProps(monthIndex) }, /* @__PURE__ */ import_react16.default.createElement(CalendarMonth, { size: "sm", variant: "plain", color: "neutral", ...getPickerMonthProps(monthIndex) }, getMonthNameFromIndex(monthIndex, ownerState.locale))), j < 3 && /* @__PURE__ */ import_react16.default.createElement("td", { style: { width: 4 }, "aria-hidden": "true", "aria-description": "cell-gap" })))), i < chunkedMonths.length - 1 && /* @__PURE__ */ import_react16.default.createElement("tr", { "aria-hidden": "true", "aria-description": "row-gap" }, /* @__PURE__ */ import_react16.default.createElement("td", { colSpan: 7, style: { height: 4 } })))))
|
|
1572
1618
|
)));
|
|
1573
1619
|
};
|
|
1574
1620
|
var PlainPickerDays = ({ ownerState }) => {
|
|
1575
1621
|
const { getPickerDayProps, getDayCellProps } = useCalendar(ownerState);
|
|
1576
|
-
const calendarDates = (0,
|
|
1577
|
-
const weekdayNames = (0,
|
|
1578
|
-
return /* @__PURE__ */
|
|
1579
|
-
(date, i) => date ? /* @__PURE__ */
|
|
1580
|
-
)), rowIndex < calendarDates.length - 1 && /* @__PURE__ */
|
|
1622
|
+
const calendarDates = (0, import_react16.useMemo)(() => getCalendarDates(ownerState.viewMonth), [ownerState.viewMonth]);
|
|
1623
|
+
const weekdayNames = (0, import_react16.useMemo)(() => getWeekdayNames(ownerState.locale || "default"), [ownerState.locale]);
|
|
1624
|
+
return /* @__PURE__ */ import_react16.default.createElement(StaticCalendarViewTable, null, /* @__PURE__ */ import_react16.default.createElement(CalendarWeekHeaderContainer, null, /* @__PURE__ */ import_react16.default.createElement("tr", null, weekdayNames.map((name, i) => /* @__PURE__ */ import_react16.default.createElement(import_react16.Fragment, { key: `${ownerState.viewMonth}_${name}_${i}` }, /* @__PURE__ */ import_react16.default.createElement("th", null, /* @__PURE__ */ import_react16.default.createElement(Typography_default, { level: "body-xs", textAlign: "center" }, name)), i < 6 && /* @__PURE__ */ import_react16.default.createElement("th", { style: { width: 4 }, "aria-hidden": "true", "aria-description": "cell-gap" }))))), /* @__PURE__ */ import_react16.default.createElement(CalendarDayPickerContainer, null, calendarDates.map((weekDates, rowIndex) => /* @__PURE__ */ import_react16.default.createElement(import_react16.Fragment, { key: `${ownerState.viewMonth}_${rowIndex}` }, /* @__PURE__ */ import_react16.default.createElement("tr", null, weekDates.map(
|
|
1625
|
+
(date, i) => date ? /* @__PURE__ */ import_react16.default.createElement(import_react16.Fragment, { key: `${ownerState.viewMonth}_${date}_${i}` }, /* @__PURE__ */ import_react16.default.createElement(CalendarDayCell, { ...getDayCellProps(date) }, /* @__PURE__ */ import_react16.default.createElement(CalendarDay, { size: "sm", variant: "plain", color: "neutral", ...getPickerDayProps(date) }, date)), i < 6 && /* @__PURE__ */ import_react16.default.createElement("td", { "aria-hidden": "true", "aria-description": "cell-gap" })) : /* @__PURE__ */ import_react16.default.createElement(import_react16.Fragment, { key: `${ownerState.viewMonth}_${i}` }, /* @__PURE__ */ import_react16.default.createElement("td", null), i < 6 && /* @__PURE__ */ import_react16.default.createElement("td", { "aria-hidden": "true", "aria-description": "cell-gap" }))
|
|
1626
|
+
)), rowIndex < calendarDates.length - 1 && /* @__PURE__ */ import_react16.default.createElement("tr", { "aria-hidden": "true", "aria-description": "row-gap" }, /* @__PURE__ */ import_react16.default.createElement("td", { colSpan: 13, style: { height: 4 } }))))));
|
|
1581
1627
|
};
|
|
1582
1628
|
var MultiMonthPickerDays = ({
|
|
1583
1629
|
panels,
|
|
@@ -1596,7 +1642,7 @@ var MultiMonthPickerDays = ({
|
|
|
1596
1642
|
})
|
|
1597
1643
|
};
|
|
1598
1644
|
const key = `${panels[0].viewMonth.toISOString()}_${direction}`;
|
|
1599
|
-
return /* @__PURE__ */
|
|
1645
|
+
return /* @__PURE__ */ import_react16.default.createElement("div", { style: { position: "relative", overflow: "hidden", minHeight: "250px" } }, /* @__PURE__ */ import_react16.default.createElement(import_framer_motion13.AnimatePresence, { initial: false, custom: direction }, /* @__PURE__ */ import_react16.default.createElement(
|
|
1600
1646
|
import_framer_motion13.motion.div,
|
|
1601
1647
|
{
|
|
1602
1648
|
key,
|
|
@@ -1626,7 +1672,7 @@ var MultiMonthPickerDays = ({
|
|
|
1626
1672
|
},
|
|
1627
1673
|
style: { display: "flex", gap: `${CALENDAR_PANEL_GAP}px`, top: 0, left: 0, width: "100%" }
|
|
1628
1674
|
},
|
|
1629
|
-
panels.map((panelOwnerState) => /* @__PURE__ */
|
|
1675
|
+
panels.map((panelOwnerState) => /* @__PURE__ */ import_react16.default.createElement(
|
|
1630
1676
|
"div",
|
|
1631
1677
|
{
|
|
1632
1678
|
key: panelOwnerState.viewMonth.toISOString(),
|
|
@@ -1638,7 +1684,7 @@ var MultiMonthPickerDays = ({
|
|
|
1638
1684
|
boxSizing: "border-box"
|
|
1639
1685
|
}
|
|
1640
1686
|
},
|
|
1641
|
-
/* @__PURE__ */
|
|
1687
|
+
/* @__PURE__ */ import_react16.default.createElement(PlainPickerDays, { ownerState: panelOwnerState })
|
|
1642
1688
|
))
|
|
1643
1689
|
)));
|
|
1644
1690
|
};
|
|
@@ -1655,7 +1701,7 @@ var CalendarPanel = ({
|
|
|
1655
1701
|
const showPrev = panelIndex === 0;
|
|
1656
1702
|
const showNext = panelIndex === totalPanels - 1;
|
|
1657
1703
|
const title = ownerState.view === "month" ? getYearName(ownerState.viewMonth, ownerState.locale || "default") : getMonthName(ownerState.viewMonth, ownerState.locale || "default");
|
|
1658
|
-
return /* @__PURE__ */
|
|
1704
|
+
return /* @__PURE__ */ import_react16.default.createElement("div", { style: { flex: 1, maxWidth: `${CALENDAR_PANEL_WIDTH}px` } }, /* @__PURE__ */ import_react16.default.createElement(CalendarHeader, null, /* @__PURE__ */ import_react16.default.createElement(
|
|
1659
1705
|
IconButton_default,
|
|
1660
1706
|
{
|
|
1661
1707
|
size: "sm",
|
|
@@ -1663,8 +1709,8 @@ var CalendarPanel = ({
|
|
|
1663
1709
|
"aria-label": `Previous ${ownerState.view === "day" ? "Month" : "Year"}`,
|
|
1664
1710
|
style: { visibility: showPrev ? "visible" : "hidden" }
|
|
1665
1711
|
},
|
|
1666
|
-
/* @__PURE__ */
|
|
1667
|
-
), /* @__PURE__ */
|
|
1712
|
+
/* @__PURE__ */ import_react16.default.createElement(import_ChevronLeft.default, null)
|
|
1713
|
+
), /* @__PURE__ */ import_react16.default.createElement(
|
|
1668
1714
|
Tooltip_default,
|
|
1669
1715
|
{
|
|
1670
1716
|
title: monthViewHintMessage,
|
|
@@ -1676,7 +1722,7 @@ var CalendarPanel = ({
|
|
|
1676
1722
|
disableTouchListener: true,
|
|
1677
1723
|
variant: "solid"
|
|
1678
1724
|
},
|
|
1679
|
-
/* @__PURE__ */
|
|
1725
|
+
/* @__PURE__ */ import_react16.default.createElement(
|
|
1680
1726
|
CalendarSwitchViewButton,
|
|
1681
1727
|
{
|
|
1682
1728
|
ownerState,
|
|
@@ -1687,7 +1733,7 @@ var CalendarPanel = ({
|
|
|
1687
1733
|
},
|
|
1688
1734
|
title
|
|
1689
1735
|
)
|
|
1690
|
-
), /* @__PURE__ */
|
|
1736
|
+
), /* @__PURE__ */ import_react16.default.createElement(
|
|
1691
1737
|
IconButton_default,
|
|
1692
1738
|
{
|
|
1693
1739
|
size: "sm",
|
|
@@ -1695,10 +1741,10 @@ var CalendarPanel = ({
|
|
|
1695
1741
|
"aria-label": `Next ${ownerState.view === "day" ? "Month" : "Year"}`,
|
|
1696
1742
|
style: { visibility: showNext ? "visible" : "hidden" }
|
|
1697
1743
|
},
|
|
1698
|
-
/* @__PURE__ */
|
|
1744
|
+
/* @__PURE__ */ import_react16.default.createElement(import_ChevronRight.default, null)
|
|
1699
1745
|
)));
|
|
1700
1746
|
};
|
|
1701
|
-
var Calendar = (0,
|
|
1747
|
+
var Calendar = (0, import_react16.forwardRef)((inProps, ref) => {
|
|
1702
1748
|
const [props, ownerState] = useCalendarProps(inProps);
|
|
1703
1749
|
const {
|
|
1704
1750
|
value,
|
|
@@ -1714,42 +1760,44 @@ var Calendar = (0, import_react15.forwardRef)((inProps, ref) => {
|
|
|
1714
1760
|
maxDate,
|
|
1715
1761
|
disableFuture,
|
|
1716
1762
|
disablePast,
|
|
1763
|
+
shouldDisableDate,
|
|
1764
|
+
slots,
|
|
1717
1765
|
numberOfMonths,
|
|
1718
1766
|
...others
|
|
1719
1767
|
} = props;
|
|
1720
1768
|
const { calendarTitle, onPrev, onNext } = useCalendar(ownerState);
|
|
1721
|
-
const [isMonthViewAssistHintOpen, setIsMonthViewAssistHintOpen] = (0,
|
|
1722
|
-
const monthNavClickTimestampsRef = (0,
|
|
1723
|
-
const monthViewAssistHintShownInSessionRef = (0,
|
|
1724
|
-
const monthViewAssistHintTimeoutRef = (0,
|
|
1725
|
-
const [hoverDay, setHoverDay] = (0,
|
|
1726
|
-
const [hoverMonth, setHoverMonth] = (0,
|
|
1769
|
+
const [isMonthViewAssistHintOpen, setIsMonthViewAssistHintOpen] = (0, import_react16.useState)(false);
|
|
1770
|
+
const monthNavClickTimestampsRef = (0, import_react16.useRef)([]);
|
|
1771
|
+
const monthViewAssistHintShownInSessionRef = (0, import_react16.useRef)(false);
|
|
1772
|
+
const monthViewAssistHintTimeoutRef = (0, import_react16.useRef)(null);
|
|
1773
|
+
const [hoverDay, setHoverDay] = (0, import_react16.useState)(null);
|
|
1774
|
+
const [hoverMonth, setHoverMonth] = (0, import_react16.useState)(null);
|
|
1727
1775
|
const resolvedNumberOfMonths = numberOfMonths ?? 1;
|
|
1728
1776
|
const hasEndDate = Boolean(value?.[1]);
|
|
1729
1777
|
const isRangeHintEligible = Boolean(rangeSelection && !hasEndDate);
|
|
1730
1778
|
const isHintEligible = Boolean(view === "day" && (!rangeSelection || isRangeHintEligible));
|
|
1731
1779
|
const monthViewHintMessage = MONTH_VIEW_HINT_MESSAGE;
|
|
1732
|
-
(0,
|
|
1780
|
+
(0, import_react16.useEffect)(() => {
|
|
1733
1781
|
if (!isHintEligible) {
|
|
1734
1782
|
monthNavClickTimestampsRef.current = [];
|
|
1735
1783
|
setIsMonthViewAssistHintOpen(false);
|
|
1736
1784
|
}
|
|
1737
1785
|
}, [isHintEligible]);
|
|
1738
|
-
(0,
|
|
1786
|
+
(0, import_react16.useEffect)(() => {
|
|
1739
1787
|
return () => {
|
|
1740
1788
|
if (monthViewAssistHintTimeoutRef.current) {
|
|
1741
1789
|
clearTimeout(monthViewAssistHintTimeoutRef.current);
|
|
1742
1790
|
}
|
|
1743
1791
|
};
|
|
1744
1792
|
}, []);
|
|
1745
|
-
const closeMonthViewAssistHint = (0,
|
|
1793
|
+
const closeMonthViewAssistHint = (0, import_react16.useCallback)(() => {
|
|
1746
1794
|
if (monthViewAssistHintTimeoutRef.current) {
|
|
1747
1795
|
clearTimeout(monthViewAssistHintTimeoutRef.current);
|
|
1748
1796
|
monthViewAssistHintTimeoutRef.current = null;
|
|
1749
1797
|
}
|
|
1750
1798
|
setIsMonthViewAssistHintOpen(false);
|
|
1751
1799
|
}, []);
|
|
1752
|
-
const showMonthViewAssistHint = (0,
|
|
1800
|
+
const showMonthViewAssistHint = (0, import_react16.useCallback)(() => {
|
|
1753
1801
|
const now = Date.now();
|
|
1754
1802
|
if (monthViewAssistHintShownInSessionRef.current) return;
|
|
1755
1803
|
if (now - lastMonthViewAssistHintShownAt < MONTH_VIEW_HINT_COOLDOWN_MS) return;
|
|
@@ -1764,7 +1812,7 @@ var Calendar = (0, import_react15.forwardRef)((inProps, ref) => {
|
|
|
1764
1812
|
monthViewAssistHintTimeoutRef.current = null;
|
|
1765
1813
|
}, MONTH_VIEW_HINT_DURATION_MS);
|
|
1766
1814
|
}, []);
|
|
1767
|
-
const trackFastMonthNavigation = (0,
|
|
1815
|
+
const trackFastMonthNavigation = (0, import_react16.useCallback)(() => {
|
|
1768
1816
|
if (!isHintEligible) return;
|
|
1769
1817
|
const now = Date.now();
|
|
1770
1818
|
monthNavClickTimestampsRef.current = [
|
|
@@ -1775,15 +1823,15 @@ var Calendar = (0, import_react15.forwardRef)((inProps, ref) => {
|
|
|
1775
1823
|
showMonthViewAssistHint();
|
|
1776
1824
|
}
|
|
1777
1825
|
}, [isHintEligible, showMonthViewAssistHint]);
|
|
1778
|
-
const handlePrevClick = (0,
|
|
1826
|
+
const handlePrevClick = (0, import_react16.useCallback)(() => {
|
|
1779
1827
|
onPrev();
|
|
1780
1828
|
trackFastMonthNavigation();
|
|
1781
1829
|
}, [onPrev, trackFastMonthNavigation]);
|
|
1782
|
-
const handleNextClick = (0,
|
|
1830
|
+
const handleNextClick = (0, import_react16.useCallback)(() => {
|
|
1783
1831
|
onNext();
|
|
1784
1832
|
trackFastMonthNavigation();
|
|
1785
1833
|
}, [onNext, trackFastMonthNavigation]);
|
|
1786
|
-
const handleSwitchViewClick = (0,
|
|
1834
|
+
const handleSwitchViewClick = (0, import_react16.useCallback)(() => {
|
|
1787
1835
|
closeMonthViewAssistHint();
|
|
1788
1836
|
onViewChange?.();
|
|
1789
1837
|
}, [closeMonthViewAssistHint, onViewChange]);
|
|
@@ -1803,9 +1851,9 @@ var Calendar = (0, import_react15.forwardRef)((inProps, ref) => {
|
|
|
1803
1851
|
onHoverMonthChange: setHoverMonth
|
|
1804
1852
|
};
|
|
1805
1853
|
});
|
|
1806
|
-
return /* @__PURE__ */
|
|
1854
|
+
return /* @__PURE__ */ import_react16.default.createElement(CalendarRoot, { ref, ...others, style: { maxWidth: `${maxWidth}px` } }, view === "month" ? (
|
|
1807
1855
|
// Month view: single header + single month grid (consistent with single-month path)
|
|
1808
|
-
/* @__PURE__ */
|
|
1856
|
+
/* @__PURE__ */ import_react16.default.createElement(import_react16.default.Fragment, null, /* @__PURE__ */ import_react16.default.createElement(CalendarHeader, null, /* @__PURE__ */ import_react16.default.createElement(IconButton_default, { size: "sm", onClick: handlePrevClick, "aria-label": "Previous Year" }, /* @__PURE__ */ import_react16.default.createElement(import_ChevronLeft.default, null)), /* @__PURE__ */ import_react16.default.createElement(
|
|
1809
1857
|
Tooltip_default,
|
|
1810
1858
|
{
|
|
1811
1859
|
title: monthViewHintMessage,
|
|
@@ -1817,7 +1865,7 @@ var Calendar = (0, import_react15.forwardRef)((inProps, ref) => {
|
|
|
1817
1865
|
disableTouchListener: true,
|
|
1818
1866
|
variant: "solid"
|
|
1819
1867
|
},
|
|
1820
|
-
/* @__PURE__ */
|
|
1868
|
+
/* @__PURE__ */ import_react16.default.createElement(
|
|
1821
1869
|
CalendarSwitchViewButton,
|
|
1822
1870
|
{
|
|
1823
1871
|
ownerState,
|
|
@@ -1828,8 +1876,8 @@ var Calendar = (0, import_react15.forwardRef)((inProps, ref) => {
|
|
|
1828
1876
|
},
|
|
1829
1877
|
calendarTitle
|
|
1830
1878
|
)
|
|
1831
|
-
), /* @__PURE__ */
|
|
1832
|
-
) : /* @__PURE__ */
|
|
1879
|
+
), /* @__PURE__ */ import_react16.default.createElement(IconButton_default, { size: "sm", onClick: handleNextClick, "aria-label": "Next Year" }, /* @__PURE__ */ import_react16.default.createElement(import_ChevronRight.default, null))), /* @__PURE__ */ import_react16.default.createElement(PickerMonths, { ownerState }))
|
|
1880
|
+
) : /* @__PURE__ */ import_react16.default.createElement(import_react16.default.Fragment, null, /* @__PURE__ */ import_react16.default.createElement(CalendarMultiContainer, null, panels.map((panelOwnerState, i) => /* @__PURE__ */ import_react16.default.createElement(
|
|
1833
1881
|
CalendarPanel,
|
|
1834
1882
|
{
|
|
1835
1883
|
key: panelOwnerState.viewMonth.toISOString(),
|
|
@@ -1842,7 +1890,7 @@ var Calendar = (0, import_react15.forwardRef)((inProps, ref) => {
|
|
|
1842
1890
|
isMonthViewAssistHintOpen,
|
|
1843
1891
|
monthViewHintMessage
|
|
1844
1892
|
}
|
|
1845
|
-
))), /* @__PURE__ */
|
|
1893
|
+
))), /* @__PURE__ */ import_react16.default.createElement(
|
|
1846
1894
|
MultiMonthPickerDays,
|
|
1847
1895
|
{
|
|
1848
1896
|
panels,
|
|
@@ -1851,7 +1899,7 @@ var Calendar = (0, import_react15.forwardRef)((inProps, ref) => {
|
|
|
1851
1899
|
}
|
|
1852
1900
|
)));
|
|
1853
1901
|
}
|
|
1854
|
-
return /* @__PURE__ */
|
|
1902
|
+
return /* @__PURE__ */ import_react16.default.createElement(CalendarRoot, { ref, ...others, style: { maxWidth: `${maxWidth}px` } }, /* @__PURE__ */ import_react16.default.createElement(CalendarHeader, null, /* @__PURE__ */ import_react16.default.createElement(IconButton_default, { size: "sm", onClick: handlePrevClick, "aria-label": `Previous ${view === "day" ? "Month" : "Year"}` }, /* @__PURE__ */ import_react16.default.createElement(import_ChevronLeft.default, null)), /* @__PURE__ */ import_react16.default.createElement(
|
|
1855
1903
|
Tooltip_default,
|
|
1856
1904
|
{
|
|
1857
1905
|
title: monthViewHintMessage,
|
|
@@ -1863,7 +1911,7 @@ var Calendar = (0, import_react15.forwardRef)((inProps, ref) => {
|
|
|
1863
1911
|
disableTouchListener: true,
|
|
1864
1912
|
variant: "solid"
|
|
1865
1913
|
},
|
|
1866
|
-
/* @__PURE__ */
|
|
1914
|
+
/* @__PURE__ */ import_react16.default.createElement(
|
|
1867
1915
|
CalendarSwitchViewButton,
|
|
1868
1916
|
{
|
|
1869
1917
|
ownerState,
|
|
@@ -1874,7 +1922,7 @@ var Calendar = (0, import_react15.forwardRef)((inProps, ref) => {
|
|
|
1874
1922
|
},
|
|
1875
1923
|
calendarTitle
|
|
1876
1924
|
)
|
|
1877
|
-
), /* @__PURE__ */
|
|
1925
|
+
), /* @__PURE__ */ import_react16.default.createElement(IconButton_default, { size: "sm", onClick: handleNextClick, "aria-label": `Next ${view === "day" ? "Month" : "Year"}` }, /* @__PURE__ */ import_react16.default.createElement(import_ChevronRight.default, null))), view === "day" && /* @__PURE__ */ import_react16.default.createElement(PickerDays, { ownerState }), view === "month" && /* @__PURE__ */ import_react16.default.createElement(PickerMonths, { ownerState }));
|
|
1878
1926
|
});
|
|
1879
1927
|
Calendar.displayName = "Calendar";
|
|
1880
1928
|
|
|
@@ -1901,12 +1949,12 @@ var CardOverflow = MotionCardOverflow;
|
|
|
1901
1949
|
CardOverflow.displayName = "CardOverflow";
|
|
1902
1950
|
|
|
1903
1951
|
// src/components/Checkbox/Checkbox.tsx
|
|
1904
|
-
var
|
|
1952
|
+
var import_react17 = __toESM(require("react"));
|
|
1905
1953
|
var import_joy22 = require("@mui/joy");
|
|
1906
1954
|
var import_framer_motion15 = require("framer-motion");
|
|
1907
1955
|
var MotionCheckbox = (0, import_framer_motion15.motion)(import_joy22.Checkbox);
|
|
1908
1956
|
var Checkbox = (props) => {
|
|
1909
|
-
return /* @__PURE__ */
|
|
1957
|
+
return /* @__PURE__ */ import_react17.default.createElement(MotionCheckbox, { ...props });
|
|
1910
1958
|
};
|
|
1911
1959
|
Checkbox.displayName = "Checkbox";
|
|
1912
1960
|
|
|
@@ -1915,7 +1963,7 @@ var Checkbox_default = Checkbox;
|
|
|
1915
1963
|
|
|
1916
1964
|
// src/components/Container/Container.tsx
|
|
1917
1965
|
var import_joy23 = require("@mui/joy");
|
|
1918
|
-
var
|
|
1966
|
+
var import_react18 = __toESM(require("react"));
|
|
1919
1967
|
var ContainerRoot = (0, import_joy23.styled)("div", {
|
|
1920
1968
|
name: "Container",
|
|
1921
1969
|
slot: "root",
|
|
@@ -1941,24 +1989,24 @@ var ContainerRoot = (0, import_joy23.styled)("div", {
|
|
|
1941
1989
|
paddingRight: theme.breakpoints.values[overrideBreakpoint] >= theme.breakpoints.values.lg ? theme.spacing(8) : theme.spacing(4)
|
|
1942
1990
|
} : null
|
|
1943
1991
|
]);
|
|
1944
|
-
var Container = (0,
|
|
1945
|
-
return /* @__PURE__ */
|
|
1992
|
+
var Container = (0, import_react18.forwardRef)(function Container2(props, ref) {
|
|
1993
|
+
return /* @__PURE__ */ import_react18.default.createElement(ContainerRoot, { ref, ...props });
|
|
1946
1994
|
});
|
|
1947
1995
|
Container.displayName = "Container";
|
|
1948
1996
|
|
|
1949
1997
|
// src/components/CurrencyInput/CurrencyInput.tsx
|
|
1950
|
-
var
|
|
1998
|
+
var import_react20 = __toESM(require("react"));
|
|
1951
1999
|
var import_react_number_format = require("react-number-format");
|
|
1952
2000
|
|
|
1953
2001
|
// src/components/Input/Input.tsx
|
|
1954
|
-
var
|
|
2002
|
+
var import_react19 = __toESM(require("react"));
|
|
1955
2003
|
var import_joy24 = require("@mui/joy");
|
|
1956
2004
|
var import_framer_motion16 = require("framer-motion");
|
|
1957
2005
|
var import_Close2 = __toESM(require("@mui/icons-material/Close"));
|
|
1958
2006
|
var import_Visibility = __toESM(require("@mui/icons-material/Visibility"));
|
|
1959
2007
|
var import_VisibilityOff = __toESM(require("@mui/icons-material/VisibilityOff"));
|
|
1960
2008
|
var MotionInput = (0, import_framer_motion16.motion)(import_joy24.Input);
|
|
1961
|
-
var Input =
|
|
2009
|
+
var Input = import_react19.default.forwardRef((props, ref) => {
|
|
1962
2010
|
const {
|
|
1963
2011
|
label,
|
|
1964
2012
|
helperText,
|
|
@@ -1985,11 +2033,11 @@ var Input = import_react18.default.forwardRef((props, ref) => {
|
|
|
1985
2033
|
if (type === "password" && innerProps.endDecorator) {
|
|
1986
2034
|
console.warn('Input: endDecorator is not supported when type="password"');
|
|
1987
2035
|
}
|
|
1988
|
-
const [passwordVisible, setPasswordVisible] = (0,
|
|
2036
|
+
const [passwordVisible, setPasswordVisible] = (0, import_react19.useState)(false);
|
|
1989
2037
|
const [value, setValue] = useControlledState(
|
|
1990
2038
|
valueProp,
|
|
1991
2039
|
defaultValueProp ?? null,
|
|
1992
|
-
(0,
|
|
2040
|
+
(0, import_react19.useCallback)(
|
|
1993
2041
|
(value2) => {
|
|
1994
2042
|
onChange?.({
|
|
1995
2043
|
/**
|
|
@@ -2016,7 +2064,7 @@ var Input = import_react18.default.forwardRef((props, ref) => {
|
|
|
2016
2064
|
const actualType = type === "password" && passwordVisible ? "text" : type;
|
|
2017
2065
|
const isPasswordType = type === "password";
|
|
2018
2066
|
const showPasswordToggle = isPasswordType && !disableTogglePasswordButton;
|
|
2019
|
-
const input = /* @__PURE__ */
|
|
2067
|
+
const input = /* @__PURE__ */ import_react19.default.createElement(
|
|
2020
2068
|
MotionInput,
|
|
2021
2069
|
{
|
|
2022
2070
|
value: displayValue ?? "",
|
|
@@ -2031,7 +2079,7 @@ var Input = import_react18.default.forwardRef((props, ref) => {
|
|
|
2031
2079
|
...innerProps.slotProps
|
|
2032
2080
|
},
|
|
2033
2081
|
...innerProps,
|
|
2034
|
-
endDecorator: isPasswordType ? showPasswordToggle ? /* @__PURE__ */
|
|
2082
|
+
endDecorator: isPasswordType ? showPasswordToggle ? /* @__PURE__ */ import_react19.default.createElement(Stack_default, { gap: 1, direction: "row" }, /* @__PURE__ */ import_react19.default.createElement(
|
|
2035
2083
|
IconButton_default,
|
|
2036
2084
|
{
|
|
2037
2085
|
onMouseDown: (e) => e.preventDefault(),
|
|
@@ -2039,19 +2087,19 @@ var Input = import_react18.default.forwardRef((props, ref) => {
|
|
|
2039
2087
|
disabled,
|
|
2040
2088
|
"aria-label": passwordVisible ? "Hide password" : "Show password"
|
|
2041
2089
|
},
|
|
2042
|
-
passwordVisible ? /* @__PURE__ */
|
|
2043
|
-
)) : null : enableClearable ? /* @__PURE__ */
|
|
2090
|
+
passwordVisible ? /* @__PURE__ */ import_react19.default.createElement(import_VisibilityOff.default, null) : /* @__PURE__ */ import_react19.default.createElement(import_Visibility.default, null)
|
|
2091
|
+
)) : null : enableClearable ? /* @__PURE__ */ import_react19.default.createElement(Stack_default, { gap: 1, direction: "row" }, innerProps.endDecorator, displayValue && /* @__PURE__ */ import_react19.default.createElement(
|
|
2044
2092
|
IconButton_default,
|
|
2045
2093
|
{
|
|
2046
2094
|
onMouseDown: (e) => e.preventDefault(),
|
|
2047
2095
|
onClick: handleClear,
|
|
2048
2096
|
"aria-label": "Clear"
|
|
2049
2097
|
},
|
|
2050
|
-
/* @__PURE__ */
|
|
2098
|
+
/* @__PURE__ */ import_react19.default.createElement(import_Close2.default, null)
|
|
2051
2099
|
)) : innerProps.endDecorator
|
|
2052
2100
|
}
|
|
2053
2101
|
);
|
|
2054
|
-
return /* @__PURE__ */
|
|
2102
|
+
return /* @__PURE__ */ import_react19.default.createElement(
|
|
2055
2103
|
FormControl_default,
|
|
2056
2104
|
{
|
|
2057
2105
|
required,
|
|
@@ -2062,9 +2110,9 @@ var Input = import_react18.default.forwardRef((props, ref) => {
|
|
|
2062
2110
|
sx,
|
|
2063
2111
|
className
|
|
2064
2112
|
},
|
|
2065
|
-
label && /* @__PURE__ */
|
|
2113
|
+
label && /* @__PURE__ */ import_react19.default.createElement(FormLabel_default, null, label),
|
|
2066
2114
|
input,
|
|
2067
|
-
helperText && /* @__PURE__ */
|
|
2115
|
+
helperText && /* @__PURE__ */ import_react19.default.createElement(FormHelperText_default, null, helperText)
|
|
2068
2116
|
);
|
|
2069
2117
|
});
|
|
2070
2118
|
Input.displayName = "Input";
|
|
@@ -2236,9 +2284,9 @@ var useCurrencySetting = (props) => {
|
|
|
2236
2284
|
};
|
|
2237
2285
|
|
|
2238
2286
|
// src/components/CurrencyInput/CurrencyInput.tsx
|
|
2239
|
-
var TextMaskAdapter =
|
|
2287
|
+
var TextMaskAdapter = import_react20.default.forwardRef(function TextMaskAdapter2(props, ref) {
|
|
2240
2288
|
const { onChange, ...innerProps } = props;
|
|
2241
|
-
return /* @__PURE__ */
|
|
2289
|
+
return /* @__PURE__ */ import_react20.default.createElement(
|
|
2242
2290
|
import_react_number_format.NumericFormat,
|
|
2243
2291
|
{
|
|
2244
2292
|
...innerProps,
|
|
@@ -2258,7 +2306,7 @@ var CurrencyInputRoot = (0, import_joy25.styled)(Input_default, {
|
|
|
2258
2306
|
slot: "root",
|
|
2259
2307
|
overridesResolver: (props, styles) => styles.root
|
|
2260
2308
|
})({});
|
|
2261
|
-
var CurrencyInput =
|
|
2309
|
+
var CurrencyInput = import_react20.default.forwardRef(function CurrencyInput2(inProps, ref) {
|
|
2262
2310
|
const props = (0, import_joy25.useThemeProps)({ props: inProps, name: "CurrencyInput" });
|
|
2263
2311
|
const {
|
|
2264
2312
|
currency = "USD",
|
|
@@ -2279,22 +2327,22 @@ var CurrencyInput = import_react19.default.forwardRef(function CurrencyInput2(in
|
|
|
2279
2327
|
const [_value, setValue] = useControlledState(
|
|
2280
2328
|
props.value,
|
|
2281
2329
|
props.defaultValue ?? null,
|
|
2282
|
-
(0,
|
|
2330
|
+
(0, import_react20.useCallback)((value2) => onChange?.({ target: { name, value: value2 } }), [onChange, name])
|
|
2283
2331
|
);
|
|
2284
|
-
const value = (0,
|
|
2332
|
+
const value = (0, import_react20.useMemo)(() => {
|
|
2285
2333
|
if (_value && useMinorUnit) {
|
|
2286
2334
|
return _value / Math.pow(10, decimalScale);
|
|
2287
2335
|
}
|
|
2288
2336
|
return _value;
|
|
2289
2337
|
}, [_value, useMinorUnit, decimalScale]);
|
|
2290
|
-
const max = (0,
|
|
2338
|
+
const max = (0, import_react20.useMemo)(() => {
|
|
2291
2339
|
if (props.max && useMinorUnit) {
|
|
2292
2340
|
return props.max / Math.pow(10, decimalScale);
|
|
2293
2341
|
}
|
|
2294
2342
|
return props.max;
|
|
2295
2343
|
}, [props.max, useMinorUnit, decimalScale]);
|
|
2296
|
-
const isOverLimit = (0,
|
|
2297
|
-
const handleChange = (0,
|
|
2344
|
+
const isOverLimit = (0, import_react20.useMemo)(() => max != null && value != null && value > max, [max, value]);
|
|
2345
|
+
const handleChange = (0, import_react20.useCallback)(
|
|
2298
2346
|
(event) => {
|
|
2299
2347
|
if (event.target.value === "") {
|
|
2300
2348
|
setValue(null);
|
|
@@ -2305,7 +2353,7 @@ var CurrencyInput = import_react19.default.forwardRef(function CurrencyInput2(in
|
|
|
2305
2353
|
},
|
|
2306
2354
|
[decimalSeparator, useMinorUnit, setValue]
|
|
2307
2355
|
);
|
|
2308
|
-
return /* @__PURE__ */
|
|
2356
|
+
return /* @__PURE__ */ import_react20.default.createElement(
|
|
2309
2357
|
CurrencyInputRoot,
|
|
2310
2358
|
{
|
|
2311
2359
|
...innerProps,
|
|
@@ -2342,7 +2390,7 @@ var CurrencyInput = import_react19.default.forwardRef(function CurrencyInput2(in
|
|
|
2342
2390
|
var CurrencyInput_default = CurrencyInput;
|
|
2343
2391
|
|
|
2344
2392
|
// src/components/DataTable/DataTable.tsx
|
|
2345
|
-
var
|
|
2393
|
+
var import_react30 = __toESM(require("react"));
|
|
2346
2394
|
var import_react_virtual2 = require("@tanstack/react-virtual");
|
|
2347
2395
|
|
|
2348
2396
|
// src/libs/text-measurer.ts
|
|
@@ -2570,9 +2618,15 @@ function computeAutoFitWidth(params) {
|
|
|
2570
2618
|
if (!isNaN(maxPx) && maxPx > 0) finalWidth = Math.min(finalWidth, maxPx);
|
|
2571
2619
|
return finalWidth;
|
|
2572
2620
|
}
|
|
2621
|
+
function getHeaderCellId(tableId, field) {
|
|
2622
|
+
return `${tableId}_header_${sanitizeColumnId(field)}`;
|
|
2623
|
+
}
|
|
2624
|
+
function sanitizeColumnId(field) {
|
|
2625
|
+
return String(field).trim().replace(/\s+/g, "_");
|
|
2626
|
+
}
|
|
2573
2627
|
|
|
2574
2628
|
// src/components/DataTable/styled.tsx
|
|
2575
|
-
var
|
|
2629
|
+
var import_react21 = __toESM(require("react"));
|
|
2576
2630
|
var import_joy26 = require("@mui/joy");
|
|
2577
2631
|
var import_framer_motion17 = require("framer-motion");
|
|
2578
2632
|
var import_ArrowUpwardRounded = __toESM(require("@mui/icons-material/ArrowUpwardRounded"));
|
|
@@ -2678,9 +2732,9 @@ var StyledTd = (0, import_joy26.styled)("td")(({ theme }) => ({
|
|
|
2678
2732
|
}
|
|
2679
2733
|
}));
|
|
2680
2734
|
var MotionSortIcon = (0, import_framer_motion17.motion)(import_ArrowUpwardRounded.default);
|
|
2681
|
-
var DefaultLoadingOverlay = () => /* @__PURE__ */
|
|
2682
|
-
var DefaultNoRowsOverlay = () => /* @__PURE__ */
|
|
2683
|
-
var Resizer = (ref, targetRef = ref, onResizeStateChange, onAutoFit) => /* @__PURE__ */
|
|
2735
|
+
var DefaultLoadingOverlay = () => /* @__PURE__ */ import_react21.default.createElement(import_joy26.LinearProgress, { value: 8, variant: "plain" });
|
|
2736
|
+
var DefaultNoRowsOverlay = () => /* @__PURE__ */ import_react21.default.createElement(import_joy26.Typography, { level: "body-sm", textColor: "text.tertiary" }, "No rows");
|
|
2737
|
+
var Resizer = (ref, targetRef = ref, onResizeStateChange, onAutoFit) => /* @__PURE__ */ import_react21.default.createElement(
|
|
2684
2738
|
Box_default,
|
|
2685
2739
|
{
|
|
2686
2740
|
sx: {
|
|
@@ -2757,12 +2811,12 @@ var Resizer = (ref, targetRef = ref, onResizeStateChange, onAutoFit) => /* @__PU
|
|
|
2757
2811
|
);
|
|
2758
2812
|
|
|
2759
2813
|
// src/components/DataTable/components.tsx
|
|
2760
|
-
var
|
|
2814
|
+
var import_react26 = __toESM(require("react"));
|
|
2761
2815
|
var import_joy33 = require("@mui/joy");
|
|
2762
2816
|
var import_framer_motion21 = require("framer-motion");
|
|
2763
2817
|
|
|
2764
2818
|
// src/components/DatePicker/DatePicker.tsx
|
|
2765
|
-
var
|
|
2819
|
+
var import_react22 = __toESM(require("react"));
|
|
2766
2820
|
var import_react_imask = require("react-imask");
|
|
2767
2821
|
var import_CalendarToday = __toESM(require("@mui/icons-material/CalendarToday"));
|
|
2768
2822
|
var import_joy29 = require("@mui/joy");
|
|
@@ -2915,9 +2969,9 @@ function parseDate(dateString, format) {
|
|
|
2915
2969
|
var formatToPattern = (format) => {
|
|
2916
2970
|
return format.replace(/YYYY/g, "Y").replace(/MM/g, "M").replace(/DD/g, "D").replace(/[^YMD\s]/g, (match) => `${match}\``);
|
|
2917
2971
|
};
|
|
2918
|
-
var TextMaskAdapter3 =
|
|
2972
|
+
var TextMaskAdapter3 = import_react22.default.forwardRef(function TextMaskAdapter4(props, ref) {
|
|
2919
2973
|
const { onChange, format, ...other } = props;
|
|
2920
|
-
return /* @__PURE__ */
|
|
2974
|
+
return /* @__PURE__ */ import_react22.default.createElement(
|
|
2921
2975
|
import_react_imask.IMaskInput,
|
|
2922
2976
|
{
|
|
2923
2977
|
...other,
|
|
@@ -2952,7 +3006,7 @@ var TextMaskAdapter3 = import_react21.default.forwardRef(function TextMaskAdapte
|
|
|
2952
3006
|
}
|
|
2953
3007
|
);
|
|
2954
3008
|
});
|
|
2955
|
-
var DatePicker = (0,
|
|
3009
|
+
var DatePicker = (0, import_react22.forwardRef)((inProps, ref) => {
|
|
2956
3010
|
const props = (0, import_joy29.useThemeProps)({ props: inProps, name: "DatePicker" });
|
|
2957
3011
|
const {
|
|
2958
3012
|
onChange,
|
|
@@ -2979,29 +3033,29 @@ var DatePicker = (0, import_react21.forwardRef)((inProps, ref) => {
|
|
|
2979
3033
|
presets,
|
|
2980
3034
|
...innerProps
|
|
2981
3035
|
} = props;
|
|
2982
|
-
const innerRef = (0,
|
|
2983
|
-
const buttonRef = (0,
|
|
3036
|
+
const innerRef = (0, import_react22.useRef)(null);
|
|
3037
|
+
const buttonRef = (0, import_react22.useRef)(null);
|
|
2984
3038
|
const [rawValue, setValue] = useControlledState(
|
|
2985
3039
|
props.value,
|
|
2986
3040
|
props.defaultValue ?? null,
|
|
2987
|
-
(0,
|
|
3041
|
+
(0, import_react22.useCallback)(
|
|
2988
3042
|
(value2) => onChange?.({ target: { name: props.name, value: value2 ?? "" } }),
|
|
2989
3043
|
[props.name, onChange]
|
|
2990
3044
|
)
|
|
2991
3045
|
);
|
|
2992
3046
|
const value = rawValue ?? "";
|
|
2993
3047
|
const isAlphabeticDisplay = hasAlphabeticMonth(displayFormat);
|
|
2994
|
-
const [displayValue, setDisplayValue] = (0,
|
|
3048
|
+
const [displayValue, setDisplayValue] = (0, import_react22.useState)(
|
|
2995
3049
|
() => value ? formatValueString(parseDate(value, format), displayFormat, locale) : ""
|
|
2996
3050
|
);
|
|
2997
|
-
const [anchorEl, setAnchorEl] = (0,
|
|
3051
|
+
const [anchorEl, setAnchorEl] = (0, import_react22.useState)(null);
|
|
2998
3052
|
const open = Boolean(anchorEl);
|
|
2999
|
-
(0,
|
|
3053
|
+
(0, import_react22.useEffect)(() => {
|
|
3000
3054
|
if (!anchorEl) {
|
|
3001
3055
|
innerRef.current?.blur();
|
|
3002
3056
|
}
|
|
3003
3057
|
}, [anchorEl, innerRef]);
|
|
3004
|
-
(0,
|
|
3058
|
+
(0, import_react22.useEffect)(() => {
|
|
3005
3059
|
if (value === "") {
|
|
3006
3060
|
setDisplayValue("");
|
|
3007
3061
|
return;
|
|
@@ -3011,8 +3065,8 @@ var DatePicker = (0, import_react21.forwardRef)((inProps, ref) => {
|
|
|
3011
3065
|
setDisplayValue(formattedValue);
|
|
3012
3066
|
}
|
|
3013
3067
|
}, [displayFormat, displayValue, format, locale, value]);
|
|
3014
|
-
(0,
|
|
3015
|
-
const handleChange = (0,
|
|
3068
|
+
(0, import_react22.useImperativeHandle)(ref, () => innerRef.current, [innerRef]);
|
|
3069
|
+
const handleChange = (0, import_react22.useCallback)(
|
|
3016
3070
|
(event) => {
|
|
3017
3071
|
const value2 = event.target.value;
|
|
3018
3072
|
setDisplayValue(value2 ? formatValueString(parseDate(value2, format), displayFormat, locale) : value2);
|
|
@@ -3020,7 +3074,7 @@ var DatePicker = (0, import_react21.forwardRef)((inProps, ref) => {
|
|
|
3020
3074
|
},
|
|
3021
3075
|
[displayFormat, format, locale, setValue]
|
|
3022
3076
|
);
|
|
3023
|
-
const handleDisplayInputChange = (0,
|
|
3077
|
+
const handleDisplayInputChange = (0, import_react22.useCallback)(
|
|
3024
3078
|
(event) => {
|
|
3025
3079
|
if (event.target.value === "") {
|
|
3026
3080
|
handleChange({
|
|
@@ -3045,7 +3099,7 @@ var DatePicker = (0, import_react21.forwardRef)((inProps, ref) => {
|
|
|
3045
3099
|
},
|
|
3046
3100
|
[displayFormat, format, handleChange, props.name]
|
|
3047
3101
|
);
|
|
3048
|
-
const handleCalendarToggle = (0,
|
|
3102
|
+
const handleCalendarToggle = (0, import_react22.useCallback)(
|
|
3049
3103
|
(event) => {
|
|
3050
3104
|
setAnchorEl(anchorEl ? null : event.currentTarget);
|
|
3051
3105
|
setTimeout(() => {
|
|
@@ -3054,7 +3108,7 @@ var DatePicker = (0, import_react21.forwardRef)((inProps, ref) => {
|
|
|
3054
3108
|
},
|
|
3055
3109
|
[anchorEl, setAnchorEl, innerRef]
|
|
3056
3110
|
);
|
|
3057
|
-
const handleInputMouseDown = (0,
|
|
3111
|
+
const handleInputMouseDown = (0, import_react22.useCallback)(
|
|
3058
3112
|
(event) => {
|
|
3059
3113
|
if (inputReadOnly || isAlphabeticDisplay) {
|
|
3060
3114
|
event.preventDefault();
|
|
@@ -3063,7 +3117,7 @@ var DatePicker = (0, import_react21.forwardRef)((inProps, ref) => {
|
|
|
3063
3117
|
},
|
|
3064
3118
|
[inputReadOnly, isAlphabeticDisplay, buttonRef]
|
|
3065
3119
|
);
|
|
3066
|
-
const handleInputClick = (0,
|
|
3120
|
+
const handleInputClick = (0, import_react22.useCallback)(
|
|
3067
3121
|
(event) => {
|
|
3068
3122
|
if (inputReadOnly && !readOnly) {
|
|
3069
3123
|
handleCalendarToggle(event);
|
|
@@ -3071,7 +3125,7 @@ var DatePicker = (0, import_react21.forwardRef)((inProps, ref) => {
|
|
|
3071
3125
|
},
|
|
3072
3126
|
[inputReadOnly, readOnly, handleCalendarToggle]
|
|
3073
3127
|
);
|
|
3074
|
-
const handlePresetClick = (0,
|
|
3128
|
+
const handlePresetClick = (0, import_react22.useCallback)(
|
|
3075
3129
|
(presetValue) => {
|
|
3076
3130
|
handleChange({
|
|
3077
3131
|
target: {
|
|
@@ -3083,7 +3137,7 @@ var DatePicker = (0, import_react21.forwardRef)((inProps, ref) => {
|
|
|
3083
3137
|
},
|
|
3084
3138
|
[handleChange, props.name]
|
|
3085
3139
|
);
|
|
3086
|
-
const isPresetDisabled = (0,
|
|
3140
|
+
const isPresetDisabled = (0, import_react22.useCallback)(
|
|
3087
3141
|
(presetValue) => {
|
|
3088
3142
|
try {
|
|
3089
3143
|
const date = parseDate(presetValue, format);
|
|
@@ -3100,7 +3154,7 @@ var DatePicker = (0, import_react21.forwardRef)((inProps, ref) => {
|
|
|
3100
3154
|
},
|
|
3101
3155
|
[format, minDate, maxDate, disableFuture, disablePast, shouldDisableDate]
|
|
3102
3156
|
);
|
|
3103
|
-
return /* @__PURE__ */
|
|
3157
|
+
return /* @__PURE__ */ import_react22.default.createElement(DatePickerRoot, { sx, className }, /* @__PURE__ */ import_react22.default.createElement(import_base3.FocusTrap, { open: true }, /* @__PURE__ */ import_react22.default.createElement(import_react22.default.Fragment, null, /* @__PURE__ */ import_react22.default.createElement(
|
|
3104
3158
|
Input_default,
|
|
3105
3159
|
{
|
|
3106
3160
|
...innerProps,
|
|
@@ -3127,7 +3181,7 @@ var DatePicker = (0, import_react21.forwardRef)((inProps, ref) => {
|
|
|
3127
3181
|
}
|
|
3128
3182
|
},
|
|
3129
3183
|
sx: { width: "100%" },
|
|
3130
|
-
endDecorator: /* @__PURE__ */
|
|
3184
|
+
endDecorator: /* @__PURE__ */ import_react22.default.createElement(
|
|
3131
3185
|
CalendarButton,
|
|
3132
3186
|
{
|
|
3133
3187
|
ref: buttonRef,
|
|
@@ -3139,13 +3193,13 @@ var DatePicker = (0, import_react21.forwardRef)((inProps, ref) => {
|
|
|
3139
3193
|
"aria-expanded": open,
|
|
3140
3194
|
disabled
|
|
3141
3195
|
},
|
|
3142
|
-
/* @__PURE__ */
|
|
3196
|
+
/* @__PURE__ */ import_react22.default.createElement(import_CalendarToday.default, null)
|
|
3143
3197
|
),
|
|
3144
3198
|
label,
|
|
3145
3199
|
helperText,
|
|
3146
3200
|
readOnly: readOnly || inputReadOnly || isAlphabeticDisplay
|
|
3147
3201
|
}
|
|
3148
|
-
), open && /* @__PURE__ */
|
|
3202
|
+
), open && /* @__PURE__ */ import_react22.default.createElement(import_base3.ClickAwayListener, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ import_react22.default.createElement(
|
|
3149
3203
|
StyledPopper,
|
|
3150
3204
|
{
|
|
3151
3205
|
id: "date-picker-popper",
|
|
@@ -3164,7 +3218,7 @@ var DatePicker = (0, import_react21.forwardRef)((inProps, ref) => {
|
|
|
3164
3218
|
"aria-label": "Calendar Tooltip",
|
|
3165
3219
|
"aria-expanded": open
|
|
3166
3220
|
},
|
|
3167
|
-
/* @__PURE__ */
|
|
3221
|
+
/* @__PURE__ */ import_react22.default.createElement(CalendarSheet, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ import_react22.default.createElement(CalendarSheetContent, null, /* @__PURE__ */ import_react22.default.createElement(CalendarSection, null, /* @__PURE__ */ import_react22.default.createElement(
|
|
3168
3222
|
Calendar_default,
|
|
3169
3223
|
{
|
|
3170
3224
|
value: value && !Number.isNaN(parseDate(value, format).getTime()) ? [parseDate(value, format), void 0] : void 0,
|
|
@@ -3184,14 +3238,14 @@ var DatePicker = (0, import_react21.forwardRef)((inProps, ref) => {
|
|
|
3184
3238
|
shouldDisableDate: shouldDisableDate ? (date) => shouldDisableDate(formatValueString(date, format)) : void 0,
|
|
3185
3239
|
locale
|
|
3186
3240
|
}
|
|
3187
|
-
), !hideClearButton && /* @__PURE__ */
|
|
3241
|
+
), !hideClearButton && /* @__PURE__ */ import_react22.default.createElement(
|
|
3188
3242
|
DialogActions_default,
|
|
3189
3243
|
{
|
|
3190
3244
|
sx: {
|
|
3191
3245
|
p: 1
|
|
3192
3246
|
}
|
|
3193
3247
|
},
|
|
3194
|
-
/* @__PURE__ */
|
|
3248
|
+
/* @__PURE__ */ import_react22.default.createElement(
|
|
3195
3249
|
Button_default,
|
|
3196
3250
|
{
|
|
3197
3251
|
size,
|
|
@@ -3209,9 +3263,9 @@ var DatePicker = (0, import_react21.forwardRef)((inProps, ref) => {
|
|
|
3209
3263
|
},
|
|
3210
3264
|
"Clear"
|
|
3211
3265
|
)
|
|
3212
|
-
)), presets && presets.length > 0 && /* @__PURE__ */
|
|
3266
|
+
)), presets && presets.length > 0 && /* @__PURE__ */ import_react22.default.createElement(PresetPanel, null, presets.map((preset) => {
|
|
3213
3267
|
const disabled2 = isPresetDisabled(preset.value);
|
|
3214
|
-
return /* @__PURE__ */
|
|
3268
|
+
return /* @__PURE__ */ import_react22.default.createElement(
|
|
3215
3269
|
PresetItem,
|
|
3216
3270
|
{
|
|
3217
3271
|
key: preset.label,
|
|
@@ -3232,11 +3286,11 @@ var DatePicker = (0, import_react21.forwardRef)((inProps, ref) => {
|
|
|
3232
3286
|
var DatePicker_default = DatePicker;
|
|
3233
3287
|
|
|
3234
3288
|
// src/components/Textarea/Textarea.tsx
|
|
3235
|
-
var
|
|
3289
|
+
var import_react23 = __toESM(require("react"));
|
|
3236
3290
|
var import_joy30 = require("@mui/joy");
|
|
3237
3291
|
var import_framer_motion19 = require("framer-motion");
|
|
3238
3292
|
var MotionTextarea = (0, import_framer_motion19.motion)(import_joy30.Textarea);
|
|
3239
|
-
var
|
|
3293
|
+
var TextareaBase = (props) => {
|
|
3240
3294
|
const {
|
|
3241
3295
|
label,
|
|
3242
3296
|
error,
|
|
@@ -3252,7 +3306,7 @@ var Textarea = (props) => {
|
|
|
3252
3306
|
className,
|
|
3253
3307
|
...innerProps
|
|
3254
3308
|
} = props;
|
|
3255
|
-
const textarea = /* @__PURE__ */
|
|
3309
|
+
const textarea = /* @__PURE__ */ import_react23.default.createElement(
|
|
3256
3310
|
MotionTextarea,
|
|
3257
3311
|
{
|
|
3258
3312
|
required,
|
|
@@ -3264,7 +3318,7 @@ var Textarea = (props) => {
|
|
|
3264
3318
|
...innerProps
|
|
3265
3319
|
}
|
|
3266
3320
|
);
|
|
3267
|
-
return /* @__PURE__ */
|
|
3321
|
+
return /* @__PURE__ */ import_react23.default.createElement(
|
|
3268
3322
|
FormControl_default,
|
|
3269
3323
|
{
|
|
3270
3324
|
required,
|
|
@@ -3275,18 +3329,22 @@ var Textarea = (props) => {
|
|
|
3275
3329
|
sx,
|
|
3276
3330
|
className
|
|
3277
3331
|
},
|
|
3278
|
-
label && /* @__PURE__ */
|
|
3332
|
+
label && /* @__PURE__ */ import_react23.default.createElement(FormLabel_default, null, label),
|
|
3279
3333
|
textarea,
|
|
3280
|
-
helperText && /* @__PURE__ */
|
|
3334
|
+
helperText && /* @__PURE__ */ import_react23.default.createElement(FormHelperText_default, null, helperText)
|
|
3281
3335
|
);
|
|
3282
3336
|
};
|
|
3337
|
+
var Textarea = import_react23.default.forwardRef((props, ref) => {
|
|
3338
|
+
const textareaSlotProps = useSlotRef(props.slotProps?.textarea, ref);
|
|
3339
|
+
return /* @__PURE__ */ import_react23.default.createElement(TextareaBase, { ...props, slotProps: { ...props.slotProps, textarea: textareaSlotProps } });
|
|
3340
|
+
});
|
|
3283
3341
|
Textarea.displayName = "Textarea";
|
|
3284
3342
|
|
|
3285
3343
|
// src/components/Textarea/index.ts
|
|
3286
3344
|
var Textarea_default = Textarea;
|
|
3287
3345
|
|
|
3288
3346
|
// src/components/Select/Select.tsx
|
|
3289
|
-
var
|
|
3347
|
+
var import_react24 = __toESM(require("react"));
|
|
3290
3348
|
var import_joy31 = require("@mui/joy");
|
|
3291
3349
|
var import_framer_motion20 = require("framer-motion");
|
|
3292
3350
|
var MotionOption = (0, import_framer_motion20.motion)(import_joy31.Option);
|
|
@@ -3297,7 +3355,7 @@ var secondaryTextLevelMap2 = {
|
|
|
3297
3355
|
lg: "body-md"
|
|
3298
3356
|
};
|
|
3299
3357
|
Option.displayName = "Option";
|
|
3300
|
-
function
|
|
3358
|
+
function SelectInner(props, ref) {
|
|
3301
3359
|
const {
|
|
3302
3360
|
label,
|
|
3303
3361
|
helperText,
|
|
@@ -3323,7 +3381,7 @@ function Select(props) {
|
|
|
3323
3381
|
formHelperText: formHelperTextProps,
|
|
3324
3382
|
...joySlotProps
|
|
3325
3383
|
} = slotProps ?? {};
|
|
3326
|
-
const options = (0,
|
|
3384
|
+
const options = (0, import_react24.useMemo)(
|
|
3327
3385
|
() => props.options.map((option) => {
|
|
3328
3386
|
if (option.hasOwnProperty("value") && option.hasOwnProperty("label")) {
|
|
3329
3387
|
return option;
|
|
@@ -3348,14 +3406,15 @@ function Select(props) {
|
|
|
3348
3406
|
};
|
|
3349
3407
|
onChange?.(newEvent, newValue);
|
|
3350
3408
|
};
|
|
3351
|
-
const optionMap = (0,
|
|
3409
|
+
const optionMap = (0, import_react24.useMemo)(() => {
|
|
3352
3410
|
const map = /* @__PURE__ */ new Map();
|
|
3353
3411
|
options.forEach((option) => {
|
|
3354
3412
|
map.set(option.value, option);
|
|
3355
3413
|
});
|
|
3356
3414
|
return map;
|
|
3357
3415
|
}, [options]);
|
|
3358
|
-
const
|
|
3416
|
+
const buttonSlotProps = useSlotRef(joySlotProps.button, ref);
|
|
3417
|
+
const select = /* @__PURE__ */ import_react24.default.createElement(
|
|
3359
3418
|
import_joy31.Select,
|
|
3360
3419
|
{
|
|
3361
3420
|
...innerProps,
|
|
@@ -3363,7 +3422,7 @@ function Select(props) {
|
|
|
3363
3422
|
disabled,
|
|
3364
3423
|
size,
|
|
3365
3424
|
color: error ? "danger" : color,
|
|
3366
|
-
slotProps: joySlotProps,
|
|
3425
|
+
slotProps: { ...joySlotProps, button: buttonSlotProps },
|
|
3367
3426
|
onChange: handleChange,
|
|
3368
3427
|
renderValue: (selected) => {
|
|
3369
3428
|
if (!selected) return null;
|
|
@@ -3373,9 +3432,9 @@ function Select(props) {
|
|
|
3373
3432
|
return optionMap.get(selected.value)?.label;
|
|
3374
3433
|
}
|
|
3375
3434
|
},
|
|
3376
|
-
options.map((option) => /* @__PURE__ */
|
|
3435
|
+
options.map((option) => /* @__PURE__ */ import_react24.default.createElement(Option, { key: option.value, value: option.value, disabled: option.disabled }, option.secondaryText ? /* @__PURE__ */ import_react24.default.createElement(import_joy31.ListItemContent, { sx: { gap: 0.5 } }, /* @__PURE__ */ import_react24.default.createElement(import_joy31.Typography, { level: "inherit" }, option.label), /* @__PURE__ */ import_react24.default.createElement(import_joy31.Typography, { level: secondaryTextLevelMap2[size ?? "md"], textColor: "text.tertiary" }, option.secondaryText)) : option.label))
|
|
3377
3436
|
);
|
|
3378
|
-
return /* @__PURE__ */
|
|
3437
|
+
return /* @__PURE__ */ import_react24.default.createElement(
|
|
3379
3438
|
FormControl_default,
|
|
3380
3439
|
{
|
|
3381
3440
|
required,
|
|
@@ -3388,11 +3447,12 @@ function Select(props) {
|
|
|
3388
3447
|
className,
|
|
3389
3448
|
...formControlProps
|
|
3390
3449
|
},
|
|
3391
|
-
label && /* @__PURE__ */
|
|
3450
|
+
label && /* @__PURE__ */ import_react24.default.createElement(FormLabel_default, { ...formLabelProps }, label),
|
|
3392
3451
|
select,
|
|
3393
|
-
helperText && /* @__PURE__ */
|
|
3452
|
+
helperText && /* @__PURE__ */ import_react24.default.createElement(FormHelperText_default, { ...formHelperTextProps }, helperText)
|
|
3394
3453
|
);
|
|
3395
3454
|
}
|
|
3455
|
+
var Select = import_react24.default.forwardRef(SelectInner);
|
|
3396
3456
|
Select.displayName = "Select";
|
|
3397
3457
|
|
|
3398
3458
|
// src/components/Select/index.ts
|
|
@@ -3402,7 +3462,7 @@ var Select_default = Select;
|
|
|
3402
3462
|
var import_joy34 = require("@mui/joy");
|
|
3403
3463
|
|
|
3404
3464
|
// src/components/InfoSign/InfoSign.tsx
|
|
3405
|
-
var
|
|
3465
|
+
var import_react25 = __toESM(require("react"));
|
|
3406
3466
|
var import_joy32 = require("@mui/joy");
|
|
3407
3467
|
var import_Info = __toESM(require("@mui/icons-material/Info"));
|
|
3408
3468
|
var InfoIcon = (0, import_joy32.styled)(import_Info.default, {
|
|
@@ -3415,7 +3475,7 @@ var InfoIcon = (0, import_joy32.styled)(import_Info.default, {
|
|
|
3415
3475
|
}));
|
|
3416
3476
|
function InfoSign(props) {
|
|
3417
3477
|
const { message, placement } = props;
|
|
3418
|
-
return /* @__PURE__ */
|
|
3478
|
+
return /* @__PURE__ */ import_react25.default.createElement(
|
|
3419
3479
|
Tooltip_default,
|
|
3420
3480
|
{
|
|
3421
3481
|
arrow: true,
|
|
@@ -3425,9 +3485,9 @@ function InfoSign(props) {
|
|
|
3425
3485
|
maxWidth: "320px"
|
|
3426
3486
|
}
|
|
3427
3487
|
},
|
|
3428
|
-
title: message?.split("\n").map((line, i) => /* @__PURE__ */
|
|
3488
|
+
title: message?.split("\n").map((line, i) => /* @__PURE__ */ import_react25.default.createElement("div", { key: `info-sign-${i}` }, line))
|
|
3429
3489
|
},
|
|
3430
|
-
/* @__PURE__ */
|
|
3490
|
+
/* @__PURE__ */ import_react25.default.createElement(InfoIcon, null)
|
|
3431
3491
|
);
|
|
3432
3492
|
}
|
|
3433
3493
|
|
|
@@ -3440,9 +3500,9 @@ var TextEllipsis = ({
|
|
|
3440
3500
|
lineClamp,
|
|
3441
3501
|
...rest
|
|
3442
3502
|
}) => {
|
|
3443
|
-
const textRef = (0,
|
|
3444
|
-
const [showTooltip, setShowTooltip] = (0,
|
|
3445
|
-
(0,
|
|
3503
|
+
const textRef = (0, import_react26.useRef)(null);
|
|
3504
|
+
const [showTooltip, setShowTooltip] = (0, import_react26.useState)(false);
|
|
3505
|
+
(0, import_react26.useLayoutEffect)(() => {
|
|
3446
3506
|
const element = textRef.current;
|
|
3447
3507
|
if (!element) return;
|
|
3448
3508
|
const checkTruncation = () => {
|
|
@@ -3454,21 +3514,21 @@ var TextEllipsis = ({
|
|
|
3454
3514
|
ro.observe(element);
|
|
3455
3515
|
return () => ro.disconnect();
|
|
3456
3516
|
}, [children, lineClamp]);
|
|
3457
|
-
return /* @__PURE__ */
|
|
3517
|
+
return /* @__PURE__ */ import_react26.default.createElement(Tooltip_default, { title: showTooltip ? children : "", placement: "top" }, /* @__PURE__ */ import_react26.default.createElement(EllipsisDiv, { ref: textRef, lineClamp, ...rest }, children));
|
|
3458
3518
|
};
|
|
3459
3519
|
var CellTextEllipsis = ({ children }) => {
|
|
3460
|
-
const textRef = (0,
|
|
3461
|
-
const [showTooltip, setShowTooltip] = (0,
|
|
3462
|
-
(0,
|
|
3520
|
+
const textRef = (0, import_react26.useRef)(null);
|
|
3521
|
+
const [showTooltip, setShowTooltip] = (0, import_react26.useState)(false);
|
|
3522
|
+
(0, import_react26.useLayoutEffect)(() => {
|
|
3463
3523
|
const element = textRef.current;
|
|
3464
3524
|
if (element) {
|
|
3465
3525
|
const isTextTruncated = element.scrollWidth > element.clientWidth;
|
|
3466
3526
|
setShowTooltip(isTextTruncated);
|
|
3467
3527
|
}
|
|
3468
3528
|
}, [children]);
|
|
3469
|
-
const content = /* @__PURE__ */
|
|
3529
|
+
const content = /* @__PURE__ */ import_react26.default.createElement(EllipsisDiv, { ref: textRef }, children);
|
|
3470
3530
|
if (showTooltip) {
|
|
3471
|
-
return /* @__PURE__ */
|
|
3531
|
+
return /* @__PURE__ */ import_react26.default.createElement(
|
|
3472
3532
|
Tooltip_default,
|
|
3473
3533
|
{
|
|
3474
3534
|
title: children,
|
|
@@ -3512,18 +3572,15 @@ var HeadCell = (props) => {
|
|
|
3512
3572
|
const theme = (0, import_joy33.useTheme)();
|
|
3513
3573
|
const ref = headerRef;
|
|
3514
3574
|
const colRef = tableColRef;
|
|
3515
|
-
const localRef = (0,
|
|
3516
|
-
(0,
|
|
3575
|
+
const localRef = (0, import_react26.useRef)(null);
|
|
3576
|
+
(0, import_react26.useLayoutEffect)(() => {
|
|
3517
3577
|
ref.current = localRef.current;
|
|
3518
3578
|
}, [ref]);
|
|
3519
|
-
const [isHovered, setIsHovered] = (0,
|
|
3579
|
+
const [isHovered, setIsHovered] = (0, import_react26.useState)(false);
|
|
3520
3580
|
const sortable = type === "actions" ? false : _sortable;
|
|
3521
|
-
const headId = (0,
|
|
3522
|
-
|
|
3523
|
-
|
|
3524
|
-
);
|
|
3525
|
-
const isResizingRef = (0, import_react25.useRef)(false);
|
|
3526
|
-
const resizer = (0, import_react25.useMemo)(
|
|
3581
|
+
const headId = (0, import_react26.useMemo)(() => getHeaderCellId(tableId, field), [tableId, field]);
|
|
3582
|
+
const isResizingRef = (0, import_react26.useRef)(false);
|
|
3583
|
+
const resizer = (0, import_react26.useMemo)(
|
|
3527
3584
|
() => resizable ?? true ? Resizer(
|
|
3528
3585
|
ref,
|
|
3529
3586
|
colRef,
|
|
@@ -3534,7 +3591,7 @@ var HeadCell = (props) => {
|
|
|
3534
3591
|
) : null,
|
|
3535
3592
|
[resizable, ref, colRef, onAutoFit, field]
|
|
3536
3593
|
);
|
|
3537
|
-
const style = (0,
|
|
3594
|
+
const style = (0, import_react26.useMemo)(
|
|
3538
3595
|
() => ({
|
|
3539
3596
|
width,
|
|
3540
3597
|
minWidth: minWidth ?? "50px",
|
|
@@ -3552,10 +3609,10 @@ var HeadCell = (props) => {
|
|
|
3552
3609
|
);
|
|
3553
3610
|
const textAlign = getTextAlign(props);
|
|
3554
3611
|
const initialSort = sortOrder[0];
|
|
3555
|
-
const sortIcon = (0,
|
|
3612
|
+
const sortIcon = (0, import_react26.useMemo)(() => {
|
|
3556
3613
|
const isSorted = !!sort;
|
|
3557
3614
|
const isVisible = sortable && (isSorted || isHovered);
|
|
3558
|
-
return /* @__PURE__ */
|
|
3615
|
+
return /* @__PURE__ */ import_react26.default.createElement(import_framer_motion21.AnimatePresence, { mode: "wait" }, isVisible && /* @__PURE__ */ import_react26.default.createElement(
|
|
3559
3616
|
MotionSortIcon,
|
|
3560
3617
|
{
|
|
3561
3618
|
key: "sort-icon",
|
|
@@ -3583,21 +3640,21 @@ var HeadCell = (props) => {
|
|
|
3583
3640
|
}
|
|
3584
3641
|
));
|
|
3585
3642
|
}, [headId, initialSort, sort, sortable, isHovered]);
|
|
3586
|
-
const infoSign = (0,
|
|
3587
|
-
() => description ? /* @__PURE__ */
|
|
3643
|
+
const infoSign = (0, import_react26.useMemo)(
|
|
3644
|
+
() => description ? /* @__PURE__ */ import_react26.default.createElement(InfoSign_default, { message: description, placement: "bottom" }) : null,
|
|
3588
3645
|
[description]
|
|
3589
3646
|
);
|
|
3590
|
-
const params = (0,
|
|
3647
|
+
const params = (0, import_react26.useMemo)(
|
|
3591
3648
|
() => ({
|
|
3592
3649
|
field
|
|
3593
3650
|
}),
|
|
3594
3651
|
[field]
|
|
3595
3652
|
);
|
|
3596
|
-
const computedHeaderClassName = (0,
|
|
3653
|
+
const computedHeaderClassName = (0, import_react26.useMemo)(
|
|
3597
3654
|
() => (typeof headerClassName === "function" ? headerClassName(params) : headerClassName) || void 0,
|
|
3598
3655
|
[headerClassName, params]
|
|
3599
3656
|
);
|
|
3600
|
-
return /* @__PURE__ */
|
|
3657
|
+
return /* @__PURE__ */ import_react26.default.createElement(
|
|
3601
3658
|
StyledTh,
|
|
3602
3659
|
{
|
|
3603
3660
|
id: headId,
|
|
@@ -3606,7 +3663,7 @@ var HeadCell = (props) => {
|
|
|
3606
3663
|
ref: localRef,
|
|
3607
3664
|
key: field,
|
|
3608
3665
|
style,
|
|
3609
|
-
onClick: (0,
|
|
3666
|
+
onClick: (0, import_react26.useCallback)(
|
|
3610
3667
|
(e) => {
|
|
3611
3668
|
if (isResizingRef.current) return;
|
|
3612
3669
|
if (!(e.target instanceof Element) || !e.currentTarget.contains(e.target)) return;
|
|
@@ -3620,7 +3677,7 @@ var HeadCell = (props) => {
|
|
|
3620
3677
|
initial: "initial",
|
|
3621
3678
|
className: computedHeaderClassName
|
|
3622
3679
|
},
|
|
3623
|
-
/* @__PURE__ */
|
|
3680
|
+
/* @__PURE__ */ import_react26.default.createElement(Stack_default, { gap: 1, direction: "row", justifyContent: textAlign, alignItems: "center", sx: { minWidth: 0 } }, textAlign === "end" && sortIcon, textAlign === "end" && infoSign, /* @__PURE__ */ import_react26.default.createElement(TextEllipsis, { lineClamp: headerLineClamp, "data-slot": "header-text" }, headerName ?? field, editMode && required && /* @__PURE__ */ import_react26.default.createElement(Asterisk, null, "*")), textAlign === "start" && infoSign, textAlign === "start" && sortIcon),
|
|
3624
3681
|
resizer
|
|
3625
3682
|
);
|
|
3626
3683
|
};
|
|
@@ -3645,9 +3702,9 @@ var BodyCell = (props) => {
|
|
|
3645
3702
|
onCellEditStop
|
|
3646
3703
|
} = props;
|
|
3647
3704
|
const theme = (0, import_joy33.useTheme)();
|
|
3648
|
-
const [value, setValue] = (0,
|
|
3649
|
-
const cellRef = (0,
|
|
3650
|
-
const params = (0,
|
|
3705
|
+
const [value, setValue] = (0, import_react26.useState)(row[field]);
|
|
3706
|
+
const cellRef = (0, import_react26.useRef)(null);
|
|
3707
|
+
const params = (0, import_react26.useMemo)(
|
|
3651
3708
|
() => ({
|
|
3652
3709
|
row,
|
|
3653
3710
|
value,
|
|
@@ -3656,20 +3713,20 @@ var BodyCell = (props) => {
|
|
|
3656
3713
|
}),
|
|
3657
3714
|
[row, rowId, value, field]
|
|
3658
3715
|
);
|
|
3659
|
-
const editMode = (0,
|
|
3716
|
+
const editMode = (0, import_react26.useMemo)(
|
|
3660
3717
|
() => !!(props.editMode && (typeof isCellEditable === "function" ? isCellEditable(params) : isCellEditable ?? true)),
|
|
3661
3718
|
[props.editMode, isCellEditable, params]
|
|
3662
3719
|
);
|
|
3663
3720
|
const propsComponentProps = "componentProps" in props ? props.componentProps : null;
|
|
3664
3721
|
const hasComponentProps = "componentProps" in props;
|
|
3665
|
-
const componentProps = (0,
|
|
3722
|
+
const componentProps = (0, import_react26.useMemo)(
|
|
3666
3723
|
() => ({
|
|
3667
3724
|
...hasComponentProps && (typeof propsComponentProps === "function" ? propsComponentProps(params) : propsComponentProps || {}),
|
|
3668
3725
|
size: "sm"
|
|
3669
3726
|
}),
|
|
3670
3727
|
[hasComponentProps, propsComponentProps, params]
|
|
3671
3728
|
);
|
|
3672
|
-
const editModeComponentProps = (0,
|
|
3729
|
+
const editModeComponentProps = (0, import_react26.useMemo)(
|
|
3673
3730
|
() => ({
|
|
3674
3731
|
...componentProps,
|
|
3675
3732
|
onChange: (e) => {
|
|
@@ -3731,25 +3788,25 @@ var BodyCell = (props) => {
|
|
|
3731
3788
|
}),
|
|
3732
3789
|
[params, row, field, value, componentProps, type, onCellEditStop, onCellEditStart]
|
|
3733
3790
|
);
|
|
3734
|
-
const MemoizedRenderEditCell = (0,
|
|
3735
|
-
const MemoizedRenderCell = (0,
|
|
3736
|
-
const EditModeComponent = (0,
|
|
3791
|
+
const MemoizedRenderEditCell = (0, import_react26.useMemo)(() => renderEditCell ? (0, import_react26.memo)(renderEditCell) : null, [renderEditCell]);
|
|
3792
|
+
const MemoizedRenderCell = (0, import_react26.useMemo)(() => renderCell ? (0, import_react26.memo)(renderCell) : null, [renderCell]);
|
|
3793
|
+
const EditModeComponent = (0, import_react26.useMemo)(() => {
|
|
3737
3794
|
if (MemoizedRenderEditCell) {
|
|
3738
|
-
return (0,
|
|
3795
|
+
return (0, import_react26.createElement)(MemoizedRenderEditCell, params);
|
|
3739
3796
|
}
|
|
3740
3797
|
return {
|
|
3741
|
-
date: /* @__PURE__ */
|
|
3742
|
-
currency: /* @__PURE__ */
|
|
3798
|
+
date: /* @__PURE__ */ import_react26.default.createElement(DatePicker_default, { value, ...editModeComponentProps }),
|
|
3799
|
+
currency: /* @__PURE__ */ import_react26.default.createElement(
|
|
3743
3800
|
CurrencyInput_default,
|
|
3744
3801
|
{
|
|
3745
3802
|
value,
|
|
3746
3803
|
...editModeComponentProps
|
|
3747
3804
|
}
|
|
3748
3805
|
),
|
|
3749
|
-
number: /* @__PURE__ */
|
|
3750
|
-
text: /* @__PURE__ */
|
|
3751
|
-
longText: /* @__PURE__ */
|
|
3752
|
-
autocomplete: /* @__PURE__ */
|
|
3806
|
+
number: /* @__PURE__ */ import_react26.default.createElement(Input_default, { value, type: "number", ...editModeComponentProps }),
|
|
3807
|
+
text: /* @__PURE__ */ import_react26.default.createElement(Input_default, { value, type: "text", ...editModeComponentProps }),
|
|
3808
|
+
longText: /* @__PURE__ */ import_react26.default.createElement(Textarea_default, { value, ...editModeComponentProps }),
|
|
3809
|
+
autocomplete: /* @__PURE__ */ import_react26.default.createElement(
|
|
3753
3810
|
Autocomplete_default,
|
|
3754
3811
|
{
|
|
3755
3812
|
value,
|
|
@@ -3757,7 +3814,7 @@ var BodyCell = (props) => {
|
|
|
3757
3814
|
...editModeComponentProps
|
|
3758
3815
|
}
|
|
3759
3816
|
),
|
|
3760
|
-
select: /* @__PURE__ */
|
|
3817
|
+
select: /* @__PURE__ */ import_react26.default.createElement(
|
|
3761
3818
|
Select_default,
|
|
3762
3819
|
{
|
|
3763
3820
|
value,
|
|
@@ -3768,13 +3825,13 @@ var BodyCell = (props) => {
|
|
|
3768
3825
|
}[type || "text"];
|
|
3769
3826
|
}, [value, editModeComponentProps, type, MemoizedRenderEditCell, params]);
|
|
3770
3827
|
const linkComponentFromProps = props.component;
|
|
3771
|
-
const ReadModeComponent = (0,
|
|
3828
|
+
const ReadModeComponent = (0, import_react26.useMemo)(() => {
|
|
3772
3829
|
if (MemoizedRenderCell) {
|
|
3773
|
-
return (0,
|
|
3830
|
+
return (0, import_react26.createElement)(MemoizedRenderCell, params);
|
|
3774
3831
|
}
|
|
3775
3832
|
const innerText = value;
|
|
3776
3833
|
const typedComponent = {
|
|
3777
|
-
link:
|
|
3834
|
+
link: import_react26.default.createElement(linkComponentFromProps || import_joy34.Link, {
|
|
3778
3835
|
children: innerText,
|
|
3779
3836
|
...componentProps
|
|
3780
3837
|
})
|
|
@@ -3782,27 +3839,27 @@ var BodyCell = (props) => {
|
|
|
3782
3839
|
return typedComponent || innerText;
|
|
3783
3840
|
}, [value, MemoizedRenderCell, params, type, componentProps, linkComponentFromProps]);
|
|
3784
3841
|
const getActions = props.getActions;
|
|
3785
|
-
const CellComponent = (0,
|
|
3842
|
+
const CellComponent = (0, import_react26.useMemo)(() => {
|
|
3786
3843
|
if (type === "actions") {
|
|
3787
|
-
return /* @__PURE__ */
|
|
3844
|
+
return /* @__PURE__ */ import_react26.default.createElement(Stack_default, { direction: "row", gap: 1, justifyContent: "center", alignItems: "center" }, getActions?.(params));
|
|
3788
3845
|
}
|
|
3789
3846
|
return editMode && EditModeComponent ? EditModeComponent : ReadModeComponent;
|
|
3790
3847
|
}, [type, getActions, params, editMode, EditModeComponent, ReadModeComponent]);
|
|
3791
|
-
const showTooltip = (0,
|
|
3848
|
+
const showTooltip = (0, import_react26.useMemo)(() => noWrap && type === "longText", [noWrap, type]);
|
|
3792
3849
|
const isBoundary = props.isLastStartPinnedColumn || props.isLastEndPinnedColumn;
|
|
3793
|
-
const computedCellClassName = (0,
|
|
3850
|
+
const computedCellClassName = (0, import_react26.useMemo)(
|
|
3794
3851
|
() => (typeof cellClassName === "function" ? cellClassName(params) : cellClassName) || "",
|
|
3795
3852
|
[cellClassName, params]
|
|
3796
3853
|
);
|
|
3797
|
-
(0,
|
|
3854
|
+
(0, import_react26.useEffect)(() => {
|
|
3798
3855
|
setValue(row[field]);
|
|
3799
3856
|
}, [row, field]);
|
|
3800
|
-
return /* @__PURE__ */
|
|
3857
|
+
return /* @__PURE__ */ import_react26.default.createElement(
|
|
3801
3858
|
StyledTd,
|
|
3802
3859
|
{
|
|
3803
3860
|
ref: cellRef,
|
|
3804
3861
|
key: field,
|
|
3805
|
-
headers:
|
|
3862
|
+
headers: getHeaderCellId(tableId, field),
|
|
3806
3863
|
sx: {
|
|
3807
3864
|
textAlign: getTextAlign({ type }),
|
|
3808
3865
|
verticalAlign: editMode ? "top" : "middle",
|
|
@@ -3814,16 +3871,16 @@ var BodyCell = (props) => {
|
|
|
3814
3871
|
},
|
|
3815
3872
|
className: [isLastStartPinnedColumn && "is-last-left", isLastEndPinnedColumn && "is-last-right", computedCellClassName].filter(Boolean).join(" ") || ""
|
|
3816
3873
|
},
|
|
3817
|
-
(0,
|
|
3818
|
-
() => showTooltip ? /* @__PURE__ */
|
|
3874
|
+
(0, import_react26.useMemo)(
|
|
3875
|
+
() => showTooltip ? /* @__PURE__ */ import_react26.default.createElement(CellTextEllipsis, null, CellComponent) : CellComponent,
|
|
3819
3876
|
[CellComponent, showTooltip]
|
|
3820
3877
|
)
|
|
3821
3878
|
);
|
|
3822
3879
|
};
|
|
3823
|
-
var BodyRow = (0,
|
|
3880
|
+
var BodyRow = (0, import_react26.memo)(
|
|
3824
3881
|
(props) => {
|
|
3825
3882
|
const { tableId, columns, rowId, editMode, noWrap, row } = props;
|
|
3826
|
-
return /* @__PURE__ */
|
|
3883
|
+
return /* @__PURE__ */ import_react26.default.createElement(import_react26.default.Fragment, null, columns.map((column, i) => /* @__PURE__ */ import_react26.default.createElement(
|
|
3827
3884
|
BodyCell,
|
|
3828
3885
|
{
|
|
3829
3886
|
key: `${rowId}_${column.field.toString()}_${i}`,
|
|
@@ -3856,7 +3913,7 @@ var StyledTableRow2 = (0, import_joy33.styled)("tr", {
|
|
|
3856
3913
|
}
|
|
3857
3914
|
}
|
|
3858
3915
|
}));
|
|
3859
|
-
var VirtualizedTableRow = (0,
|
|
3916
|
+
var VirtualizedTableRow = (0, import_react26.memo)(StyledTableRow2, (prevProps, nextProps) => {
|
|
3860
3917
|
return prevProps.striped === nextProps.striped && prevProps.style?.height === nextProps.style?.height && prevProps.style?.transform === nextProps.style?.transform && // @ts-ignore
|
|
3861
3918
|
prevProps["data-row-id"] === nextProps["data-row-id"] && // @ts-ignore
|
|
3862
3919
|
prevProps["data-index"] === nextProps["data-index"] && prevProps.tabIndex === nextProps.tabIndex && prevProps["aria-checked"] === nextProps["aria-checked"] && // Track column structure changes (e.g. isCellEditable toggled, columns added/removed)
|
|
@@ -3867,19 +3924,20 @@ var VirtualizedTableRow = (0, import_react25.memo)(StyledTableRow2, (prevProps,
|
|
|
3867
3924
|
});
|
|
3868
3925
|
|
|
3869
3926
|
// src/components/DataTable/hooks.ts
|
|
3870
|
-
var
|
|
3927
|
+
var import_react27 = require("react");
|
|
3871
3928
|
function useColumnWidths(columnsByField) {
|
|
3872
|
-
const [widths, setWidths] = (0,
|
|
3873
|
-
const roRef = (0,
|
|
3874
|
-
(0,
|
|
3929
|
+
const [widths, setWidths] = (0, import_react27.useState)({});
|
|
3930
|
+
const roRef = (0, import_react27.useRef)();
|
|
3931
|
+
(0, import_react27.useLayoutEffect)(() => {
|
|
3875
3932
|
if (roRef.current) roRef.current.disconnect();
|
|
3876
3933
|
roRef.current = new ResizeObserver((entries) => {
|
|
3877
|
-
let changed = false;
|
|
3878
3934
|
setWidths((prev) => {
|
|
3935
|
+
let changed = false;
|
|
3879
3936
|
const next = { ...prev };
|
|
3880
3937
|
entries.forEach((entry) => {
|
|
3881
3938
|
const field = entry.target.dataset.field;
|
|
3882
3939
|
const w = Math.round(entry.target.getBoundingClientRect().width);
|
|
3940
|
+
if (w === 0) return;
|
|
3883
3941
|
if (next[field] !== w) {
|
|
3884
3942
|
next[field] = w;
|
|
3885
3943
|
changed = true;
|
|
@@ -3888,13 +3946,21 @@ function useColumnWidths(columnsByField) {
|
|
|
3888
3946
|
return changed ? next : prev;
|
|
3889
3947
|
});
|
|
3890
3948
|
});
|
|
3949
|
+
const measured = {};
|
|
3891
3950
|
Object.entries(columnsByField).forEach(([field, def]) => {
|
|
3892
3951
|
const el = def.headerRef.current;
|
|
3893
3952
|
if (el) {
|
|
3894
3953
|
el.dataset.field = field;
|
|
3954
|
+
const w = Math.round(el.getBoundingClientRect().width);
|
|
3955
|
+
if (w > 0) measured[field] = w;
|
|
3895
3956
|
roRef.current.observe(el);
|
|
3896
3957
|
}
|
|
3897
3958
|
});
|
|
3959
|
+
setWidths((prev) => {
|
|
3960
|
+
const keys = Object.keys(measured);
|
|
3961
|
+
const same = keys.every((key) => prev[key] === measured[key]);
|
|
3962
|
+
return same ? prev : { ...prev, ...measured };
|
|
3963
|
+
});
|
|
3898
3964
|
return () => roRef.current?.disconnect();
|
|
3899
3965
|
}, [columnsByField]);
|
|
3900
3966
|
return widths;
|
|
@@ -3928,33 +3994,40 @@ function useDataTableRenderer({
|
|
|
3928
3994
|
"You cannot use both `pinnedColumns` and `columnGroupingModel` at the same time. Please choose one of them."
|
|
3929
3995
|
);
|
|
3930
3996
|
}
|
|
3931
|
-
const
|
|
3997
|
+
const duplicatedField = (0, import_react27.useMemo)(() => {
|
|
3998
|
+
const ids = columnsProp.map((column) => sanitizeColumnId(column.field));
|
|
3999
|
+
const index = ids.findIndex((id, i) => ids.indexOf(id) !== i);
|
|
4000
|
+
return index === -1 ? void 0 : columnsProp[index].field;
|
|
4001
|
+
}, [columnsProp]);
|
|
4002
|
+
if (duplicatedField !== void 0)
|
|
4003
|
+
throw new Error(`DataTable: column \`field\` must be unique. Duplicated: "${String(duplicatedField)}"`);
|
|
4004
|
+
const onSelectionModelChangeRef = (0, import_react27.useRef)(onSelectionModelChange);
|
|
3932
4005
|
onSelectionModelChangeRef.current = onSelectionModelChange;
|
|
3933
|
-
const [focusedRowId, setFocusedRowId] = (0,
|
|
3934
|
-
const [selectionAnchor, setSelectionAnchor] = (0,
|
|
4006
|
+
const [focusedRowId, setFocusedRowId] = (0, import_react27.useState)(null);
|
|
4007
|
+
const [selectionAnchor, setSelectionAnchor] = (0, import_react27.useState)(null);
|
|
3935
4008
|
const [sortModel, setSortModel] = useControlledState(
|
|
3936
4009
|
controlledSortModel,
|
|
3937
4010
|
initialState?.sorting?.sortModel ?? [],
|
|
3938
|
-
(0,
|
|
4011
|
+
(0, import_react27.useCallback)((sortModel2) => onSortModelChange?.(sortModel2), [onSortModelChange])
|
|
3939
4012
|
);
|
|
3940
4013
|
const [visibilityModel] = useControlledState(
|
|
3941
4014
|
columnVisibilityModel,
|
|
3942
4015
|
initialState?.columns?.columnVisibilityModel ?? {},
|
|
3943
|
-
(0,
|
|
4016
|
+
(0, import_react27.useCallback)(
|
|
3944
4017
|
(model) => onColumnVisibilityModelChange?.(model),
|
|
3945
4018
|
[onColumnVisibilityModelChange]
|
|
3946
4019
|
)
|
|
3947
4020
|
);
|
|
3948
|
-
const reorderedColumns = (0,
|
|
4021
|
+
const reorderedColumns = (0, import_react27.useMemo)(() => {
|
|
3949
4022
|
if (!columnGroupingModel) return columnsProp;
|
|
3950
4023
|
return reorderColumnsByGroupingModel(columnsProp, columnGroupingModel);
|
|
3951
4024
|
}, [columnsProp, columnGroupingModel]);
|
|
3952
|
-
const visibleColumns = (0,
|
|
4025
|
+
const visibleColumns = (0, import_react27.useMemo)(
|
|
3953
4026
|
() => reorderedColumns.filter((col) => visibilityModel[col.field] !== false),
|
|
3954
4027
|
[reorderedColumns, visibilityModel]
|
|
3955
4028
|
);
|
|
3956
|
-
const visibleFieldSet = (0,
|
|
3957
|
-
const tableMinWidth = (0,
|
|
4029
|
+
const visibleFieldSet = (0, import_react27.useMemo)(() => new Set(visibleColumns.map((c) => c.field)), [visibleColumns]);
|
|
4030
|
+
const tableMinWidth = (0, import_react27.useMemo)(() => {
|
|
3958
4031
|
const DEFAULT_MIN = 50;
|
|
3959
4032
|
let total = checkboxSelection ? 40 : 0;
|
|
3960
4033
|
for (const col of visibleColumns) {
|
|
@@ -3962,7 +4035,7 @@ function useDataTableRenderer({
|
|
|
3962
4035
|
}
|
|
3963
4036
|
return total;
|
|
3964
4037
|
}, [visibleColumns, checkboxSelection]);
|
|
3965
|
-
const allColumnsByField = (0,
|
|
4038
|
+
const allColumnsByField = (0, import_react27.useMemo)(
|
|
3966
4039
|
() => reorderedColumns.reduce(
|
|
3967
4040
|
(acc, curr) => ({
|
|
3968
4041
|
...acc,
|
|
@@ -3972,21 +4045,20 @@ function useDataTableRenderer({
|
|
|
3972
4045
|
),
|
|
3973
4046
|
[reorderedColumns]
|
|
3974
4047
|
);
|
|
3975
|
-
const visibleColumnsByField = (0,
|
|
3976
|
-
() =>
|
|
3977
|
-
(
|
|
3978
|
-
|
|
3979
|
-
|
|
3980
|
-
...
|
|
3981
|
-
headerRef: (0,
|
|
3982
|
-
tableColRef: (0,
|
|
4048
|
+
const visibleColumnsByField = (0, import_react27.useMemo)(
|
|
4049
|
+
() => Object.fromEntries(
|
|
4050
|
+
visibleColumns.map((column) => [
|
|
4051
|
+
column.field,
|
|
4052
|
+
{
|
|
4053
|
+
...column,
|
|
4054
|
+
headerRef: (0, import_react27.createRef)(),
|
|
4055
|
+
tableColRef: (0, import_react27.createRef)()
|
|
3983
4056
|
}
|
|
3984
|
-
|
|
3985
|
-
{}
|
|
4057
|
+
])
|
|
3986
4058
|
),
|
|
3987
4059
|
[visibleColumns]
|
|
3988
4060
|
);
|
|
3989
|
-
const sortComparator = (0,
|
|
4061
|
+
const sortComparator = (0, import_react27.useCallback)(
|
|
3990
4062
|
(rowA, rowB) => {
|
|
3991
4063
|
for (const sort of sortModel) {
|
|
3992
4064
|
const { field, sort: direction } = sort;
|
|
@@ -4015,33 +4087,33 @@ function useDataTableRenderer({
|
|
|
4015
4087
|
},
|
|
4016
4088
|
[sortModel, allColumnsByField]
|
|
4017
4089
|
);
|
|
4018
|
-
const rows = (0,
|
|
4090
|
+
const rows = (0, import_react27.useMemo)(
|
|
4019
4091
|
() => sortModel.length ? [..._rows].sort(sortComparator) : _rows,
|
|
4020
4092
|
[_rows, sortModel, sortComparator]
|
|
4021
4093
|
);
|
|
4022
|
-
const sortOrder = (0,
|
|
4094
|
+
const sortOrder = (0, import_react27.useMemo)(
|
|
4023
4095
|
() => Array.from(new Set(_sortOrder || ["asc", "desc", null])),
|
|
4024
4096
|
[_sortOrder]
|
|
4025
4097
|
);
|
|
4026
|
-
const [page, setPage] = (0,
|
|
4098
|
+
const [page, setPage] = (0, import_react27.useState)(paginationModel?.page || 1);
|
|
4027
4099
|
const pageSize = paginationModel?.pageSize || 20;
|
|
4028
|
-
const getId = (0,
|
|
4100
|
+
const getId = (0, import_react27.useCallback)(
|
|
4029
4101
|
(row, index) => _getId?.(row) ?? row.id ?? `${(index || 0) + (page - 1) * pageSize}`,
|
|
4030
4102
|
[_getId, page, pageSize]
|
|
4031
4103
|
);
|
|
4032
|
-
const selectedModelSet = (0,
|
|
4033
|
-
const dataInPage = (0,
|
|
4104
|
+
const selectedModelSet = (0, import_react27.useMemo)(() => new Set(selectionModel || []), [selectionModel]);
|
|
4105
|
+
const dataInPage = (0, import_react27.useMemo)(
|
|
4034
4106
|
() => !pagination || paginationMode === "server" ? rows : rows.slice((page - 1) * pageSize, (page - 1) * pageSize + pageSize),
|
|
4035
4107
|
[rows, page, pageSize, paginationMode, pagination]
|
|
4036
4108
|
);
|
|
4037
|
-
const selectableDataInPage = (0,
|
|
4109
|
+
const selectableDataInPage = (0, import_react27.useMemo)(
|
|
4038
4110
|
() => dataInPage.filter((row, i) => {
|
|
4039
4111
|
if (!isRowSelectable) return true;
|
|
4040
4112
|
return isRowSelectable({ row, id: getId(row, i) });
|
|
4041
4113
|
}),
|
|
4042
4114
|
[dataInPage, isRowSelectable, getId]
|
|
4043
4115
|
);
|
|
4044
|
-
const handleRangeSelection = (0,
|
|
4116
|
+
const handleRangeSelection = (0, import_react27.useCallback)(
|
|
4045
4117
|
(anchor, targetIndex) => {
|
|
4046
4118
|
const startIndex = Math.min(anchor.rowIndex, targetIndex);
|
|
4047
4119
|
const endIndex = Math.max(anchor.rowIndex, targetIndex);
|
|
@@ -4064,40 +4136,41 @@ function useDataTableRenderer({
|
|
|
4064
4136
|
},
|
|
4065
4137
|
[dataInPage, getId, isRowSelectable, selectionModel, onSelectionModelChange]
|
|
4066
4138
|
);
|
|
4067
|
-
const isAllSelected = (0,
|
|
4139
|
+
const isAllSelected = (0, import_react27.useMemo)(
|
|
4068
4140
|
() => selectableDataInPage.length > 0 && selectableDataInPage.every((row, i) => selectedModelSet.has(getId(row, i))),
|
|
4069
4141
|
[selectableDataInPage, selectedModelSet, getId]
|
|
4070
4142
|
);
|
|
4071
4143
|
const rowCount = totalRowsProp || rows.length;
|
|
4072
|
-
const selectableRowCount = (0,
|
|
4144
|
+
const selectableRowCount = (0, import_react27.useMemo)(() => {
|
|
4073
4145
|
if (!isRowSelectable) return rowCount;
|
|
4074
4146
|
return rows.filter((row, i) => isRowSelectable({ row, id: getId(row, i) })).length;
|
|
4075
4147
|
}, [rows, isRowSelectable, getId, rowCount]);
|
|
4076
|
-
const isTotalSelected = (0,
|
|
4148
|
+
const isTotalSelected = (0, import_react27.useMemo)(
|
|
4077
4149
|
() => _isTotalSelected ?? (selectableRowCount > 0 && (selectionModel?.length || 0) === selectableRowCount),
|
|
4078
4150
|
[_isTotalSelected, selectionModel, selectableRowCount]
|
|
4079
4151
|
);
|
|
4080
4152
|
const columnWidths = useColumnWidths(visibleColumnsByField);
|
|
4081
|
-
const getWidth = (0,
|
|
4082
|
-
|
|
4083
|
-
allColumnsByField[f]?.
|
|
4153
|
+
const getWidth = (0, import_react27.useCallback)(
|
|
4154
|
+
// 반환값은 pinned offset으로 더해지므로 반드시 숫자여야 한다. width/minWidth는 '500px' 같은 문자열.
|
|
4155
|
+
(f) => columnWidths[f] ?? parsePxValue(allColumnsByField[f]?.width) ?? // Column prop 으로 지정된 width
|
|
4156
|
+
parsePxValue(allColumnsByField[f]?.minWidth) ?? 0,
|
|
4084
4157
|
[columnWidths, allColumnsByField]
|
|
4085
4158
|
);
|
|
4086
|
-
const processedColumnGroups = (0,
|
|
4159
|
+
const processedColumnGroups = (0, import_react27.useMemo)(() => {
|
|
4087
4160
|
if (!columnGroupingModel) return null;
|
|
4088
4161
|
return calculateColumnGroups(columnGroupingModel, visibleColumns, visibleFieldSet);
|
|
4089
4162
|
}, [columnGroupingModel, visibleColumns, visibleFieldSet]);
|
|
4090
|
-
const effectivePinnedLeft = (0,
|
|
4163
|
+
const effectivePinnedLeft = (0, import_react27.useMemo)(
|
|
4091
4164
|
() => pinnedColumns?.left?.filter((f) => visibleFieldSet.has(f)),
|
|
4092
4165
|
[pinnedColumns?.left, visibleFieldSet]
|
|
4093
4166
|
);
|
|
4094
|
-
const effectivePinnedRight = (0,
|
|
4167
|
+
const effectivePinnedRight = (0, import_react27.useMemo)(
|
|
4095
4168
|
() => pinnedColumns?.right?.filter((f) => visibleFieldSet.has(f)),
|
|
4096
4169
|
[pinnedColumns?.right, visibleFieldSet]
|
|
4097
4170
|
);
|
|
4098
4171
|
const inferredFieldsKey = JSON.stringify(Object.keys(rows[0] || {}));
|
|
4099
|
-
const inferredFields = (0,
|
|
4100
|
-
const columns = (0,
|
|
4172
|
+
const inferredFields = (0, import_react27.useMemo)(() => JSON.parse(inferredFieldsKey), [inferredFieldsKey]);
|
|
4173
|
+
const columns = (0, import_react27.useMemo)(() => {
|
|
4101
4174
|
const baseColumns = visibleColumns.length > 0 ? visibleColumns : reorderedColumns.length > 0 ? [] : inferredFields.map((key) => ({
|
|
4102
4175
|
field: key
|
|
4103
4176
|
}));
|
|
@@ -4132,14 +4205,14 @@ function useDataTableRenderer({
|
|
|
4132
4205
|
sortOrder,
|
|
4133
4206
|
getWidth
|
|
4134
4207
|
]);
|
|
4135
|
-
const handlePageChange = (0,
|
|
4208
|
+
const handlePageChange = (0, import_react27.useCallback)(
|
|
4136
4209
|
(newPage) => {
|
|
4137
4210
|
setPage(newPage);
|
|
4138
4211
|
onPaginationModelChange?.({ page: newPage, pageSize });
|
|
4139
4212
|
},
|
|
4140
4213
|
[onPaginationModelChange, pageSize]
|
|
4141
4214
|
);
|
|
4142
|
-
const handleSortChange = (0,
|
|
4215
|
+
const handleSortChange = (0, import_react27.useCallback)(
|
|
4143
4216
|
(props) => {
|
|
4144
4217
|
const { field, currentSort, multiple } = props;
|
|
4145
4218
|
const column = allColumnsByField[field];
|
|
@@ -4162,38 +4235,37 @@ function useDataTableRenderer({
|
|
|
4162
4235
|
},
|
|
4163
4236
|
[sortOrder, allColumnsByField, sortModel, setSortModel]
|
|
4164
4237
|
);
|
|
4165
|
-
(0,
|
|
4238
|
+
(0, import_react27.useEffect)(() => {
|
|
4166
4239
|
if (!paginationModel) {
|
|
4167
4240
|
handlePageChange(1);
|
|
4168
4241
|
}
|
|
4169
4242
|
}, [rowCount, handlePageChange, paginationModel]);
|
|
4170
|
-
(0,
|
|
4243
|
+
(0, import_react27.useEffect)(() => {
|
|
4171
4244
|
const lastPage = Math.max(1, Math.ceil(rowCount / pageSize));
|
|
4172
4245
|
if (page > lastPage) {
|
|
4173
4246
|
handlePageChange(lastPage);
|
|
4174
4247
|
}
|
|
4175
4248
|
}, [page, rowCount, pageSize, handlePageChange]);
|
|
4176
|
-
(0,
|
|
4249
|
+
(0, import_react27.useEffect)(() => {
|
|
4177
4250
|
onSelectionModelChangeRef.current?.([]);
|
|
4178
4251
|
setSelectionAnchor(null);
|
|
4179
4252
|
}, [page]);
|
|
4180
|
-
const prevRowsRef = (0,
|
|
4181
|
-
(0,
|
|
4253
|
+
const prevRowsRef = (0, import_react27.useRef)(_rows);
|
|
4254
|
+
(0, import_react27.useEffect)(() => {
|
|
4182
4255
|
if (prevRowsRef.current !== _rows) {
|
|
4183
4256
|
setSelectionAnchor(null);
|
|
4184
4257
|
prevRowsRef.current = _rows;
|
|
4185
4258
|
}
|
|
4186
4259
|
}, [_rows]);
|
|
4187
|
-
const handleAutoFit = (0,
|
|
4260
|
+
const handleAutoFit = (0, import_react27.useCallback)(
|
|
4188
4261
|
(field) => {
|
|
4189
4262
|
const colDef = visibleColumnsByField[field];
|
|
4190
4263
|
if (!colDef?.headerRef.current) return;
|
|
4191
|
-
const
|
|
4192
|
-
const columnType = column && "type" in column ? column.type : void 0;
|
|
4264
|
+
const columnType = "type" in colDef ? colDef.type : void 0;
|
|
4193
4265
|
if (columnType === "actions") return;
|
|
4194
4266
|
const optimalWidth = computeAutoFitWidth({
|
|
4195
4267
|
headerEl: colDef.headerRef.current,
|
|
4196
|
-
field,
|
|
4268
|
+
field: colDef.field,
|
|
4197
4269
|
dataInPage
|
|
4198
4270
|
});
|
|
4199
4271
|
if (optimalWidth == null) return;
|
|
@@ -4201,7 +4273,7 @@ function useDataTableRenderer({
|
|
|
4201
4273
|
colDef.headerRef.current.style.width = widthPx;
|
|
4202
4274
|
if (colDef.tableColRef.current) colDef.tableColRef.current.style.width = widthPx;
|
|
4203
4275
|
},
|
|
4204
|
-
[visibleColumnsByField,
|
|
4276
|
+
[visibleColumnsByField, dataInPage]
|
|
4205
4277
|
);
|
|
4206
4278
|
return {
|
|
4207
4279
|
rowCount,
|
|
@@ -4217,8 +4289,8 @@ function useDataTableRenderer({
|
|
|
4217
4289
|
handleAutoFit,
|
|
4218
4290
|
isAllSelected,
|
|
4219
4291
|
isTotalSelected,
|
|
4220
|
-
isSelectedRow: (0,
|
|
4221
|
-
isRowSelectable: (0,
|
|
4292
|
+
isSelectedRow: (0, import_react27.useCallback)((model) => selectedModelSet.has(model), [selectedModelSet]),
|
|
4293
|
+
isRowSelectable: (0, import_react27.useCallback)(
|
|
4222
4294
|
(rowId, row) => {
|
|
4223
4295
|
if (!isRowSelectable) return true;
|
|
4224
4296
|
return isRowSelectable({ row, id: rowId });
|
|
@@ -4226,13 +4298,13 @@ function useDataTableRenderer({
|
|
|
4226
4298
|
[isRowSelectable]
|
|
4227
4299
|
),
|
|
4228
4300
|
focusedRowId,
|
|
4229
|
-
onRowFocus: (0,
|
|
4301
|
+
onRowFocus: (0, import_react27.useCallback)((rowId) => {
|
|
4230
4302
|
setFocusedRowId(rowId);
|
|
4231
4303
|
}, []),
|
|
4232
|
-
onAllCheckboxChange: (0,
|
|
4304
|
+
onAllCheckboxChange: (0, import_react27.useCallback)(() => {
|
|
4233
4305
|
onSelectionModelChange?.(isAllSelected ? [] : selectableDataInPage.map(getId));
|
|
4234
4306
|
}, [isAllSelected, selectableDataInPage, onSelectionModelChange, getId]),
|
|
4235
|
-
onCheckboxChange: (0,
|
|
4307
|
+
onCheckboxChange: (0, import_react27.useCallback)(
|
|
4236
4308
|
(event, selectedModel) => {
|
|
4237
4309
|
const isShiftClick = "shiftKey" in event && event.shiftKey;
|
|
4238
4310
|
const rowIndex = dataInPage.findIndex((row, i) => getId(row, i) === selectedModel);
|
|
@@ -4266,7 +4338,7 @@ function useDataTableRenderer({
|
|
|
4266
4338
|
columns,
|
|
4267
4339
|
tableMinWidth,
|
|
4268
4340
|
processedColumnGroups,
|
|
4269
|
-
onTotalSelect: (0,
|
|
4341
|
+
onTotalSelect: (0, import_react27.useCallback)(() => {
|
|
4270
4342
|
const selectableRows = rows.filter((row, i) => {
|
|
4271
4343
|
if (!isRowSelectable) return true;
|
|
4272
4344
|
return isRowSelectable({ row, id: getId(row, i) });
|
|
@@ -4280,11 +4352,11 @@ function useDataTableRenderer({
|
|
|
4280
4352
|
}
|
|
4281
4353
|
|
|
4282
4354
|
// src/components/Table/Table.tsx
|
|
4283
|
-
var
|
|
4355
|
+
var import_react28 = __toESM(require("react"));
|
|
4284
4356
|
var import_joy35 = require("@mui/joy");
|
|
4285
4357
|
var Table = (props) => {
|
|
4286
4358
|
const { children, ...inheritProps } = props;
|
|
4287
|
-
return /* @__PURE__ */
|
|
4359
|
+
return /* @__PURE__ */ import_react28.default.createElement(import_joy35.Table, { ...inheritProps }, children);
|
|
4288
4360
|
};
|
|
4289
4361
|
Table.displayName = "Table";
|
|
4290
4362
|
function TableHead(props) {
|
|
@@ -4295,7 +4367,7 @@ function TableHead(props) {
|
|
|
4295
4367
|
slots: { checkbox: RenderCheckbox = Checkbox_default } = {},
|
|
4296
4368
|
slotProps: { checkbox: checkboxProps = {} } = {}
|
|
4297
4369
|
} = props;
|
|
4298
|
-
return /* @__PURE__ */
|
|
4370
|
+
return /* @__PURE__ */ import_react28.default.createElement("thead", null, /* @__PURE__ */ import_react28.default.createElement("tr", null, showCheckbox && /* @__PURE__ */ import_react28.default.createElement(
|
|
4299
4371
|
"th",
|
|
4300
4372
|
{
|
|
4301
4373
|
style: {
|
|
@@ -4303,8 +4375,8 @@ function TableHead(props) {
|
|
|
4303
4375
|
textAlign: "center"
|
|
4304
4376
|
}
|
|
4305
4377
|
},
|
|
4306
|
-
/* @__PURE__ */
|
|
4307
|
-
), headCells.map((headCell) => /* @__PURE__ */
|
|
4378
|
+
/* @__PURE__ */ import_react28.default.createElement(RenderCheckbox, { onChange: onCheckboxChange, ...checkboxProps })
|
|
4379
|
+
), headCells.map((headCell) => /* @__PURE__ */ import_react28.default.createElement(
|
|
4308
4380
|
"th",
|
|
4309
4381
|
{
|
|
4310
4382
|
key: headCell.label,
|
|
@@ -4329,15 +4401,15 @@ function TableBody(props) {
|
|
|
4329
4401
|
slots: { checkbox: RenderCheckbox = Checkbox_default } = {},
|
|
4330
4402
|
slotProps: { checkbox: checkboxProps = {} } = {}
|
|
4331
4403
|
} = props;
|
|
4332
|
-
return /* @__PURE__ */
|
|
4404
|
+
return /* @__PURE__ */ import_react28.default.createElement("tbody", null, rows.map((row, rowIndex) => /* @__PURE__ */ import_react28.default.createElement("tr", { key: `table-row-${rowIndex}` }, showCheckbox && /* @__PURE__ */ import_react28.default.createElement(
|
|
4333
4405
|
"td",
|
|
4334
4406
|
{
|
|
4335
4407
|
style: {
|
|
4336
4408
|
textAlign: "center"
|
|
4337
4409
|
}
|
|
4338
4410
|
},
|
|
4339
|
-
/* @__PURE__ */
|
|
4340
|
-
), cellOrder.map((cellKey) => /* @__PURE__ */
|
|
4411
|
+
/* @__PURE__ */ import_react28.default.createElement(RenderCheckbox, { onChange: (event) => onCheckboxChange?.(event, rowIndex), ...checkboxProps })
|
|
4412
|
+
), cellOrder.map((cellKey) => /* @__PURE__ */ import_react28.default.createElement(
|
|
4341
4413
|
"td",
|
|
4342
4414
|
{
|
|
4343
4415
|
key: cellKey,
|
|
@@ -4351,7 +4423,7 @@ function TableBody(props) {
|
|
|
4351
4423
|
TableBody.displayName = "TableBody";
|
|
4352
4424
|
|
|
4353
4425
|
// src/components/Pagination/Pagination.tsx
|
|
4354
|
-
var
|
|
4426
|
+
var import_react29 = __toESM(require("react"));
|
|
4355
4427
|
var import_ChevronLeftRounded = __toESM(require("@mui/icons-material/ChevronLeftRounded"));
|
|
4356
4428
|
var import_ChevronRightRounded = __toESM(require("@mui/icons-material/ChevronRightRounded"));
|
|
4357
4429
|
var import_FirstPageRounded = __toESM(require("@mui/icons-material/FirstPageRounded"));
|
|
@@ -4421,7 +4493,7 @@ function Pagination(inProps) {
|
|
|
4421
4493
|
const [paginationModel, setPaginationModel] = useControlledState(
|
|
4422
4494
|
_paginationModel,
|
|
4423
4495
|
defaultPaginationModel,
|
|
4424
|
-
(0,
|
|
4496
|
+
(0, import_react29.useCallback)(
|
|
4425
4497
|
(newPage) => {
|
|
4426
4498
|
onPageChange(newPage.page);
|
|
4427
4499
|
},
|
|
@@ -4437,7 +4509,7 @@ function Pagination(inProps) {
|
|
|
4437
4509
|
const afterPages = [paginationModel.page + 1, paginationModel.page + 2].filter((p) => p <= lastPage - 1);
|
|
4438
4510
|
const isMoreAfterPages = lastPage > 1 && paginationModel.page < lastPage - 3;
|
|
4439
4511
|
const isMoreBeforePages = lastPage > 1 && paginationModel.page > 4;
|
|
4440
|
-
(0,
|
|
4512
|
+
(0, import_react29.useEffect)(() => {
|
|
4441
4513
|
if (paginationModel.page > lastPage) {
|
|
4442
4514
|
setPaginationModel({ ...paginationModel, page: lastPage });
|
|
4443
4515
|
}
|
|
@@ -4447,7 +4519,7 @@ function Pagination(inProps) {
|
|
|
4447
4519
|
value: `${i + 1}`
|
|
4448
4520
|
}));
|
|
4449
4521
|
if (variant === "compact") {
|
|
4450
|
-
return /* @__PURE__ */
|
|
4522
|
+
return /* @__PURE__ */ import_react29.default.createElement(PaginationRoot, { ...innerProps }, /* @__PURE__ */ import_react29.default.createElement(PaginationContainer, { direction: "row", size, alignItems: "center" }, /* @__PURE__ */ import_react29.default.createElement(Stack_default, { direction: "row" }, /* @__PURE__ */ import_react29.default.createElement(
|
|
4451
4523
|
PaginationIconButton,
|
|
4452
4524
|
{
|
|
4453
4525
|
size,
|
|
@@ -4457,8 +4529,8 @@ function Pagination(inProps) {
|
|
|
4457
4529
|
disabled: paginationModel.page === firstPage,
|
|
4458
4530
|
"aria-label": "First page"
|
|
4459
4531
|
},
|
|
4460
|
-
/* @__PURE__ */
|
|
4461
|
-
), /* @__PURE__ */
|
|
4532
|
+
/* @__PURE__ */ import_react29.default.createElement(import_FirstPageRounded.default, null)
|
|
4533
|
+
), /* @__PURE__ */ import_react29.default.createElement(
|
|
4462
4534
|
PaginationIconButton,
|
|
4463
4535
|
{
|
|
4464
4536
|
size,
|
|
@@ -4468,8 +4540,8 @@ function Pagination(inProps) {
|
|
|
4468
4540
|
disabled: paginationModel.page === firstPage,
|
|
4469
4541
|
"aria-label": "Previous page"
|
|
4470
4542
|
},
|
|
4471
|
-
/* @__PURE__ */
|
|
4472
|
-
)), /* @__PURE__ */
|
|
4543
|
+
/* @__PURE__ */ import_react29.default.createElement(import_ChevronLeftRounded.default, null)
|
|
4544
|
+
)), /* @__PURE__ */ import_react29.default.createElement(
|
|
4473
4545
|
Autocomplete_default,
|
|
4474
4546
|
{
|
|
4475
4547
|
size,
|
|
@@ -4488,7 +4560,7 @@ function Pagination(inProps) {
|
|
|
4488
4560
|
}[size]
|
|
4489
4561
|
}
|
|
4490
4562
|
}
|
|
4491
|
-
), /* @__PURE__ */
|
|
4563
|
+
), /* @__PURE__ */ import_react29.default.createElement(
|
|
4492
4564
|
Typography_default,
|
|
4493
4565
|
{
|
|
4494
4566
|
level: `body-${size}`,
|
|
@@ -4499,7 +4571,7 @@ function Pagination(inProps) {
|
|
|
4499
4571
|
},
|
|
4500
4572
|
"/ ",
|
|
4501
4573
|
lastPage
|
|
4502
|
-
), /* @__PURE__ */
|
|
4574
|
+
), /* @__PURE__ */ import_react29.default.createElement(Stack_default, { direction: "row" }, /* @__PURE__ */ import_react29.default.createElement(
|
|
4503
4575
|
PaginationIconButton,
|
|
4504
4576
|
{
|
|
4505
4577
|
size,
|
|
@@ -4509,8 +4581,8 @@ function Pagination(inProps) {
|
|
|
4509
4581
|
disabled: paginationModel.page === lastPage,
|
|
4510
4582
|
"aria-label": "Next page"
|
|
4511
4583
|
},
|
|
4512
|
-
/* @__PURE__ */
|
|
4513
|
-
), /* @__PURE__ */
|
|
4584
|
+
/* @__PURE__ */ import_react29.default.createElement(import_ChevronRightRounded.default, null)
|
|
4585
|
+
), /* @__PURE__ */ import_react29.default.createElement(
|
|
4514
4586
|
PaginationIconButton,
|
|
4515
4587
|
{
|
|
4516
4588
|
size,
|
|
@@ -4520,10 +4592,10 @@ function Pagination(inProps) {
|
|
|
4520
4592
|
disabled: paginationModel.page === lastPage,
|
|
4521
4593
|
"aria-label": "Last page"
|
|
4522
4594
|
},
|
|
4523
|
-
/* @__PURE__ */
|
|
4595
|
+
/* @__PURE__ */ import_react29.default.createElement(import_LastPageRounded.default, null)
|
|
4524
4596
|
))));
|
|
4525
4597
|
}
|
|
4526
|
-
return /* @__PURE__ */
|
|
4598
|
+
return /* @__PURE__ */ import_react29.default.createElement(PaginationRoot, { ...innerProps }, /* @__PURE__ */ import_react29.default.createElement(PaginationContainer, { direction: "row", size, alignItems: "center" }, /* @__PURE__ */ import_react29.default.createElement(
|
|
4527
4599
|
PaginationIconButton,
|
|
4528
4600
|
{
|
|
4529
4601
|
size,
|
|
@@ -4533,8 +4605,8 @@ function Pagination(inProps) {
|
|
|
4533
4605
|
disabled: paginationModel.page === firstPage,
|
|
4534
4606
|
"aria-label": "Previous page"
|
|
4535
4607
|
},
|
|
4536
|
-
/* @__PURE__ */
|
|
4537
|
-
), paginationModel.page !== firstPage && /* @__PURE__ */
|
|
4608
|
+
/* @__PURE__ */ import_react29.default.createElement(import_ChevronLeftRounded.default, null)
|
|
4609
|
+
), paginationModel.page !== firstPage && /* @__PURE__ */ import_react29.default.createElement(PaginationButton, { size, variant: "plain", color: "neutral", onClick: () => handlePageChange(firstPage) }, firstPage), isMoreBeforePages && /* @__PURE__ */ import_react29.default.createElement(
|
|
4538
4610
|
PaginationButton,
|
|
4539
4611
|
{
|
|
4540
4612
|
size,
|
|
@@ -4544,7 +4616,7 @@ function Pagination(inProps) {
|
|
|
4544
4616
|
"aria-label": "More previous pages"
|
|
4545
4617
|
},
|
|
4546
4618
|
"..."
|
|
4547
|
-
), beforePages.map((p) => /* @__PURE__ */
|
|
4619
|
+
), beforePages.map((p) => /* @__PURE__ */ import_react29.default.createElement(PaginationButton, { key: p, size, variant: "plain", color: "neutral", onClick: () => handlePageChange(p) }, p)), /* @__PURE__ */ import_react29.default.createElement(PaginationButton, { active: "true", size, "aria-current": "page" }, paginationModel.page), afterPages.map((p) => /* @__PURE__ */ import_react29.default.createElement(PaginationButton, { key: p, size, variant: "plain", color: "neutral", onClick: () => handlePageChange(p) }, p)), isMoreAfterPages && /* @__PURE__ */ import_react29.default.createElement(
|
|
4548
4620
|
PaginationButton,
|
|
4549
4621
|
{
|
|
4550
4622
|
size,
|
|
@@ -4554,7 +4626,7 @@ function Pagination(inProps) {
|
|
|
4554
4626
|
onClick: () => handlePageChange(paginationModel.page + 3)
|
|
4555
4627
|
},
|
|
4556
4628
|
"..."
|
|
4557
|
-
), paginationModel.page !== lastPage && /* @__PURE__ */
|
|
4629
|
+
), paginationModel.page !== lastPage && /* @__PURE__ */ import_react29.default.createElement(PaginationButton, { size, variant: "plain", color: "neutral", onClick: () => handlePageChange(lastPage) }, lastPage), /* @__PURE__ */ import_react29.default.createElement(
|
|
4558
4630
|
PaginationIconButton,
|
|
4559
4631
|
{
|
|
4560
4632
|
size,
|
|
@@ -4564,7 +4636,7 @@ function Pagination(inProps) {
|
|
|
4564
4636
|
disabled: paginationModel.page === lastPage,
|
|
4565
4637
|
"aria-label": "Next page"
|
|
4566
4638
|
},
|
|
4567
|
-
/* @__PURE__ */
|
|
4639
|
+
/* @__PURE__ */ import_react29.default.createElement(import_ChevronRightRounded.default, null)
|
|
4568
4640
|
)));
|
|
4569
4641
|
}
|
|
4570
4642
|
Pagination.displayName = "Pagination";
|
|
@@ -4638,9 +4710,9 @@ function Component(props, apiRef) {
|
|
|
4638
4710
|
isTotalSelected: ___________,
|
|
4639
4711
|
...innerProps
|
|
4640
4712
|
} = props;
|
|
4641
|
-
const tableId = (0,
|
|
4642
|
-
const parentRef = (0,
|
|
4643
|
-
const tableBodyRef = (0,
|
|
4713
|
+
const tableId = (0, import_react30.useId)();
|
|
4714
|
+
const parentRef = (0, import_react30.useRef)(null);
|
|
4715
|
+
const tableBodyRef = (0, import_react30.useRef)(null);
|
|
4644
4716
|
const {
|
|
4645
4717
|
columns,
|
|
4646
4718
|
processedColumnGroups,
|
|
@@ -4676,10 +4748,10 @@ function Component(props, apiRef) {
|
|
|
4676
4748
|
measureElement: (element) => element.clientHeight,
|
|
4677
4749
|
overscan: 10
|
|
4678
4750
|
});
|
|
4679
|
-
const paginationModel = (0,
|
|
4751
|
+
const paginationModel = (0, import_react30.useMemo)(() => ({ page, pageSize }), [page, pageSize]);
|
|
4680
4752
|
const columnsKey = getObjectVersion(columns);
|
|
4681
|
-
const headerCheckboxElement = (0,
|
|
4682
|
-
() => /* @__PURE__ */
|
|
4753
|
+
const headerCheckboxElement = (0, import_react30.useMemo)(
|
|
4754
|
+
() => /* @__PURE__ */ import_react30.default.createElement(
|
|
4683
4755
|
RenderCheckbox,
|
|
4684
4756
|
{
|
|
4685
4757
|
onChange: onAllCheckboxChange,
|
|
@@ -4704,20 +4776,20 @@ function Component(props, apiRef) {
|
|
|
4704
4776
|
const showNoRowsOverlay = !loading && rowCount === 0;
|
|
4705
4777
|
const showFillerColumn = columns.length > 0 && columns.every((c) => !!c.width);
|
|
4706
4778
|
const totalColCount = Math.max(1, columns.length + (checkboxSelection ? 1 : 0) + (showFillerColumn ? 1 : 0));
|
|
4707
|
-
const getRowClickHandler = (0,
|
|
4779
|
+
const getRowClickHandler = (0, import_react30.useCallback)(
|
|
4708
4780
|
(row, rowId) => (e) => {
|
|
4709
4781
|
onRowClick?.({ row, rowId }, e);
|
|
4710
4782
|
checkboxSelection && !disableSelectionOnClick && isRowSelectableCheck(rowId, row) && onCheckboxChange(e, rowId);
|
|
4711
4783
|
},
|
|
4712
4784
|
[onRowClick, checkboxSelection, disableSelectionOnClick, onCheckboxChange, isRowSelectableCheck]
|
|
4713
4785
|
);
|
|
4714
|
-
const getRowFocusHandler = (0,
|
|
4786
|
+
const getRowFocusHandler = (0, import_react30.useCallback)(
|
|
4715
4787
|
(rowId) => () => {
|
|
4716
4788
|
onRowFocus(rowId);
|
|
4717
4789
|
},
|
|
4718
4790
|
[onRowFocus]
|
|
4719
4791
|
);
|
|
4720
|
-
const getCheckboxClickHandler = (0,
|
|
4792
|
+
const getCheckboxClickHandler = (0, import_react30.useCallback)(
|
|
4721
4793
|
(rowId, row) => (e) => {
|
|
4722
4794
|
e.stopPropagation();
|
|
4723
4795
|
if (isRowSelectableCheck(rowId, row)) {
|
|
@@ -4727,7 +4799,7 @@ function Component(props, apiRef) {
|
|
|
4727
4799
|
},
|
|
4728
4800
|
[onCheckboxChange, isRowSelectableCheck, onRowFocus]
|
|
4729
4801
|
);
|
|
4730
|
-
const handleTableKeyDown = (0,
|
|
4802
|
+
const handleTableKeyDown = (0, import_react30.useCallback)(
|
|
4731
4803
|
(e) => {
|
|
4732
4804
|
const supportedKeys = ["ArrowUp", "ArrowDown", " ", "Home", "End", "PageUp", "PageDown"];
|
|
4733
4805
|
if (!supportedKeys.includes(e.key)) return;
|
|
@@ -4817,7 +4889,7 @@ function Component(props, apiRef) {
|
|
|
4817
4889
|
virtualizer
|
|
4818
4890
|
]
|
|
4819
4891
|
);
|
|
4820
|
-
(0,
|
|
4892
|
+
(0, import_react30.useImperativeHandle)(apiRef, () => ({
|
|
4821
4893
|
getRowIndexRelativeToVisibleRows(rowId) {
|
|
4822
4894
|
return dataInPage.findIndex((row) => String(getId(row)) === rowId);
|
|
4823
4895
|
},
|
|
@@ -4833,7 +4905,7 @@ function Component(props, apiRef) {
|
|
|
4833
4905
|
});
|
|
4834
4906
|
}
|
|
4835
4907
|
}));
|
|
4836
|
-
return /* @__PURE__ */
|
|
4908
|
+
return /* @__PURE__ */ import_react30.default.createElement(
|
|
4837
4909
|
Box_default,
|
|
4838
4910
|
{
|
|
4839
4911
|
sx: {
|
|
@@ -4843,7 +4915,7 @@ function Component(props, apiRef) {
|
|
|
4843
4915
|
flexDirection: "column"
|
|
4844
4916
|
}
|
|
4845
4917
|
},
|
|
4846
|
-
(!!checkboxSelection || !!Toolbar) && /* @__PURE__ */
|
|
4918
|
+
(!!checkboxSelection || !!Toolbar) && /* @__PURE__ */ import_react30.default.createElement(
|
|
4847
4919
|
Stack_default,
|
|
4848
4920
|
{
|
|
4849
4921
|
direction: "row",
|
|
@@ -4853,10 +4925,10 @@ function Component(props, apiRef) {
|
|
|
4853
4925
|
justifyContent: "space-between",
|
|
4854
4926
|
alignItems: "center"
|
|
4855
4927
|
},
|
|
4856
|
-
!!checkboxSelection && /* @__PURE__ */
|
|
4857
|
-
Toolbar && /* @__PURE__ */
|
|
4928
|
+
!!checkboxSelection && /* @__PURE__ */ import_react30.default.createElement(Stack_default, { direction: "row", spacing: 1 }, !isAllSelected && /* @__PURE__ */ import_react30.default.createElement(Typography_default, { level: "body-xs" }, numberFormatter(selectionModel?.length || 0), " items selected"), isAllSelected && !isTotalSelected && /* @__PURE__ */ import_react30.default.createElement(Stack_default, { direction: "row", spacing: 1, alignItems: "center" }, /* @__PURE__ */ import_react30.default.createElement(Typography_default, { level: "body-xs" }, "All ", numberFormatter(selectionModel?.length || 0), " items on this page are selected."), /* @__PURE__ */ import_react30.default.createElement(Button_default, { size: "sm", variant: "plain", onClick: onTotalSelect }, "Select all ", numberFormatter(selectableRowCount), " items")), isTotalSelected && /* @__PURE__ */ import_react30.default.createElement(Stack_default, { direction: "row", spacing: 1, alignItems: "center" }, /* @__PURE__ */ import_react30.default.createElement(Typography_default, { level: "body-xs" }, "All ", numberFormatter(selectableRowCount), " items are selected."), /* @__PURE__ */ import_react30.default.createElement(Button_default, { size: "sm", variant: "plain", color: "danger", onClick: onTotalSelect }, "Cancel"))),
|
|
4929
|
+
Toolbar && /* @__PURE__ */ import_react30.default.createElement(Toolbar, { ...toolbarProps || {} })
|
|
4858
4930
|
),
|
|
4859
|
-
/* @__PURE__ */
|
|
4931
|
+
/* @__PURE__ */ import_react30.default.createElement(
|
|
4860
4932
|
Sheet_default,
|
|
4861
4933
|
{
|
|
4862
4934
|
variant: "outlined",
|
|
@@ -4877,24 +4949,24 @@ function Component(props, apiRef) {
|
|
|
4877
4949
|
ref: parentRef,
|
|
4878
4950
|
...backgroundProps
|
|
4879
4951
|
},
|
|
4880
|
-
/* @__PURE__ */
|
|
4952
|
+
/* @__PURE__ */ import_react30.default.createElement(Table, { ...innerProps, sx: { ...innerProps.sx, minWidth: tableMinWidth } }, /* @__PURE__ */ import_react30.default.createElement("colgroup", null, checkboxSelection && /* @__PURE__ */ import_react30.default.createElement(
|
|
4881
4953
|
"col",
|
|
4882
4954
|
{
|
|
4883
4955
|
style: {
|
|
4884
4956
|
width: "40px"
|
|
4885
4957
|
}
|
|
4886
4958
|
}
|
|
4887
|
-
), columns.map((c) => /* @__PURE__ */
|
|
4959
|
+
), columns.map((c) => /* @__PURE__ */ import_react30.default.createElement(
|
|
4888
4960
|
"col",
|
|
4889
4961
|
{
|
|
4890
4962
|
ref: c.tableColRef,
|
|
4891
|
-
key:
|
|
4963
|
+
key: c.field.toString(),
|
|
4892
4964
|
style: {
|
|
4893
4965
|
width: c.width,
|
|
4894
4966
|
minWidth: c.minWidth ?? "50px"
|
|
4895
4967
|
}
|
|
4896
4968
|
}
|
|
4897
|
-
)), showFillerColumn && /* @__PURE__ */
|
|
4969
|
+
)), showFillerColumn && /* @__PURE__ */ import_react30.default.createElement("col", { style: { minWidth: 0 } })), /* @__PURE__ */ import_react30.default.createElement("thead", null, processedColumnGroups && processedColumnGroups.groups.length > 0 && processedColumnGroups.groups.map((levelGroups, level) => /* @__PURE__ */ import_react30.default.createElement("tr", { key: `group-level-${level}` }, checkboxSelection && level === 0 && /* @__PURE__ */ import_react30.default.createElement(
|
|
4898
4970
|
"th",
|
|
4899
4971
|
{
|
|
4900
4972
|
rowSpan: processedColumnGroups.maxLevel + 2,
|
|
@@ -4905,12 +4977,12 @@ function Component(props, apiRef) {
|
|
|
4905
4977
|
}
|
|
4906
4978
|
},
|
|
4907
4979
|
headerCheckboxElement
|
|
4908
|
-
), level > 0 && Array.from({ length: levelGroups[0]?.startIndex || 0 }).map((_2, i) => /* @__PURE__ */
|
|
4980
|
+
), level > 0 && Array.from({ length: levelGroups[0]?.startIndex || 0 }).map((_2, i) => /* @__PURE__ */ import_react30.default.createElement("th", { key: `empty-${level}-${i}` })), levelGroups.filter((g) => g.colspan > 0).map((group, groupIndex) => {
|
|
4909
4981
|
const nextGroup = levelGroups[groupIndex + 1];
|
|
4910
4982
|
const emptyCells = nextGroup ? nextGroup.startIndex - (group.startIndex + group.colspan) : columns.length - (group.startIndex + group.colspan);
|
|
4911
4983
|
const params = { groupId: group.groupId };
|
|
4912
4984
|
const computedHeaderClassName = group.headerClassName ? typeof group.headerClassName === "function" ? group.headerClassName(params) : group.headerClassName : void 0;
|
|
4913
|
-
return /* @__PURE__ */
|
|
4985
|
+
return /* @__PURE__ */ import_react30.default.createElement(import_react30.Fragment, { key: group.groupId }, /* @__PURE__ */ import_react30.default.createElement(
|
|
4914
4986
|
"th",
|
|
4915
4987
|
{
|
|
4916
4988
|
colSpan: group.colspan,
|
|
@@ -4922,14 +4994,14 @@ function Component(props, apiRef) {
|
|
|
4922
4994
|
className: computedHeaderClassName
|
|
4923
4995
|
},
|
|
4924
4996
|
group.headerName ?? group.groupId
|
|
4925
|
-
), emptyCells > 0 && Array.from({ length: emptyCells }).map((_2, i) => /* @__PURE__ */
|
|
4926
|
-
}), showFillerColumn && level === 0 && /* @__PURE__ */
|
|
4997
|
+
), emptyCells > 0 && Array.from({ length: emptyCells }).map((_2, i) => /* @__PURE__ */ import_react30.default.createElement("th", { key: `empty-between-${level}-${groupIndex}-${i}`, colSpan: 1 })));
|
|
4998
|
+
}), showFillerColumn && level === 0 && /* @__PURE__ */ import_react30.default.createElement(
|
|
4927
4999
|
"th",
|
|
4928
5000
|
{
|
|
4929
5001
|
"aria-hidden": "true",
|
|
4930
5002
|
rowSpan: processedColumnGroups.maxLevel + 2
|
|
4931
5003
|
}
|
|
4932
|
-
))), /* @__PURE__ */
|
|
5004
|
+
))), /* @__PURE__ */ import_react30.default.createElement("tr", null, (!processedColumnGroups || processedColumnGroups.groups.length === 0) && checkboxSelection && /* @__PURE__ */ import_react30.default.createElement(
|
|
4933
5005
|
"th",
|
|
4934
5006
|
{
|
|
4935
5007
|
style: {
|
|
@@ -4938,13 +5010,13 @@ function Component(props, apiRef) {
|
|
|
4938
5010
|
}
|
|
4939
5011
|
},
|
|
4940
5012
|
headerCheckboxElement
|
|
4941
|
-
), columns.map((c
|
|
5013
|
+
), columns.map((c) => (
|
|
4942
5014
|
// @ts-ignore
|
|
4943
|
-
/* @__PURE__ */
|
|
5015
|
+
/* @__PURE__ */ import_react30.default.createElement(
|
|
4944
5016
|
HeadCell2,
|
|
4945
5017
|
{
|
|
4946
5018
|
tableId,
|
|
4947
|
-
key:
|
|
5019
|
+
key: c.field.toString(),
|
|
4948
5020
|
stickyHeader: props.stickyHeader,
|
|
4949
5021
|
editMode: !!c.isCellEditable,
|
|
4950
5022
|
onSortChange: handleSortChange,
|
|
@@ -4952,7 +5024,7 @@ function Component(props, apiRef) {
|
|
|
4952
5024
|
...c
|
|
4953
5025
|
}
|
|
4954
5026
|
)
|
|
4955
|
-
)), showFillerColumn && (!processedColumnGroups || processedColumnGroups.groups.length === 0) && /* @__PURE__ */
|
|
5027
|
+
)), showFillerColumn && (!processedColumnGroups || processedColumnGroups.groups.length === 0) && /* @__PURE__ */ import_react30.default.createElement("th", { "aria-hidden": "true" }))), /* @__PURE__ */ import_react30.default.createElement(
|
|
4956
5028
|
VirtualizedTableBody,
|
|
4957
5029
|
{
|
|
4958
5030
|
ref: tableBodyRef,
|
|
@@ -4963,7 +5035,7 @@ function Component(props, apiRef) {
|
|
|
4963
5035
|
role: "rowgroup",
|
|
4964
5036
|
"aria-label": "DataTableBody"
|
|
4965
5037
|
},
|
|
4966
|
-
!!loading && /* @__PURE__ */
|
|
5038
|
+
!!loading && /* @__PURE__ */ import_react30.default.createElement(OverlayWrapper, null, /* @__PURE__ */ import_react30.default.createElement(
|
|
4967
5039
|
"td",
|
|
4968
5040
|
{
|
|
4969
5041
|
style: {
|
|
@@ -4972,7 +5044,7 @@ function Component(props, apiRef) {
|
|
|
4972
5044
|
overflow: "visible"
|
|
4973
5045
|
}
|
|
4974
5046
|
},
|
|
4975
|
-
/* @__PURE__ */
|
|
5047
|
+
/* @__PURE__ */ import_react30.default.createElement(
|
|
4976
5048
|
Box_default,
|
|
4977
5049
|
{
|
|
4978
5050
|
sx: {
|
|
@@ -4982,10 +5054,10 @@ function Component(props, apiRef) {
|
|
|
4982
5054
|
right: 0
|
|
4983
5055
|
}
|
|
4984
5056
|
},
|
|
4985
|
-
/* @__PURE__ */
|
|
5057
|
+
/* @__PURE__ */ import_react30.default.createElement(LoadingOverlay, null)
|
|
4986
5058
|
)
|
|
4987
5059
|
)),
|
|
4988
|
-
showNoRowsOverlay && /* @__PURE__ */
|
|
5060
|
+
showNoRowsOverlay && /* @__PURE__ */ import_react30.default.createElement("tr", null, /* @__PURE__ */ import_react30.default.createElement("td", { colSpan: totalColCount, style: { border: "none" } }, /* @__PURE__ */ import_react30.default.createElement(
|
|
4989
5061
|
Box_default,
|
|
4990
5062
|
{
|
|
4991
5063
|
sx: {
|
|
@@ -4995,14 +5067,14 @@ function Component(props, apiRef) {
|
|
|
4995
5067
|
minHeight: "150px"
|
|
4996
5068
|
}
|
|
4997
5069
|
},
|
|
4998
|
-
/* @__PURE__ */
|
|
5070
|
+
/* @__PURE__ */ import_react30.default.createElement(NoRowsOverlay, { ...noRowsOverlayProps })
|
|
4999
5071
|
))),
|
|
5000
5072
|
virtualizedItems.map((virtualizedRow, index) => {
|
|
5001
5073
|
const rowIndex = virtualizedRow.index;
|
|
5002
5074
|
const row = dataInPage[rowIndex];
|
|
5003
5075
|
const rowId = getId(row, rowIndex);
|
|
5004
5076
|
const striped = stripe && (stripe === "even" && (rowIndex + 1) % 2 === 0 || stripe === "odd" && (rowIndex + 1) % 2 === 1);
|
|
5005
|
-
return /* @__PURE__ */
|
|
5077
|
+
return /* @__PURE__ */ import_react30.default.createElement(
|
|
5006
5078
|
VirtualizedTableRow,
|
|
5007
5079
|
{
|
|
5008
5080
|
key: virtualizedRow.key,
|
|
@@ -5022,7 +5094,7 @@ function Component(props, apiRef) {
|
|
|
5022
5094
|
transform: `translateY(${virtualizedRow.start - index * virtualizedRow.size}px)`
|
|
5023
5095
|
}
|
|
5024
5096
|
},
|
|
5025
|
-
checkboxSelection && /* @__PURE__ */
|
|
5097
|
+
checkboxSelection && /* @__PURE__ */ import_react30.default.createElement(
|
|
5026
5098
|
"th",
|
|
5027
5099
|
{
|
|
5028
5100
|
scope: "row",
|
|
@@ -5030,7 +5102,7 @@ function Component(props, apiRef) {
|
|
|
5030
5102
|
textAlign: "center"
|
|
5031
5103
|
}
|
|
5032
5104
|
},
|
|
5033
|
-
/* @__PURE__ */
|
|
5105
|
+
/* @__PURE__ */ import_react30.default.createElement(
|
|
5034
5106
|
RenderCheckbox,
|
|
5035
5107
|
{
|
|
5036
5108
|
onClick: getCheckboxClickHandler(rowId, row),
|
|
@@ -5041,7 +5113,7 @@ function Component(props, apiRef) {
|
|
|
5041
5113
|
}
|
|
5042
5114
|
)
|
|
5043
5115
|
),
|
|
5044
|
-
/* @__PURE__ */
|
|
5116
|
+
/* @__PURE__ */ import_react30.default.createElement(
|
|
5045
5117
|
BodyRow2,
|
|
5046
5118
|
{
|
|
5047
5119
|
tableId,
|
|
@@ -5052,12 +5124,12 @@ function Component(props, apiRef) {
|
|
|
5052
5124
|
noWrap: props.noWrap
|
|
5053
5125
|
}
|
|
5054
5126
|
),
|
|
5055
|
-
showFillerColumn && /* @__PURE__ */
|
|
5127
|
+
showFillerColumn && /* @__PURE__ */ import_react30.default.createElement("td", { "aria-hidden": "true" })
|
|
5056
5128
|
);
|
|
5057
5129
|
})
|
|
5058
|
-
), Footer && /* @__PURE__ */
|
|
5130
|
+
), Footer && /* @__PURE__ */ import_react30.default.createElement(Footer, null))
|
|
5059
5131
|
),
|
|
5060
|
-
pagination && /* @__PURE__ */
|
|
5132
|
+
pagination && /* @__PURE__ */ import_react30.default.createElement(
|
|
5061
5133
|
Pagination_default,
|
|
5062
5134
|
{
|
|
5063
5135
|
pt: 2,
|
|
@@ -5070,11 +5142,11 @@ function Component(props, apiRef) {
|
|
|
5070
5142
|
)
|
|
5071
5143
|
);
|
|
5072
5144
|
}
|
|
5073
|
-
var DataTable = (0,
|
|
5145
|
+
var DataTable = (0, import_react30.forwardRef)(Component);
|
|
5074
5146
|
DataTable.displayName = "DataTable";
|
|
5075
5147
|
|
|
5076
5148
|
// src/components/DateRangePicker/DateRangePicker.tsx
|
|
5077
|
-
var
|
|
5149
|
+
var import_react31 = __toESM(require("react"));
|
|
5078
5150
|
var import_react_imask2 = require("react-imask");
|
|
5079
5151
|
var import_CalendarToday2 = __toESM(require("@mui/icons-material/CalendarToday"));
|
|
5080
5152
|
var import_joy37 = require("@mui/joy");
|
|
@@ -5216,9 +5288,9 @@ var parseDates = (str, format) => {
|
|
|
5216
5288
|
var formatToPattern2 = (format) => {
|
|
5217
5289
|
return `${format} - ${format}`.replace(/YYYY/g, "Y").replace(/MM/g, "M").replace(/DD/g, "D").replace(/[^YMD\s]/g, (match) => `${match}\``);
|
|
5218
5290
|
};
|
|
5219
|
-
var TextMaskAdapter5 =
|
|
5291
|
+
var TextMaskAdapter5 = import_react31.default.forwardRef(function TextMaskAdapter6(props, ref) {
|
|
5220
5292
|
const { onChange, format, ...other } = props;
|
|
5221
|
-
return /* @__PURE__ */
|
|
5293
|
+
return /* @__PURE__ */ import_react31.default.createElement(
|
|
5222
5294
|
import_react_imask2.IMaskInput,
|
|
5223
5295
|
{
|
|
5224
5296
|
...other,
|
|
@@ -5252,7 +5324,7 @@ var TextMaskAdapter5 = import_react30.default.forwardRef(function TextMaskAdapte
|
|
|
5252
5324
|
}
|
|
5253
5325
|
);
|
|
5254
5326
|
});
|
|
5255
|
-
var DateRangePicker = (0,
|
|
5327
|
+
var DateRangePicker = (0, import_react31.forwardRef)((inProps, ref) => {
|
|
5256
5328
|
const props = (0, import_joy37.useThemeProps)({ props: inProps, name: "DateRangePicker" });
|
|
5257
5329
|
const {
|
|
5258
5330
|
onChange,
|
|
@@ -5279,28 +5351,28 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
|
|
|
5279
5351
|
numberOfMonths,
|
|
5280
5352
|
...innerProps
|
|
5281
5353
|
} = props;
|
|
5282
|
-
const innerRef = (0,
|
|
5283
|
-
const buttonRef = (0,
|
|
5354
|
+
const innerRef = (0, import_react31.useRef)(null);
|
|
5355
|
+
const buttonRef = (0, import_react31.useRef)(null);
|
|
5284
5356
|
const [rawValue, setValue] = useControlledState(
|
|
5285
5357
|
props.value,
|
|
5286
5358
|
props.defaultValue ?? null,
|
|
5287
|
-
(0,
|
|
5359
|
+
(0, import_react31.useCallback)(
|
|
5288
5360
|
(value2) => onChange?.({ target: { name: props.name, value: value2 ?? "" } }),
|
|
5289
5361
|
[props.name, onChange]
|
|
5290
5362
|
)
|
|
5291
5363
|
);
|
|
5292
5364
|
const value = rawValue ?? "";
|
|
5293
5365
|
const isAlphabeticDisplay = hasAlphabeticMonth2(displayFormat);
|
|
5294
|
-
const [displayValue, setDisplayValue] = (0,
|
|
5366
|
+
const [displayValue, setDisplayValue] = (0, import_react31.useState)(
|
|
5295
5367
|
() => value ? formatValueString2(parseDates(value, format), displayFormat, locale) : ""
|
|
5296
5368
|
);
|
|
5297
|
-
const [anchorEl, setAnchorEl] = (0,
|
|
5369
|
+
const [anchorEl, setAnchorEl] = (0, import_react31.useState)(null);
|
|
5298
5370
|
const open = Boolean(anchorEl);
|
|
5299
|
-
const calendarValue = (0,
|
|
5371
|
+
const calendarValue = (0, import_react31.useMemo)(
|
|
5300
5372
|
() => value ? parseDates(value, format) : void 0,
|
|
5301
5373
|
[value, format]
|
|
5302
5374
|
);
|
|
5303
|
-
(0,
|
|
5375
|
+
(0, import_react31.useEffect)(() => {
|
|
5304
5376
|
if (value) {
|
|
5305
5377
|
try {
|
|
5306
5378
|
const dates = parseDates(value, format);
|
|
@@ -5312,13 +5384,13 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
|
|
|
5312
5384
|
setDisplayValue("");
|
|
5313
5385
|
}
|
|
5314
5386
|
}, [displayFormat, locale, value, format]);
|
|
5315
|
-
(0,
|
|
5387
|
+
(0, import_react31.useEffect)(() => {
|
|
5316
5388
|
if (!anchorEl) {
|
|
5317
5389
|
innerRef.current?.blur();
|
|
5318
5390
|
}
|
|
5319
5391
|
}, [anchorEl, innerRef]);
|
|
5320
|
-
(0,
|
|
5321
|
-
const handleChange = (0,
|
|
5392
|
+
(0, import_react31.useImperativeHandle)(ref, () => innerRef.current, [innerRef]);
|
|
5393
|
+
const handleChange = (0, import_react31.useCallback)(
|
|
5322
5394
|
(event) => {
|
|
5323
5395
|
const value2 = event.target.value;
|
|
5324
5396
|
setDisplayValue(value2 ? formatValueString2(parseDates(value2, format), displayFormat, locale) : value2);
|
|
@@ -5326,7 +5398,7 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
|
|
|
5326
5398
|
},
|
|
5327
5399
|
[displayFormat, format, locale, setValue]
|
|
5328
5400
|
);
|
|
5329
|
-
const handleDisplayInputChange = (0,
|
|
5401
|
+
const handleDisplayInputChange = (0, import_react31.useCallback)(
|
|
5330
5402
|
(event) => {
|
|
5331
5403
|
if (event.target.value === "") {
|
|
5332
5404
|
handleChange({
|
|
@@ -5351,14 +5423,14 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
|
|
|
5351
5423
|
},
|
|
5352
5424
|
[displayFormat, format, handleChange, props.name]
|
|
5353
5425
|
);
|
|
5354
|
-
const handleCalendarToggle = (0,
|
|
5426
|
+
const handleCalendarToggle = (0, import_react31.useCallback)(
|
|
5355
5427
|
(event) => {
|
|
5356
5428
|
setAnchorEl(anchorEl ? null : event.currentTarget);
|
|
5357
5429
|
innerRef.current?.focus();
|
|
5358
5430
|
},
|
|
5359
5431
|
[anchorEl, setAnchorEl, innerRef]
|
|
5360
5432
|
);
|
|
5361
|
-
const handleCalendarChange = (0,
|
|
5433
|
+
const handleCalendarChange = (0, import_react31.useCallback)(
|
|
5362
5434
|
([date1, date2]) => {
|
|
5363
5435
|
if (!date1 || !date2) return;
|
|
5364
5436
|
const formattedValue = formatValueString2([date1, date2], format);
|
|
@@ -5372,7 +5444,7 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
|
|
|
5372
5444
|
},
|
|
5373
5445
|
[props.value, props.name, onChange, setValue, setAnchorEl, format, displayFormat, locale]
|
|
5374
5446
|
);
|
|
5375
|
-
const handleInputMouseDown = (0,
|
|
5447
|
+
const handleInputMouseDown = (0, import_react31.useCallback)(
|
|
5376
5448
|
(event) => {
|
|
5377
5449
|
if (inputReadOnly || isAlphabeticDisplay) {
|
|
5378
5450
|
event.preventDefault();
|
|
@@ -5381,7 +5453,7 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
|
|
|
5381
5453
|
},
|
|
5382
5454
|
[inputReadOnly, isAlphabeticDisplay, buttonRef]
|
|
5383
5455
|
);
|
|
5384
|
-
const handleInputClick = (0,
|
|
5456
|
+
const handleInputClick = (0, import_react31.useCallback)(
|
|
5385
5457
|
(event) => {
|
|
5386
5458
|
if (inputReadOnly && !readOnly) {
|
|
5387
5459
|
handleCalendarToggle(event);
|
|
@@ -5389,7 +5461,7 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
|
|
|
5389
5461
|
},
|
|
5390
5462
|
[inputReadOnly, readOnly, handleCalendarToggle]
|
|
5391
5463
|
);
|
|
5392
|
-
const handlePresetClick = (0,
|
|
5464
|
+
const handlePresetClick = (0, import_react31.useCallback)(
|
|
5393
5465
|
(presetValue) => {
|
|
5394
5466
|
if (props.value !== void 0) {
|
|
5395
5467
|
onChange?.({ target: { name: props.name, value: presetValue } });
|
|
@@ -5402,7 +5474,7 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
|
|
|
5402
5474
|
},
|
|
5403
5475
|
[props.value, props.name, onChange, setValue, setAnchorEl, format, displayFormat, locale]
|
|
5404
5476
|
);
|
|
5405
|
-
const isPresetDisabled = (0,
|
|
5477
|
+
const isPresetDisabled = (0, import_react31.useCallback)(
|
|
5406
5478
|
(presetValue) => {
|
|
5407
5479
|
try {
|
|
5408
5480
|
const dates = parseDates(presetValue, format);
|
|
@@ -5421,7 +5493,7 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
|
|
|
5421
5493
|
},
|
|
5422
5494
|
[format, minDate, maxDate, disableFuture, disablePast]
|
|
5423
5495
|
);
|
|
5424
|
-
return /* @__PURE__ */
|
|
5496
|
+
return /* @__PURE__ */ import_react31.default.createElement(DateRangePickerRoot, { sx, className }, /* @__PURE__ */ import_react31.default.createElement(import_base4.FocusTrap, { open: true }, /* @__PURE__ */ import_react31.default.createElement(import_react31.default.Fragment, null, /* @__PURE__ */ import_react31.default.createElement(
|
|
5425
5497
|
Input_default,
|
|
5426
5498
|
{
|
|
5427
5499
|
...innerProps,
|
|
@@ -5448,7 +5520,7 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
|
|
|
5448
5520
|
},
|
|
5449
5521
|
error,
|
|
5450
5522
|
sx: { width: "100%" },
|
|
5451
|
-
endDecorator: /* @__PURE__ */
|
|
5523
|
+
endDecorator: /* @__PURE__ */ import_react31.default.createElement(
|
|
5452
5524
|
CalendarButton2,
|
|
5453
5525
|
{
|
|
5454
5526
|
ref: buttonRef,
|
|
@@ -5460,13 +5532,13 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
|
|
|
5460
5532
|
"aria-expanded": open,
|
|
5461
5533
|
disabled
|
|
5462
5534
|
},
|
|
5463
|
-
/* @__PURE__ */
|
|
5535
|
+
/* @__PURE__ */ import_react31.default.createElement(import_CalendarToday2.default, null)
|
|
5464
5536
|
),
|
|
5465
5537
|
label,
|
|
5466
5538
|
helperText,
|
|
5467
5539
|
readOnly: readOnly || inputReadOnly || isAlphabeticDisplay
|
|
5468
5540
|
}
|
|
5469
|
-
), open && /* @__PURE__ */
|
|
5541
|
+
), open && /* @__PURE__ */ import_react31.default.createElement(import_base4.ClickAwayListener, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ import_react31.default.createElement(
|
|
5470
5542
|
StyledPopper2,
|
|
5471
5543
|
{
|
|
5472
5544
|
id: "date-range-picker-popper",
|
|
@@ -5485,7 +5557,7 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
|
|
|
5485
5557
|
"aria-label": "Calendar Tooltip",
|
|
5486
5558
|
"aria-expanded": open
|
|
5487
5559
|
},
|
|
5488
|
-
/* @__PURE__ */
|
|
5560
|
+
/* @__PURE__ */ import_react31.default.createElement(CalendarSheet2, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ import_react31.default.createElement(CalendarSheetContent2, null, /* @__PURE__ */ import_react31.default.createElement(CalendarSection2, { style: { width: "auto" } }, /* @__PURE__ */ import_react31.default.createElement(
|
|
5489
5561
|
Calendar_default,
|
|
5490
5562
|
{
|
|
5491
5563
|
rangeSelection: true,
|
|
@@ -5498,14 +5570,14 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
|
|
|
5498
5570
|
locale,
|
|
5499
5571
|
numberOfMonths
|
|
5500
5572
|
}
|
|
5501
|
-
), !hideClearButton && /* @__PURE__ */
|
|
5573
|
+
), !hideClearButton && /* @__PURE__ */ import_react31.default.createElement(
|
|
5502
5574
|
DialogActions_default,
|
|
5503
5575
|
{
|
|
5504
5576
|
sx: {
|
|
5505
5577
|
p: 1
|
|
5506
5578
|
}
|
|
5507
5579
|
},
|
|
5508
|
-
/* @__PURE__ */
|
|
5580
|
+
/* @__PURE__ */ import_react31.default.createElement(
|
|
5509
5581
|
Button_default,
|
|
5510
5582
|
{
|
|
5511
5583
|
size,
|
|
@@ -5519,9 +5591,9 @@ var DateRangePicker = (0, import_react30.forwardRef)((inProps, ref) => {
|
|
|
5519
5591
|
},
|
|
5520
5592
|
"Clear"
|
|
5521
5593
|
)
|
|
5522
|
-
)), presets && presets.length > 0 && /* @__PURE__ */
|
|
5594
|
+
)), presets && presets.length > 0 && /* @__PURE__ */ import_react31.default.createElement(PresetPanel2, null, presets.map((preset) => {
|
|
5523
5595
|
const disabled2 = isPresetDisabled(preset.value);
|
|
5524
|
-
return /* @__PURE__ */
|
|
5596
|
+
return /* @__PURE__ */ import_react31.default.createElement(
|
|
5525
5597
|
PresetItem2,
|
|
5526
5598
|
{
|
|
5527
5599
|
key: preset.label,
|
|
@@ -5566,10 +5638,10 @@ DialogTitle.displayName = "DialogTitle";
|
|
|
5566
5638
|
var DialogTitle_default = DialogTitle;
|
|
5567
5639
|
|
|
5568
5640
|
// src/components/DialogFrame/DialogFrame.tsx
|
|
5569
|
-
var
|
|
5641
|
+
var import_react33 = __toESM(require("react"));
|
|
5570
5642
|
|
|
5571
5643
|
// src/components/Modal/Modal.tsx
|
|
5572
|
-
var
|
|
5644
|
+
var import_react32 = __toESM(require("react"));
|
|
5573
5645
|
var import_joy40 = require("@mui/joy");
|
|
5574
5646
|
var import_framer_motion24 = require("framer-motion");
|
|
5575
5647
|
var MotionModal = (0, import_framer_motion24.motion)(import_joy40.Modal);
|
|
@@ -5584,10 +5656,10 @@ var ModalClose = import_joy40.ModalClose;
|
|
|
5584
5656
|
var MotionModalOverflow = (0, import_framer_motion24.motion)(import_joy40.ModalOverflow);
|
|
5585
5657
|
var ModalOverflow = MotionModalOverflow;
|
|
5586
5658
|
ModalOverflow.displayName = "ModalOverflow";
|
|
5587
|
-
|
|
5659
|
+
var ModalFrame = import_react32.default.forwardRef((props, ref) => {
|
|
5588
5660
|
const { title, children, titleStartDecorator, onClose, ...innerProps } = props;
|
|
5589
|
-
return /* @__PURE__ */
|
|
5590
|
-
}
|
|
5661
|
+
return /* @__PURE__ */ import_react32.default.createElement(StyledModalDialog, { ...innerProps, ref }, /* @__PURE__ */ import_react32.default.createElement(ModalClose, { onClick: onClose }), /* @__PURE__ */ import_react32.default.createElement(DialogTitle_default, null, titleStartDecorator, title), /* @__PURE__ */ import_react32.default.createElement(DialogContent_default, null, children));
|
|
5662
|
+
});
|
|
5591
5663
|
ModalFrame.displayName = "ModalFrame";
|
|
5592
5664
|
|
|
5593
5665
|
// src/components/DialogFrame/DialogFrame.tsx
|
|
@@ -5598,20 +5670,20 @@ var StyledDialogFrame = (0, import_joy41.styled)(ModalDialog, {
|
|
|
5598
5670
|
})({
|
|
5599
5671
|
padding: 0
|
|
5600
5672
|
});
|
|
5601
|
-
var DialogFrame =
|
|
5673
|
+
var DialogFrame = import_react33.default.forwardRef((props, ref) => {
|
|
5602
5674
|
const { title, children, actions, fullscreen, onSubmit, ...innerProps } = props;
|
|
5603
5675
|
const formProps = onSubmit ? { component: "form", onSubmit } : void 0;
|
|
5604
|
-
return /* @__PURE__ */
|
|
5676
|
+
return /* @__PURE__ */ import_react33.default.createElement(StyledDialogFrame, { layout: fullscreen ? "fullscreen" : "center", ref, ...formProps, ...innerProps }, /* @__PURE__ */ import_react33.default.createElement(DialogTitle_default, null, title), /* @__PURE__ */ import_react33.default.createElement(DialogContent_default, null, children), /* @__PURE__ */ import_react33.default.createElement(DialogActions_default, null, actions));
|
|
5605
5677
|
});
|
|
5606
5678
|
DialogFrame.displayName = "DialogFrame";
|
|
5607
5679
|
|
|
5608
5680
|
// src/components/Divider/Divider.tsx
|
|
5609
|
-
var
|
|
5681
|
+
var import_react34 = __toESM(require("react"));
|
|
5610
5682
|
var import_joy42 = require("@mui/joy");
|
|
5611
5683
|
var import_framer_motion25 = require("framer-motion");
|
|
5612
5684
|
var MotionDivider = (0, import_framer_motion25.motion)(import_joy42.Divider);
|
|
5613
5685
|
var Divider = (props) => {
|
|
5614
|
-
return /* @__PURE__ */
|
|
5686
|
+
return /* @__PURE__ */ import_react34.default.createElement(MotionDivider, { ...props });
|
|
5615
5687
|
};
|
|
5616
5688
|
Divider.displayName = "Divider";
|
|
5617
5689
|
|
|
@@ -5632,16 +5704,16 @@ var InsetDrawer = (0, import_joy43.styled)(import_joy43.Drawer)(({ theme }) => (
|
|
|
5632
5704
|
}));
|
|
5633
5705
|
|
|
5634
5706
|
// src/components/FilterableCheckboxGroup/FilterableCheckboxGroup.tsx
|
|
5635
|
-
var
|
|
5707
|
+
var import_react35 = __toESM(require("react"));
|
|
5636
5708
|
var import_Search = __toESM(require("@mui/icons-material/Search"));
|
|
5637
5709
|
var import_joy44 = require("@mui/joy");
|
|
5638
5710
|
var import_react_virtual3 = require("@tanstack/react-virtual");
|
|
5639
5711
|
var EMPTY_VALUE = [];
|
|
5640
5712
|
function LabelWithTooltip(props) {
|
|
5641
5713
|
const { label, size } = props;
|
|
5642
|
-
const labelContentRef = (0,
|
|
5643
|
-
const [isOverflowing, setIsOverflowing] = (0,
|
|
5644
|
-
const labelContent = /* @__PURE__ */
|
|
5714
|
+
const labelContentRef = (0, import_react35.useRef)(null);
|
|
5715
|
+
const [isOverflowing, setIsOverflowing] = (0, import_react35.useState)(false);
|
|
5716
|
+
const labelContent = /* @__PURE__ */ import_react35.default.createElement(
|
|
5645
5717
|
"span",
|
|
5646
5718
|
{
|
|
5647
5719
|
ref: labelContentRef,
|
|
@@ -5657,14 +5729,14 @@ function LabelWithTooltip(props) {
|
|
|
5657
5729
|
},
|
|
5658
5730
|
label
|
|
5659
5731
|
);
|
|
5660
|
-
(0,
|
|
5732
|
+
(0, import_react35.useEffect)(() => {
|
|
5661
5733
|
const element = labelContentRef.current;
|
|
5662
5734
|
if (element) {
|
|
5663
5735
|
setIsOverflowing(element.scrollWidth > element.clientWidth);
|
|
5664
5736
|
}
|
|
5665
5737
|
}, [label]);
|
|
5666
5738
|
if (isOverflowing) {
|
|
5667
|
-
return /* @__PURE__ */
|
|
5739
|
+
return /* @__PURE__ */ import_react35.default.createElement(Tooltip_default, { variant: "solid", size, title: label, placement: "bottom-start" }, labelContent);
|
|
5668
5740
|
}
|
|
5669
5741
|
return labelContent;
|
|
5670
5742
|
}
|
|
@@ -5682,22 +5754,22 @@ function FilterableCheckboxGroup(inProps) {
|
|
|
5682
5754
|
maxHeight = 300,
|
|
5683
5755
|
disabled
|
|
5684
5756
|
} = props;
|
|
5685
|
-
const [searchTerm, setSearchTerm] = (0,
|
|
5686
|
-
const [sortedOptions, setSortedOptions] = (0,
|
|
5757
|
+
const [searchTerm, setSearchTerm] = (0, import_react35.useState)("");
|
|
5758
|
+
const [sortedOptions, setSortedOptions] = (0, import_react35.useState)(options);
|
|
5687
5759
|
const [rawValue, setInternalValue] = useControlledState(
|
|
5688
5760
|
value,
|
|
5689
5761
|
value ?? EMPTY_VALUE,
|
|
5690
|
-
(0,
|
|
5762
|
+
(0, import_react35.useCallback)((newValue) => onChange?.(newValue ?? []), [onChange])
|
|
5691
5763
|
);
|
|
5692
5764
|
const internalValue = rawValue ?? EMPTY_VALUE;
|
|
5693
|
-
const parentRef = (0,
|
|
5694
|
-
const isInitialSortRef = (0,
|
|
5695
|
-
const prevOptionsRef = (0,
|
|
5696
|
-
const filteredOptions = (0,
|
|
5765
|
+
const parentRef = (0, import_react35.useRef)(null);
|
|
5766
|
+
const isInitialSortRef = (0, import_react35.useRef)(false);
|
|
5767
|
+
const prevOptionsRef = (0, import_react35.useRef)([...options]);
|
|
5768
|
+
const filteredOptions = (0, import_react35.useMemo)(() => {
|
|
5697
5769
|
if (!searchTerm) return sortedOptions;
|
|
5698
5770
|
return sortedOptions.filter((option) => option.label.toLowerCase().includes(searchTerm.toLowerCase()));
|
|
5699
5771
|
}, [sortedOptions, searchTerm]);
|
|
5700
|
-
const itemSize = (0,
|
|
5772
|
+
const itemSize = (0, import_react35.useMemo)(() => {
|
|
5701
5773
|
switch (size) {
|
|
5702
5774
|
case "sm":
|
|
5703
5775
|
return 28;
|
|
@@ -5715,7 +5787,7 @@ function FilterableCheckboxGroup(inProps) {
|
|
|
5715
5787
|
overscan: 5
|
|
5716
5788
|
});
|
|
5717
5789
|
const items = virtualizer.getVirtualItems();
|
|
5718
|
-
(0,
|
|
5790
|
+
(0, import_react35.useEffect)(() => {
|
|
5719
5791
|
const optionsChanged = prevOptionsRef.current.length !== options.length || prevOptionsRef.current.some(
|
|
5720
5792
|
(prevOption, index) => prevOption.value !== options[index]?.value || prevOption.label !== options[index]?.label || prevOption.disabled !== options[index]?.disabled
|
|
5721
5793
|
);
|
|
@@ -5741,13 +5813,13 @@ function FilterableCheckboxGroup(inProps) {
|
|
|
5741
5813
|
}
|
|
5742
5814
|
}
|
|
5743
5815
|
}, [options, value]);
|
|
5744
|
-
(0,
|
|
5816
|
+
(0, import_react35.useEffect)(() => {
|
|
5745
5817
|
virtualizer.measure();
|
|
5746
5818
|
}, [virtualizer, filteredOptions, size]);
|
|
5747
|
-
const handleSearchChange = (0,
|
|
5819
|
+
const handleSearchChange = (0, import_react35.useCallback)((event) => {
|
|
5748
5820
|
setSearchTerm(event.target.value);
|
|
5749
5821
|
}, []);
|
|
5750
|
-
const handleCheckboxChange = (0,
|
|
5822
|
+
const handleCheckboxChange = (0, import_react35.useCallback)(
|
|
5751
5823
|
(optionValue) => (event) => {
|
|
5752
5824
|
const checked = event.target.checked;
|
|
5753
5825
|
const newValue = checked ? [...internalValue, optionValue] : internalValue.filter((v) => v !== optionValue);
|
|
@@ -5755,7 +5827,7 @@ function FilterableCheckboxGroup(inProps) {
|
|
|
5755
5827
|
},
|
|
5756
5828
|
[internalValue, setInternalValue]
|
|
5757
5829
|
);
|
|
5758
|
-
const handleSelectAll = (0,
|
|
5830
|
+
const handleSelectAll = (0, import_react35.useCallback)(
|
|
5759
5831
|
(event) => {
|
|
5760
5832
|
const checked = event.target.checked;
|
|
5761
5833
|
const enabledOptions = filteredOptions.filter((option) => !option.disabled);
|
|
@@ -5771,10 +5843,10 @@ function FilterableCheckboxGroup(inProps) {
|
|
|
5771
5843
|
},
|
|
5772
5844
|
[filteredOptions, internalValue, setInternalValue]
|
|
5773
5845
|
);
|
|
5774
|
-
const enabledFilteredOptions = (0,
|
|
5846
|
+
const enabledFilteredOptions = (0, import_react35.useMemo)(() => filteredOptions.filter((option) => !option.disabled), [filteredOptions]);
|
|
5775
5847
|
const isAllSelected = enabledFilteredOptions.length > 0 && enabledFilteredOptions.every((option) => internalValue.includes(option.value));
|
|
5776
5848
|
const isIndeterminate = !isAllSelected && enabledFilteredOptions.some((option) => internalValue.includes(option.value));
|
|
5777
|
-
return /* @__PURE__ */
|
|
5849
|
+
return /* @__PURE__ */ import_react35.default.createElement("div", { style: { width: "100%" } }, /* @__PURE__ */ import_react35.default.createElement(
|
|
5778
5850
|
Input_default,
|
|
5779
5851
|
{
|
|
5780
5852
|
label,
|
|
@@ -5787,9 +5859,9 @@ function FilterableCheckboxGroup(inProps) {
|
|
|
5787
5859
|
onChange: handleSearchChange,
|
|
5788
5860
|
size,
|
|
5789
5861
|
disabled,
|
|
5790
|
-
endDecorator: /* @__PURE__ */
|
|
5862
|
+
endDecorator: /* @__PURE__ */ import_react35.default.createElement(import_Search.default, null)
|
|
5791
5863
|
}
|
|
5792
|
-
), filteredOptions.length === 0 ? /* @__PURE__ */
|
|
5864
|
+
), filteredOptions.length === 0 ? /* @__PURE__ */ import_react35.default.createElement(Typography_default, { level: `body-${size}`, textColor: "neutral.softDisabledColor", padding: "20px 12px", textAlign: "center" }, "No options found.") : /* @__PURE__ */ import_react35.default.createElement(
|
|
5793
5865
|
"div",
|
|
5794
5866
|
{
|
|
5795
5867
|
ref: parentRef,
|
|
@@ -5800,7 +5872,7 @@ function FilterableCheckboxGroup(inProps) {
|
|
|
5800
5872
|
marginTop: "8px"
|
|
5801
5873
|
}
|
|
5802
5874
|
},
|
|
5803
|
-
!searchTerm && /* @__PURE__ */
|
|
5875
|
+
!searchTerm && /* @__PURE__ */ import_react35.default.createElement(
|
|
5804
5876
|
Checkbox_default,
|
|
5805
5877
|
{
|
|
5806
5878
|
label: "Select all",
|
|
@@ -5817,7 +5889,7 @@ function FilterableCheckboxGroup(inProps) {
|
|
|
5817
5889
|
sx: { width: "100%", height: itemSize }
|
|
5818
5890
|
}
|
|
5819
5891
|
),
|
|
5820
|
-
/* @__PURE__ */
|
|
5892
|
+
/* @__PURE__ */ import_react35.default.createElement(
|
|
5821
5893
|
Stack_default,
|
|
5822
5894
|
{
|
|
5823
5895
|
sx: {
|
|
@@ -5827,11 +5899,11 @@ function FilterableCheckboxGroup(inProps) {
|
|
|
5827
5899
|
},
|
|
5828
5900
|
items.map((virtualRow) => {
|
|
5829
5901
|
const option = filteredOptions[virtualRow.index];
|
|
5830
|
-
return /* @__PURE__ */
|
|
5902
|
+
return /* @__PURE__ */ import_react35.default.createElement(
|
|
5831
5903
|
Checkbox_default,
|
|
5832
5904
|
{
|
|
5833
5905
|
key: virtualRow.key,
|
|
5834
|
-
label: /* @__PURE__ */
|
|
5906
|
+
label: /* @__PURE__ */ import_react35.default.createElement(LabelWithTooltip, { label: option.label, size }),
|
|
5835
5907
|
checked: internalValue.includes(option.value),
|
|
5836
5908
|
onChange: handleCheckboxChange(option.value),
|
|
5837
5909
|
size,
|
|
@@ -5859,16 +5931,16 @@ function FilterableCheckboxGroup(inProps) {
|
|
|
5859
5931
|
FilterableCheckboxGroup.displayName = "FilterableCheckboxGroup";
|
|
5860
5932
|
|
|
5861
5933
|
// src/components/FilterMenu/FilterMenu.tsx
|
|
5862
|
-
var
|
|
5934
|
+
var import_react48 = __toESM(require("react"));
|
|
5863
5935
|
var import_joy58 = require("@mui/joy");
|
|
5864
5936
|
|
|
5865
5937
|
// src/components/FilterMenu/components/CheckboxGroup.tsx
|
|
5866
|
-
var
|
|
5938
|
+
var import_react36 = __toESM(require("react"));
|
|
5867
5939
|
var import_joy45 = require("@mui/joy");
|
|
5868
5940
|
function CheckboxGroup(props) {
|
|
5869
5941
|
const { id, label, options, value, onChange, hidden } = props;
|
|
5870
5942
|
const [internalValue, setInternalValue] = useControlledState(value, [], onChange);
|
|
5871
|
-
const handleCheckboxChange = (0,
|
|
5943
|
+
const handleCheckboxChange = (0, import_react36.useCallback)(
|
|
5872
5944
|
(optionValue) => (event) => {
|
|
5873
5945
|
const checked = event.target.checked;
|
|
5874
5946
|
let newValue;
|
|
@@ -5884,7 +5956,7 @@ function CheckboxGroup(props) {
|
|
|
5884
5956
|
if (hidden) {
|
|
5885
5957
|
return null;
|
|
5886
5958
|
}
|
|
5887
|
-
return /* @__PURE__ */
|
|
5959
|
+
return /* @__PURE__ */ import_react36.default.createElement(import_joy45.Stack, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ import_react36.default.createElement(Typography_default, { id, level: "title-sm", component: "label", textColor: "text.tertiary" }, label), options.map((option) => /* @__PURE__ */ import_react36.default.createElement(
|
|
5888
5960
|
Checkbox_default,
|
|
5889
5961
|
{
|
|
5890
5962
|
key: `${id}-${option.value}`,
|
|
@@ -5897,12 +5969,12 @@ function CheckboxGroup(props) {
|
|
|
5897
5969
|
CheckboxGroup.displayName = "CheckboxGroup";
|
|
5898
5970
|
|
|
5899
5971
|
// src/components/FilterMenu/components/FilterableCheckboxGroup.tsx
|
|
5900
|
-
var
|
|
5972
|
+
var import_react37 = __toESM(require("react"));
|
|
5901
5973
|
var import_joy46 = require("@mui/joy");
|
|
5902
5974
|
function FilterableCheckboxGroup2(props) {
|
|
5903
5975
|
const { id, label, options, value, onChange, hidden, placeholder, maxHeight } = props;
|
|
5904
5976
|
const [internalValue, setInternalValue] = useControlledState(value, [], onChange);
|
|
5905
|
-
const handleChange = (0,
|
|
5977
|
+
const handleChange = (0, import_react37.useCallback)(
|
|
5906
5978
|
(newValue) => {
|
|
5907
5979
|
setInternalValue(newValue);
|
|
5908
5980
|
},
|
|
@@ -5911,7 +5983,7 @@ function FilterableCheckboxGroup2(props) {
|
|
|
5911
5983
|
if (hidden) {
|
|
5912
5984
|
return null;
|
|
5913
5985
|
}
|
|
5914
|
-
return /* @__PURE__ */
|
|
5986
|
+
return /* @__PURE__ */ import_react37.default.createElement(import_joy46.Stack, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ import_react37.default.createElement(Typography_default, { id, level: "title-sm", component: "label", textColor: "text.tertiary" }, label), /* @__PURE__ */ import_react37.default.createElement(
|
|
5915
5987
|
FilterableCheckboxGroup,
|
|
5916
5988
|
{
|
|
5917
5989
|
value: internalValue ?? [],
|
|
@@ -5926,7 +5998,7 @@ function FilterableCheckboxGroup2(props) {
|
|
|
5926
5998
|
FilterableCheckboxGroup2.displayName = "FilterableCheckboxGroup";
|
|
5927
5999
|
|
|
5928
6000
|
// src/components/FilterMenu/components/RadioGroup.tsx
|
|
5929
|
-
var
|
|
6001
|
+
var import_react38 = __toESM(require("react"));
|
|
5930
6002
|
|
|
5931
6003
|
// src/components/Radio/Radio.tsx
|
|
5932
6004
|
var import_joy47 = require("@mui/joy");
|
|
@@ -5943,7 +6015,7 @@ var import_joy48 = require("@mui/joy");
|
|
|
5943
6015
|
function RadioGroup2(props) {
|
|
5944
6016
|
const { id, label, options, value, onChange, hidden } = props;
|
|
5945
6017
|
const [internalValue, setInternalValue] = useControlledState(value, value ?? "", onChange);
|
|
5946
|
-
const handleRadioChange = (0,
|
|
6018
|
+
const handleRadioChange = (0, import_react38.useCallback)(
|
|
5947
6019
|
(event) => {
|
|
5948
6020
|
const newValue = event.target.value;
|
|
5949
6021
|
const option = options.find((opt) => opt.value.toString() === newValue);
|
|
@@ -5955,12 +6027,12 @@ function RadioGroup2(props) {
|
|
|
5955
6027
|
if (hidden) {
|
|
5956
6028
|
return null;
|
|
5957
6029
|
}
|
|
5958
|
-
return /* @__PURE__ */
|
|
6030
|
+
return /* @__PURE__ */ import_react38.default.createElement(import_joy48.Stack, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ import_react38.default.createElement(import_joy48.Stack, { spacing: 1 }, /* @__PURE__ */ import_react38.default.createElement(Typography_default, { id, level: "title-sm", component: "label", textColor: "text.tertiary" }, label)), /* @__PURE__ */ import_react38.default.createElement(RadioGroup, { name: id, value: internalValue?.toString(), onChange: handleRadioChange }, options.map((option) => /* @__PURE__ */ import_react38.default.createElement(Radio, { key: `${id}-${option.value}`, value: option.value.toString(), label: option.label }))));
|
|
5959
6031
|
}
|
|
5960
6032
|
RadioGroup2.displayName = "RadioGroup";
|
|
5961
6033
|
|
|
5962
6034
|
// src/components/FilterMenu/components/DateRange.tsx
|
|
5963
|
-
var
|
|
6035
|
+
var import_react39 = __toESM(require("react"));
|
|
5964
6036
|
var import_joy49 = require("@mui/joy");
|
|
5965
6037
|
function DateRange(props) {
|
|
5966
6038
|
const {
|
|
@@ -5978,8 +6050,8 @@ function DateRange(props) {
|
|
|
5978
6050
|
hideClearButton
|
|
5979
6051
|
} = props;
|
|
5980
6052
|
const [internalValue, setInternalValue] = useControlledState(value, null, onChange);
|
|
5981
|
-
const [selectedOption, setSelectedOption] = (0,
|
|
5982
|
-
const dateRangeOptions = (0,
|
|
6053
|
+
const [selectedOption, setSelectedOption] = (0, import_react39.useState)("all-time");
|
|
6054
|
+
const dateRangeOptions = (0, import_react39.useMemo)(
|
|
5983
6055
|
() => [
|
|
5984
6056
|
{ label: "All Time", value: "all-time" },
|
|
5985
6057
|
{ label: "This Month", value: "this-month" },
|
|
@@ -5989,7 +6061,7 @@ function DateRange(props) {
|
|
|
5989
6061
|
],
|
|
5990
6062
|
[]
|
|
5991
6063
|
);
|
|
5992
|
-
const getDateRangeForOption = (0,
|
|
6064
|
+
const getDateRangeForOption = (0, import_react39.useCallback)(
|
|
5993
6065
|
(option) => {
|
|
5994
6066
|
const now = /* @__PURE__ */ new Date();
|
|
5995
6067
|
const currentYear = now.getFullYear();
|
|
@@ -6028,7 +6100,7 @@ function DateRange(props) {
|
|
|
6028
6100
|
},
|
|
6029
6101
|
[internalValue]
|
|
6030
6102
|
);
|
|
6031
|
-
const determineOptionFromValue = (0,
|
|
6103
|
+
const determineOptionFromValue = (0, import_react39.useCallback)(
|
|
6032
6104
|
(value2) => {
|
|
6033
6105
|
if (!value2) {
|
|
6034
6106
|
return "all-time";
|
|
@@ -6044,17 +6116,17 @@ function DateRange(props) {
|
|
|
6044
6116
|
},
|
|
6045
6117
|
[getDateRangeForOption]
|
|
6046
6118
|
);
|
|
6047
|
-
const customDateRangeValue = (0,
|
|
6119
|
+
const customDateRangeValue = (0, import_react39.useMemo)(() => {
|
|
6048
6120
|
if (selectedOption === "custom" && internalValue) {
|
|
6049
6121
|
return `${internalValue[0]} - ${internalValue[1]}`;
|
|
6050
6122
|
}
|
|
6051
6123
|
return "";
|
|
6052
6124
|
}, [selectedOption, internalValue]);
|
|
6053
|
-
(0,
|
|
6125
|
+
(0, import_react39.useEffect)(() => {
|
|
6054
6126
|
const newOption = determineOptionFromValue(internalValue);
|
|
6055
6127
|
setSelectedOption(newOption);
|
|
6056
6128
|
}, [internalValue, determineOptionFromValue]);
|
|
6057
|
-
const handleOptionChange = (0,
|
|
6129
|
+
const handleOptionChange = (0, import_react39.useCallback)(
|
|
6058
6130
|
(event) => {
|
|
6059
6131
|
const newOption = event.target.value;
|
|
6060
6132
|
setSelectedOption(newOption);
|
|
@@ -6063,7 +6135,7 @@ function DateRange(props) {
|
|
|
6063
6135
|
},
|
|
6064
6136
|
[getDateRangeForOption, setInternalValue]
|
|
6065
6137
|
);
|
|
6066
|
-
const handleCustomDateChange = (0,
|
|
6138
|
+
const handleCustomDateChange = (0, import_react39.useCallback)(
|
|
6067
6139
|
(event) => {
|
|
6068
6140
|
const dateRangeString = event.target.value;
|
|
6069
6141
|
if (dateRangeString && dateRangeString.includes(" - ")) {
|
|
@@ -6084,7 +6156,7 @@ function DateRange(props) {
|
|
|
6084
6156
|
if (hidden) {
|
|
6085
6157
|
return null;
|
|
6086
6158
|
}
|
|
6087
|
-
return /* @__PURE__ */
|
|
6159
|
+
return /* @__PURE__ */ import_react39.default.createElement(import_joy49.Stack, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ import_react39.default.createElement(Typography_default, { id, level: "title-sm", component: "label", textColor: "text.tertiary" }, label), /* @__PURE__ */ import_react39.default.createElement(RadioGroup, { name: `${id}-options`, value: selectedOption, onChange: handleOptionChange }, dateRangeOptions.map((option) => /* @__PURE__ */ import_react39.default.createElement(Radio, { key: `${id}-${option.value}`, value: option.value, label: option.label }))), selectedOption === "custom" && /* @__PURE__ */ import_react39.default.createElement(
|
|
6088
6160
|
DateRangePicker,
|
|
6089
6161
|
{
|
|
6090
6162
|
value: customDateRangeValue,
|
|
@@ -6103,11 +6175,11 @@ function DateRange(props) {
|
|
|
6103
6175
|
DateRange.displayName = "DateRange";
|
|
6104
6176
|
|
|
6105
6177
|
// src/components/FilterMenu/components/MonthRange.tsx
|
|
6106
|
-
var
|
|
6178
|
+
var import_react41 = __toESM(require("react"));
|
|
6107
6179
|
var import_joy51 = require("@mui/joy");
|
|
6108
6180
|
|
|
6109
6181
|
// src/components/MonthRangePicker/MonthRangePicker.tsx
|
|
6110
|
-
var
|
|
6182
|
+
var import_react40 = __toESM(require("react"));
|
|
6111
6183
|
var import_react_imask3 = require("react-imask");
|
|
6112
6184
|
var import_CalendarToday3 = __toESM(require("@mui/icons-material/CalendarToday"));
|
|
6113
6185
|
var import_joy50 = require("@mui/joy");
|
|
@@ -6168,9 +6240,9 @@ var parseDates2 = (str) => {
|
|
|
6168
6240
|
var formatToPattern3 = (format) => {
|
|
6169
6241
|
return `${format} - ${format}`.replace(/YYYY/g, "Y").replace(/MM/g, "m").replace(/[^YMm\s]/g, (match) => `${match}\``);
|
|
6170
6242
|
};
|
|
6171
|
-
var TextMaskAdapter7 =
|
|
6243
|
+
var TextMaskAdapter7 = import_react40.default.forwardRef(function TextMaskAdapter8(props, ref) {
|
|
6172
6244
|
const { onChange, format, ...other } = props;
|
|
6173
|
-
return /* @__PURE__ */
|
|
6245
|
+
return /* @__PURE__ */ import_react40.default.createElement(
|
|
6174
6246
|
import_react_imask3.IMaskInput,
|
|
6175
6247
|
{
|
|
6176
6248
|
...other,
|
|
@@ -6198,7 +6270,7 @@ var TextMaskAdapter7 = import_react39.default.forwardRef(function TextMaskAdapte
|
|
|
6198
6270
|
}
|
|
6199
6271
|
);
|
|
6200
6272
|
});
|
|
6201
|
-
var MonthRangePicker = (0,
|
|
6273
|
+
var MonthRangePicker = (0, import_react40.forwardRef)((inProps, ref) => {
|
|
6202
6274
|
const props = (0, import_joy50.useThemeProps)({ props: inProps, name: "MonthRangePicker" });
|
|
6203
6275
|
const {
|
|
6204
6276
|
onChange,
|
|
@@ -6222,24 +6294,24 @@ var MonthRangePicker = (0, import_react39.forwardRef)((inProps, ref) => {
|
|
|
6222
6294
|
} = props;
|
|
6223
6295
|
const displayFormat = displayFormatProp ?? format;
|
|
6224
6296
|
const isAlphabeticDisplay = hasAlphabeticMonth3(displayFormat);
|
|
6225
|
-
const innerRef = (0,
|
|
6226
|
-
const buttonRef = (0,
|
|
6297
|
+
const innerRef = (0, import_react40.useRef)(null);
|
|
6298
|
+
const buttonRef = (0, import_react40.useRef)(null);
|
|
6227
6299
|
const [rawValue, setValue] = useControlledState(
|
|
6228
6300
|
props.value,
|
|
6229
6301
|
props.defaultValue ?? null,
|
|
6230
|
-
(0,
|
|
6302
|
+
(0, import_react40.useCallback)(
|
|
6231
6303
|
(value2) => onChange?.({ target: { name: props.name, value: value2 ?? "" } }),
|
|
6232
6304
|
[props.name, onChange]
|
|
6233
6305
|
)
|
|
6234
6306
|
);
|
|
6235
6307
|
const value = rawValue ?? "";
|
|
6236
|
-
const [displayValue, setDisplayValue] = (0,
|
|
6308
|
+
const [displayValue, setDisplayValue] = (0, import_react40.useState)(
|
|
6237
6309
|
() => value ? formatValueString3(parseDates2(value), displayFormat, locale) : ""
|
|
6238
6310
|
);
|
|
6239
|
-
const [anchorEl, setAnchorEl] = (0,
|
|
6311
|
+
const [anchorEl, setAnchorEl] = (0, import_react40.useState)(null);
|
|
6240
6312
|
const open = Boolean(anchorEl);
|
|
6241
|
-
const calendarValue = (0,
|
|
6242
|
-
(0,
|
|
6313
|
+
const calendarValue = (0, import_react40.useMemo)(() => value ? parseDates2(value) : void 0, [value]);
|
|
6314
|
+
(0, import_react40.useEffect)(() => {
|
|
6243
6315
|
if (value) {
|
|
6244
6316
|
try {
|
|
6245
6317
|
const dates = parseDates2(value);
|
|
@@ -6251,13 +6323,13 @@ var MonthRangePicker = (0, import_react39.forwardRef)((inProps, ref) => {
|
|
|
6251
6323
|
setDisplayValue("");
|
|
6252
6324
|
}
|
|
6253
6325
|
}, [displayFormat, locale, value]);
|
|
6254
|
-
(0,
|
|
6326
|
+
(0, import_react40.useEffect)(() => {
|
|
6255
6327
|
if (!anchorEl) {
|
|
6256
6328
|
innerRef.current?.blur();
|
|
6257
6329
|
}
|
|
6258
6330
|
}, [anchorEl, innerRef]);
|
|
6259
|
-
(0,
|
|
6260
|
-
const handleChange = (0,
|
|
6331
|
+
(0, import_react40.useImperativeHandle)(ref, () => innerRef.current, [innerRef]);
|
|
6332
|
+
const handleChange = (0, import_react40.useCallback)(
|
|
6261
6333
|
(event) => {
|
|
6262
6334
|
setDisplayValue(
|
|
6263
6335
|
event.target.value ? formatValueString3(parseDates2(event.target.value), displayFormat, locale) : ""
|
|
@@ -6266,7 +6338,7 @@ var MonthRangePicker = (0, import_react39.forwardRef)((inProps, ref) => {
|
|
|
6266
6338
|
},
|
|
6267
6339
|
[displayFormat, locale, setValue]
|
|
6268
6340
|
);
|
|
6269
|
-
const handleInputMouseDown = (0,
|
|
6341
|
+
const handleInputMouseDown = (0, import_react40.useCallback)(
|
|
6270
6342
|
(event) => {
|
|
6271
6343
|
if (isAlphabeticDisplay) {
|
|
6272
6344
|
event.preventDefault();
|
|
@@ -6275,14 +6347,14 @@ var MonthRangePicker = (0, import_react39.forwardRef)((inProps, ref) => {
|
|
|
6275
6347
|
},
|
|
6276
6348
|
[isAlphabeticDisplay, buttonRef]
|
|
6277
6349
|
);
|
|
6278
|
-
const handleCalendarToggle = (0,
|
|
6350
|
+
const handleCalendarToggle = (0, import_react40.useCallback)(
|
|
6279
6351
|
(event) => {
|
|
6280
6352
|
setAnchorEl(anchorEl ? null : event.currentTarget);
|
|
6281
6353
|
innerRef.current?.focus();
|
|
6282
6354
|
},
|
|
6283
6355
|
[anchorEl, setAnchorEl, innerRef]
|
|
6284
6356
|
);
|
|
6285
|
-
const handleCalendarChange = (0,
|
|
6357
|
+
const handleCalendarChange = (0, import_react40.useCallback)(
|
|
6286
6358
|
([date1, date2]) => {
|
|
6287
6359
|
if (!date1 || !date2) return;
|
|
6288
6360
|
const formattedValue = formatValueString3([date1, date2], format);
|
|
@@ -6292,7 +6364,7 @@ var MonthRangePicker = (0, import_react39.forwardRef)((inProps, ref) => {
|
|
|
6292
6364
|
},
|
|
6293
6365
|
[setValue, setAnchorEl, format, displayFormat, locale]
|
|
6294
6366
|
);
|
|
6295
|
-
return /* @__PURE__ */
|
|
6367
|
+
return /* @__PURE__ */ import_react40.default.createElement(MonthRangePickerRoot, null, /* @__PURE__ */ import_react40.default.createElement(import_base5.FocusTrap, { open: true }, /* @__PURE__ */ import_react40.default.createElement(import_react40.default.Fragment, null, /* @__PURE__ */ import_react40.default.createElement(
|
|
6296
6368
|
Input_default,
|
|
6297
6369
|
{
|
|
6298
6370
|
...innerProps,
|
|
@@ -6322,7 +6394,7 @@ var MonthRangePicker = (0, import_react39.forwardRef)((inProps, ref) => {
|
|
|
6322
6394
|
// NOTE: placeholder char 를 텍스트로 표시하므로 동일한 너비를 가지는 mono font 를 사용해야 이질감이 없다.
|
|
6323
6395
|
fontFamily: "monospace"
|
|
6324
6396
|
},
|
|
6325
|
-
endDecorator: /* @__PURE__ */
|
|
6397
|
+
endDecorator: /* @__PURE__ */ import_react40.default.createElement(
|
|
6326
6398
|
IconButton_default,
|
|
6327
6399
|
{
|
|
6328
6400
|
ref: buttonRef,
|
|
@@ -6333,12 +6405,12 @@ var MonthRangePicker = (0, import_react39.forwardRef)((inProps, ref) => {
|
|
|
6333
6405
|
"aria-haspopup": "dialog",
|
|
6334
6406
|
"aria-expanded": open
|
|
6335
6407
|
},
|
|
6336
|
-
/* @__PURE__ */
|
|
6408
|
+
/* @__PURE__ */ import_react40.default.createElement(import_CalendarToday3.default, null)
|
|
6337
6409
|
),
|
|
6338
6410
|
label,
|
|
6339
6411
|
helperText
|
|
6340
6412
|
}
|
|
6341
|
-
), open && /* @__PURE__ */
|
|
6413
|
+
), open && /* @__PURE__ */ import_react40.default.createElement(import_base5.ClickAwayListener, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ import_react40.default.createElement(
|
|
6342
6414
|
StyledPopper3,
|
|
6343
6415
|
{
|
|
6344
6416
|
id: "month-range-picker-popper",
|
|
@@ -6357,7 +6429,7 @@ var MonthRangePicker = (0, import_react39.forwardRef)((inProps, ref) => {
|
|
|
6357
6429
|
"aria-label": "Calendar Tooltip",
|
|
6358
6430
|
"aria-expanded": open
|
|
6359
6431
|
},
|
|
6360
|
-
/* @__PURE__ */
|
|
6432
|
+
/* @__PURE__ */ import_react40.default.createElement(CalendarSheet3, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ import_react40.default.createElement(
|
|
6361
6433
|
Calendar_default,
|
|
6362
6434
|
{
|
|
6363
6435
|
view: "month",
|
|
@@ -6371,14 +6443,14 @@ var MonthRangePicker = (0, import_react39.forwardRef)((inProps, ref) => {
|
|
|
6371
6443
|
disablePast,
|
|
6372
6444
|
locale
|
|
6373
6445
|
}
|
|
6374
|
-
), /* @__PURE__ */
|
|
6446
|
+
), /* @__PURE__ */ import_react40.default.createElement(
|
|
6375
6447
|
DialogActions_default,
|
|
6376
6448
|
{
|
|
6377
6449
|
sx: {
|
|
6378
6450
|
p: 1
|
|
6379
6451
|
}
|
|
6380
6452
|
},
|
|
6381
|
-
/* @__PURE__ */
|
|
6453
|
+
/* @__PURE__ */ import_react40.default.createElement(
|
|
6382
6454
|
Button_default,
|
|
6383
6455
|
{
|
|
6384
6456
|
size,
|
|
@@ -6413,11 +6485,11 @@ function MonthRange(props) {
|
|
|
6413
6485
|
locale
|
|
6414
6486
|
} = props;
|
|
6415
6487
|
const [internalValue, setInternalValue] = useControlledState(value, null, onChange);
|
|
6416
|
-
const pickerValue = (0,
|
|
6488
|
+
const pickerValue = (0, import_react41.useMemo)(
|
|
6417
6489
|
() => internalValue ? `${internalValue[0]} - ${internalValue[1]}` : "",
|
|
6418
6490
|
[internalValue]
|
|
6419
6491
|
);
|
|
6420
|
-
const handleChange = (0,
|
|
6492
|
+
const handleChange = (0, import_react41.useCallback)(
|
|
6421
6493
|
(event) => {
|
|
6422
6494
|
const rangeString = event.target.value;
|
|
6423
6495
|
if (rangeString && rangeString.includes(" - ")) {
|
|
@@ -6434,7 +6506,7 @@ function MonthRange(props) {
|
|
|
6434
6506
|
if (hidden) {
|
|
6435
6507
|
return null;
|
|
6436
6508
|
}
|
|
6437
|
-
return /* @__PURE__ */
|
|
6509
|
+
return /* @__PURE__ */ import_react41.default.createElement(import_joy51.Stack, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ import_react41.default.createElement(Typography_default, { id, level: "title-sm", component: "label", textColor: "text.tertiary" }, label), /* @__PURE__ */ import_react41.default.createElement(
|
|
6438
6510
|
MonthRangePicker,
|
|
6439
6511
|
{
|
|
6440
6512
|
value: pickerValue,
|
|
@@ -6452,12 +6524,12 @@ function MonthRange(props) {
|
|
|
6452
6524
|
MonthRange.displayName = "MonthRange";
|
|
6453
6525
|
|
|
6454
6526
|
// src/components/FilterMenu/components/CurrencyInput.tsx
|
|
6455
|
-
var
|
|
6527
|
+
var import_react42 = __toESM(require("react"));
|
|
6456
6528
|
var import_joy52 = require("@mui/joy");
|
|
6457
6529
|
function CurrencyInput3(props) {
|
|
6458
6530
|
const { id, label, value, onChange, hidden, max, placeholder, useMinorUnit, currency = "USD" } = props;
|
|
6459
6531
|
const [internalValue, setInternalValue] = useControlledState(value, value, onChange);
|
|
6460
|
-
const handleCurrencyChange = (0,
|
|
6532
|
+
const handleCurrencyChange = (0, import_react42.useCallback)(
|
|
6461
6533
|
(event) => {
|
|
6462
6534
|
const newValue = event.target.value ?? void 0;
|
|
6463
6535
|
setInternalValue(newValue);
|
|
@@ -6467,7 +6539,7 @@ function CurrencyInput3(props) {
|
|
|
6467
6539
|
if (hidden) {
|
|
6468
6540
|
return null;
|
|
6469
6541
|
}
|
|
6470
|
-
return /* @__PURE__ */
|
|
6542
|
+
return /* @__PURE__ */ import_react42.default.createElement(import_joy52.Stack, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ import_react42.default.createElement(Typography_default, { id, level: "title-sm", component: "label", textColor: "text.tertiary" }, label), /* @__PURE__ */ import_react42.default.createElement(
|
|
6471
6543
|
CurrencyInput,
|
|
6472
6544
|
{
|
|
6473
6545
|
value: internalValue,
|
|
@@ -6483,14 +6555,14 @@ function CurrencyInput3(props) {
|
|
|
6483
6555
|
CurrencyInput3.displayName = "CurrencyInput";
|
|
6484
6556
|
|
|
6485
6557
|
// src/components/FilterMenu/components/CurrencyRange.tsx
|
|
6486
|
-
var
|
|
6558
|
+
var import_react43 = __toESM(require("react"));
|
|
6487
6559
|
var import_joy53 = require("@mui/joy");
|
|
6488
6560
|
function CurrencyRange(props) {
|
|
6489
6561
|
const { id, label, value, onChange, hidden, max, placeholder, useMinorUnit, currency = "USD" } = props;
|
|
6490
6562
|
const [internalValue, setInternalValue] = useControlledState(value, null, onChange);
|
|
6491
6563
|
const minValue = internalValue?.[0];
|
|
6492
6564
|
const maxValue = internalValue?.[1];
|
|
6493
|
-
const handleMinChange = (0,
|
|
6565
|
+
const handleMinChange = (0, import_react43.useCallback)(
|
|
6494
6566
|
(event) => {
|
|
6495
6567
|
const newMinValue = event.target.value ?? void 0;
|
|
6496
6568
|
const currentMaxValue = maxValue;
|
|
@@ -6504,7 +6576,7 @@ function CurrencyRange(props) {
|
|
|
6504
6576
|
},
|
|
6505
6577
|
[maxValue, setInternalValue]
|
|
6506
6578
|
);
|
|
6507
|
-
const handleMaxChange = (0,
|
|
6579
|
+
const handleMaxChange = (0, import_react43.useCallback)(
|
|
6508
6580
|
(event) => {
|
|
6509
6581
|
const newMaxValue = event.target.value ?? void 0;
|
|
6510
6582
|
const currentMinValue = minValue;
|
|
@@ -6521,7 +6593,7 @@ function CurrencyRange(props) {
|
|
|
6521
6593
|
if (hidden) {
|
|
6522
6594
|
return null;
|
|
6523
6595
|
}
|
|
6524
|
-
return /* @__PURE__ */
|
|
6596
|
+
return /* @__PURE__ */ import_react43.default.createElement(import_joy53.Stack, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ import_react43.default.createElement(Typography_default, { id, level: "title-sm", component: "label", textColor: "text.tertiary" }, label), /* @__PURE__ */ import_react43.default.createElement(import_joy53.Stack, { direction: "row", spacing: 2, alignItems: "flex-end" }, /* @__PURE__ */ import_react43.default.createElement(
|
|
6525
6597
|
CurrencyInput,
|
|
6526
6598
|
{
|
|
6527
6599
|
label: "Minimum",
|
|
@@ -6534,7 +6606,7 @@ function CurrencyRange(props) {
|
|
|
6534
6606
|
"aria-labelledby": label ? id : void 0,
|
|
6535
6607
|
"aria-label": "Minimum amount"
|
|
6536
6608
|
}
|
|
6537
|
-
), /* @__PURE__ */
|
|
6609
|
+
), /* @__PURE__ */ import_react43.default.createElement(
|
|
6538
6610
|
CurrencyInput,
|
|
6539
6611
|
{
|
|
6540
6612
|
label: "Maximum",
|
|
@@ -6552,20 +6624,20 @@ function CurrencyRange(props) {
|
|
|
6552
6624
|
CurrencyRange.displayName = "CurrencyRange";
|
|
6553
6625
|
|
|
6554
6626
|
// src/components/FilterMenu/components/PercentageInput.tsx
|
|
6555
|
-
var
|
|
6627
|
+
var import_react45 = __toESM(require("react"));
|
|
6556
6628
|
var import_joy55 = require("@mui/joy");
|
|
6557
6629
|
|
|
6558
6630
|
// src/components/PercentageInput/PercentageInput.tsx
|
|
6559
|
-
var
|
|
6631
|
+
var import_react44 = __toESM(require("react"));
|
|
6560
6632
|
var import_react_number_format2 = require("react-number-format");
|
|
6561
6633
|
var import_joy54 = require("@mui/joy");
|
|
6562
6634
|
var padDecimal = (value, decimalScale) => {
|
|
6563
6635
|
const [integer, decimal = ""] = `${value}`.split(".");
|
|
6564
6636
|
return Number(`${integer}${decimal.padEnd(decimalScale, "0")}`);
|
|
6565
6637
|
};
|
|
6566
|
-
var TextMaskAdapter9 =
|
|
6638
|
+
var TextMaskAdapter9 = import_react44.default.forwardRef(function TextMaskAdapter10(props, ref) {
|
|
6567
6639
|
const { onChange, min, max, ...innerProps } = props;
|
|
6568
|
-
return /* @__PURE__ */
|
|
6640
|
+
return /* @__PURE__ */ import_react44.default.createElement(
|
|
6569
6641
|
import_react_number_format2.NumericFormat,
|
|
6570
6642
|
{
|
|
6571
6643
|
...innerProps,
|
|
@@ -6590,7 +6662,7 @@ var PercentageInputRoot = (0, import_joy54.styled)(Input_default, {
|
|
|
6590
6662
|
slot: "Root",
|
|
6591
6663
|
overridesResolver: (props, styles) => styles.root
|
|
6592
6664
|
})({});
|
|
6593
|
-
var PercentageInput =
|
|
6665
|
+
var PercentageInput = import_react44.default.forwardRef(
|
|
6594
6666
|
function PercentageInput2(inProps, ref) {
|
|
6595
6667
|
const props = (0, import_joy54.useThemeProps)({ props: inProps, name: "PercentageInput" });
|
|
6596
6668
|
const {
|
|
@@ -6613,19 +6685,19 @@ var PercentageInput = import_react43.default.forwardRef(
|
|
|
6613
6685
|
const [_value, setValue] = useControlledState(
|
|
6614
6686
|
props.value,
|
|
6615
6687
|
props.defaultValue ?? null,
|
|
6616
|
-
(0,
|
|
6688
|
+
(0, import_react44.useCallback)((value2) => onChange?.({ target: { name, value: value2 } }), [onChange, name])
|
|
6617
6689
|
);
|
|
6618
|
-
const value = (0,
|
|
6690
|
+
const value = (0, import_react44.useMemo)(() => {
|
|
6619
6691
|
if (_value && useMinorUnit) {
|
|
6620
6692
|
return _value / Math.pow(10, maxDecimalScale);
|
|
6621
6693
|
}
|
|
6622
6694
|
return _value;
|
|
6623
6695
|
}, [_value, useMinorUnit, maxDecimalScale]);
|
|
6624
|
-
const internalError = (0,
|
|
6696
|
+
const internalError = (0, import_react44.useMemo)(
|
|
6625
6697
|
() => value != null && (max != null && value > max || min != null && value < min),
|
|
6626
6698
|
[max, min, value]
|
|
6627
6699
|
);
|
|
6628
|
-
const handleChange = (0,
|
|
6700
|
+
const handleChange = (0, import_react44.useCallback)(
|
|
6629
6701
|
(event) => {
|
|
6630
6702
|
if (event.target.value === "") {
|
|
6631
6703
|
setValue(null);
|
|
@@ -6637,7 +6709,7 @@ var PercentageInput = import_react43.default.forwardRef(
|
|
|
6637
6709
|
},
|
|
6638
6710
|
[setValue, useMinorUnit, maxDecimalScale]
|
|
6639
6711
|
);
|
|
6640
|
-
return /* @__PURE__ */
|
|
6712
|
+
return /* @__PURE__ */ import_react44.default.createElement(
|
|
6641
6713
|
PercentageInputRoot,
|
|
6642
6714
|
{
|
|
6643
6715
|
...innerProps,
|
|
@@ -6684,7 +6756,7 @@ var PercentageInput3 = ({
|
|
|
6684
6756
|
if (hidden) {
|
|
6685
6757
|
return null;
|
|
6686
6758
|
}
|
|
6687
|
-
return /* @__PURE__ */
|
|
6759
|
+
return /* @__PURE__ */ import_react45.default.createElement(import_joy55.Stack, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ import_react45.default.createElement(import_joy55.Typography, { id, level: "title-sm", component: "label", textColor: "text.tertiary" }, label), /* @__PURE__ */ import_react45.default.createElement(
|
|
6688
6760
|
PercentageInput,
|
|
6689
6761
|
{
|
|
6690
6762
|
value: _value,
|
|
@@ -6699,7 +6771,7 @@ var PercentageInput3 = ({
|
|
|
6699
6771
|
};
|
|
6700
6772
|
|
|
6701
6773
|
// src/components/FilterMenu/components/PercentageRange.tsx
|
|
6702
|
-
var
|
|
6774
|
+
var import_react46 = __toESM(require("react"));
|
|
6703
6775
|
var import_joy56 = require("@mui/joy");
|
|
6704
6776
|
function PercentageRange(props) {
|
|
6705
6777
|
const { id, label, value, onChange, hidden, useMinorUnit, maxDecimalScale, min, max } = props;
|
|
@@ -6710,7 +6782,7 @@ function PercentageRange(props) {
|
|
|
6710
6782
|
);
|
|
6711
6783
|
const minValue = internalValue?.[0];
|
|
6712
6784
|
const maxValue = internalValue?.[1];
|
|
6713
|
-
const handleMinChange = (0,
|
|
6785
|
+
const handleMinChange = (0, import_react46.useCallback)(
|
|
6714
6786
|
(event) => {
|
|
6715
6787
|
const newMinValue = event.target.value ?? void 0;
|
|
6716
6788
|
const currentMaxValue = maxValue;
|
|
@@ -6722,7 +6794,7 @@ function PercentageRange(props) {
|
|
|
6722
6794
|
},
|
|
6723
6795
|
[maxValue, setInternalValue]
|
|
6724
6796
|
);
|
|
6725
|
-
const handleMaxChange = (0,
|
|
6797
|
+
const handleMaxChange = (0, import_react46.useCallback)(
|
|
6726
6798
|
(event) => {
|
|
6727
6799
|
const newMaxValue = event.target.value ?? void 0;
|
|
6728
6800
|
const currentMinValue = minValue;
|
|
@@ -6737,7 +6809,7 @@ function PercentageRange(props) {
|
|
|
6737
6809
|
if (hidden) {
|
|
6738
6810
|
return null;
|
|
6739
6811
|
}
|
|
6740
|
-
return /* @__PURE__ */
|
|
6812
|
+
return /* @__PURE__ */ import_react46.default.createElement(import_joy56.Stack, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ import_react46.default.createElement(Typography_default, { id, level: "title-sm", component: "label", textColor: "text.tertiary" }, label), /* @__PURE__ */ import_react46.default.createElement(import_joy56.Stack, { direction: "row", spacing: 2, alignItems: "flex-end" }, /* @__PURE__ */ import_react46.default.createElement(
|
|
6741
6813
|
PercentageInput,
|
|
6742
6814
|
{
|
|
6743
6815
|
label: "Minimum",
|
|
@@ -6751,7 +6823,7 @@ function PercentageRange(props) {
|
|
|
6751
6823
|
"aria-label": "Minimum percentage",
|
|
6752
6824
|
placeholder: "0%"
|
|
6753
6825
|
}
|
|
6754
|
-
), /* @__PURE__ */
|
|
6826
|
+
), /* @__PURE__ */ import_react46.default.createElement(
|
|
6755
6827
|
PercentageInput,
|
|
6756
6828
|
{
|
|
6757
6829
|
label: "Maximum",
|
|
@@ -6770,13 +6842,13 @@ function PercentageRange(props) {
|
|
|
6770
6842
|
PercentageRange.displayName = "PercentageRange";
|
|
6771
6843
|
|
|
6772
6844
|
// src/components/FilterMenu/components/Autocomplete.tsx
|
|
6773
|
-
var
|
|
6845
|
+
var import_react47 = __toESM(require("react"));
|
|
6774
6846
|
var import_joy57 = require("@mui/joy");
|
|
6775
6847
|
function Autocomplete2(props) {
|
|
6776
6848
|
const { id, label, value, onChange, options, multiple, hidden, placeholder } = props;
|
|
6777
6849
|
const [internalValue, setInternalValue] = useControlledState(value, void 0, onChange);
|
|
6778
6850
|
const autocompleteValue = typeof internalValue === "string" || typeof internalValue === "number" ? String(internalValue) : void 0;
|
|
6779
|
-
const handleChange = (0,
|
|
6851
|
+
const handleChange = (0, import_react47.useCallback)(
|
|
6780
6852
|
(event) => {
|
|
6781
6853
|
const val = event.target.value ?? void 0;
|
|
6782
6854
|
if (val) {
|
|
@@ -6791,7 +6863,7 @@ function Autocomplete2(props) {
|
|
|
6791
6863
|
if (hidden) {
|
|
6792
6864
|
return null;
|
|
6793
6865
|
}
|
|
6794
|
-
return /* @__PURE__ */
|
|
6866
|
+
return /* @__PURE__ */ import_react47.default.createElement(import_joy57.Stack, { spacing: 3, role: "group", "aria-labelledby": id }, !!label && /* @__PURE__ */ import_react47.default.createElement(Typography_default, { id, level: "title-sm", component: "label", textColor: "text.tertiary" }, label), /* @__PURE__ */ import_react47.default.createElement(
|
|
6795
6867
|
Autocomplete,
|
|
6796
6868
|
{
|
|
6797
6869
|
value: autocompleteValue,
|
|
@@ -6826,13 +6898,13 @@ function FilterMenu(props) {
|
|
|
6826
6898
|
void 0
|
|
6827
6899
|
// onChange는 Apply 버튼에서만 호출
|
|
6828
6900
|
);
|
|
6829
|
-
const dropdownRegistry = (0,
|
|
6830
|
-
(0,
|
|
6901
|
+
const dropdownRegistry = (0, import_react48.useContext)(DropdownNestedRegistryContext);
|
|
6902
|
+
(0, import_react48.useEffect)(() => {
|
|
6831
6903
|
if (!dropdownRegistry) return void 0;
|
|
6832
6904
|
dropdownRegistry.register();
|
|
6833
6905
|
return () => dropdownRegistry.unregister();
|
|
6834
6906
|
}, [dropdownRegistry]);
|
|
6835
|
-
const handleFilterChange = (0,
|
|
6907
|
+
const handleFilterChange = (0, import_react48.useCallback)(
|
|
6836
6908
|
(filterId, value) => {
|
|
6837
6909
|
setInternalValues((prev) => ({
|
|
6838
6910
|
...prev,
|
|
@@ -6841,17 +6913,17 @@ function FilterMenu(props) {
|
|
|
6841
6913
|
},
|
|
6842
6914
|
[setInternalValues]
|
|
6843
6915
|
);
|
|
6844
|
-
const handleApply = (0,
|
|
6916
|
+
const handleApply = (0, import_react48.useCallback)(() => {
|
|
6845
6917
|
onChange?.(internalValues);
|
|
6846
6918
|
onClose?.();
|
|
6847
6919
|
}, [onChange, onClose, internalValues]);
|
|
6848
|
-
const handleClear = (0,
|
|
6920
|
+
const handleClear = (0, import_react48.useCallback)(() => {
|
|
6849
6921
|
const clearedValues = resetValues || {};
|
|
6850
6922
|
setInternalValues(clearedValues);
|
|
6851
6923
|
onChange?.(clearedValues);
|
|
6852
6924
|
onClose?.();
|
|
6853
6925
|
}, [resetValues, setInternalValues, onChange, onClose]);
|
|
6854
|
-
return /* @__PURE__ */
|
|
6926
|
+
return /* @__PURE__ */ import_react48.default.createElement(
|
|
6855
6927
|
ModalDialog,
|
|
6856
6928
|
{
|
|
6857
6929
|
sx: {
|
|
@@ -6861,9 +6933,9 @@ function FilterMenu(props) {
|
|
|
6861
6933
|
top: "initial"
|
|
6862
6934
|
}
|
|
6863
6935
|
},
|
|
6864
|
-
/* @__PURE__ */
|
|
6936
|
+
/* @__PURE__ */ import_react48.default.createElement(DialogContent, { sx: { paddingTop: 5 } }, /* @__PURE__ */ import_react48.default.createElement(import_joy58.Stack, { spacing: 6 }, filters?.map((filter) => {
|
|
6865
6937
|
const FilterComponent = componentMap[filter.type];
|
|
6866
|
-
return FilterComponent ? /* @__PURE__ */
|
|
6938
|
+
return FilterComponent ? /* @__PURE__ */ import_react48.default.createElement(
|
|
6867
6939
|
FilterComponent,
|
|
6868
6940
|
{
|
|
6869
6941
|
key: filter.id,
|
|
@@ -6875,13 +6947,13 @@ function FilterMenu(props) {
|
|
|
6875
6947
|
}
|
|
6876
6948
|
) : null;
|
|
6877
6949
|
}))),
|
|
6878
|
-
/* @__PURE__ */
|
|
6950
|
+
/* @__PURE__ */ import_react48.default.createElement(DialogActions, { sx: { justifyContent: "space-between" } }, useClear && filters?.length === 1 && /* @__PURE__ */ import_react48.default.createElement(import_joy58.Button, { variant: "plain", color: "neutral", onClick: handleClear }, "Clear"), useReset && !useClear && /* @__PURE__ */ import_react48.default.createElement(import_joy58.Button, { variant: "plain", color: "neutral", onClick: handleClear }, "Reset"), /* @__PURE__ */ import_react48.default.createElement(import_joy58.Button, { variant: "solid", color: "primary", onClick: handleApply }, "Apply"))
|
|
6879
6951
|
);
|
|
6880
6952
|
}
|
|
6881
6953
|
FilterMenu.displayName = "FilterMenu";
|
|
6882
6954
|
|
|
6883
6955
|
// src/components/Uploader/Uploader.tsx
|
|
6884
|
-
var
|
|
6956
|
+
var import_react49 = __toESM(require("react"));
|
|
6885
6957
|
var import_joy59 = require("@mui/joy");
|
|
6886
6958
|
var import_CloudUploadRounded = __toESM(require("@mui/icons-material/CloudUploadRounded"));
|
|
6887
6959
|
var import_UploadFileRounded = __toESM(require("@mui/icons-material/UploadFileRounded"));
|
|
@@ -6944,7 +7016,7 @@ var getFileSize = (n) => {
|
|
|
6944
7016
|
};
|
|
6945
7017
|
var Preview = (props) => {
|
|
6946
7018
|
const { files, uploaded, onDelete } = props;
|
|
6947
|
-
return /* @__PURE__ */
|
|
7019
|
+
return /* @__PURE__ */ import_react49.default.createElement(PreviewRoot, { gap: 1 }, [...uploaded, ...files].map((file) => /* @__PURE__ */ import_react49.default.createElement(UploadCard, { key: file.name, size: "sm", color: "neutral" }, /* @__PURE__ */ import_react49.default.createElement(Stack_default, { direction: "row", alignItems: "center", gap: 2 }, /* @__PURE__ */ import_react49.default.createElement(UploadFileIcon, null), /* @__PURE__ */ import_react49.default.createElement(Stack_default, { flex: "1", sx: { overflow: "hidden" } }, /* @__PURE__ */ import_react49.default.createElement(
|
|
6948
7020
|
Typography_default,
|
|
6949
7021
|
{
|
|
6950
7022
|
level: "body-sm",
|
|
@@ -6956,7 +7028,7 @@ var Preview = (props) => {
|
|
|
6956
7028
|
}
|
|
6957
7029
|
},
|
|
6958
7030
|
file.name
|
|
6959
|
-
), !!file.size && /* @__PURE__ */
|
|
7031
|
+
), !!file.size && /* @__PURE__ */ import_react49.default.createElement(Typography_default, { level: "body-xs", fontWeight: "300", lineHeight: "1.33", textColor: "text.tertiary" }, getFileSize(file.size))), /* @__PURE__ */ import_react49.default.createElement(IconButton_default, { onClick: () => onDelete?.(file) }, /* @__PURE__ */ import_react49.default.createElement(ClearIcon2, null))))));
|
|
6960
7032
|
};
|
|
6961
7033
|
var UploaderRoot = (0, import_joy59.styled)(Stack_default, {
|
|
6962
7034
|
name: "Uploader",
|
|
@@ -6999,7 +7071,7 @@ var UploaderIcon = (0, import_joy59.styled)(import_CloudUploadRounded.default, {
|
|
|
6999
7071
|
}
|
|
7000
7072
|
})
|
|
7001
7073
|
);
|
|
7002
|
-
var Uploader =
|
|
7074
|
+
var Uploader = import_react49.default.memo((props) => {
|
|
7003
7075
|
const {
|
|
7004
7076
|
accept,
|
|
7005
7077
|
minCount,
|
|
@@ -7015,14 +7087,14 @@ var Uploader = import_react48.default.memo((props) => {
|
|
|
7015
7087
|
error: errorProp,
|
|
7016
7088
|
helperText: helperTextProp
|
|
7017
7089
|
} = props;
|
|
7018
|
-
const dropZoneRef = (0,
|
|
7019
|
-
const inputRef = (0,
|
|
7020
|
-
const [errorText, setErrorText] = (0,
|
|
7021
|
-
const [files, setFiles] = (0,
|
|
7022
|
-
const [uploaded, setUploaded] = (0,
|
|
7023
|
-
const [previewState, setPreviewState] = (0,
|
|
7024
|
-
const accepts = (0,
|
|
7025
|
-
const parsedAccepts = (0,
|
|
7090
|
+
const dropZoneRef = (0, import_react49.useRef)(null);
|
|
7091
|
+
const inputRef = (0, import_react49.useRef)(null);
|
|
7092
|
+
const [errorText, setErrorText] = (0, import_react49.useState)();
|
|
7093
|
+
const [files, setFiles] = (0, import_react49.useState)([]);
|
|
7094
|
+
const [uploaded, setUploaded] = (0, import_react49.useState)(props.uploaded || []);
|
|
7095
|
+
const [previewState, setPreviewState] = (0, import_react49.useState)("idle");
|
|
7096
|
+
const accepts = (0, import_react49.useMemo)(() => accept.split(",").map((accept2) => accept2.trim()), [accept]);
|
|
7097
|
+
const parsedAccepts = (0, import_react49.useMemo)(
|
|
7026
7098
|
() => accepts.flatMap((type) => {
|
|
7027
7099
|
if (["image/*", "video/*", "audio/*"].includes(type)) {
|
|
7028
7100
|
return ALL_EXTENSIONS_BY_TYPE[type];
|
|
@@ -7031,7 +7103,7 @@ var Uploader = import_react48.default.memo((props) => {
|
|
|
7031
7103
|
}),
|
|
7032
7104
|
[accepts]
|
|
7033
7105
|
);
|
|
7034
|
-
const helperText = (0,
|
|
7106
|
+
const helperText = (0, import_react49.useMemo)(() => {
|
|
7035
7107
|
if (helperTextProp) {
|
|
7036
7108
|
return helperTextProp;
|
|
7037
7109
|
}
|
|
@@ -7061,12 +7133,12 @@ var Uploader = import_react48.default.memo((props) => {
|
|
|
7061
7133
|
}
|
|
7062
7134
|
return helperTexts.join(", ");
|
|
7063
7135
|
}, [accepts, maxFileTotalSize, maxCount, helperTextProp]);
|
|
7064
|
-
const error = (0,
|
|
7065
|
-
const showDropZone = (0,
|
|
7136
|
+
const error = (0, import_react49.useMemo)(() => !!errorText || errorProp, [errorProp, errorText]);
|
|
7137
|
+
const showDropZone = (0, import_react49.useMemo)(
|
|
7066
7138
|
() => !maxCount || maxCount && [...uploaded, ...files].length !== maxCount,
|
|
7067
7139
|
[files, maxCount, uploaded]
|
|
7068
7140
|
);
|
|
7069
|
-
const addFiles = (0,
|
|
7141
|
+
const addFiles = (0, import_react49.useCallback)(
|
|
7070
7142
|
(uploads) => {
|
|
7071
7143
|
try {
|
|
7072
7144
|
const types = parsedAccepts.map((type) => type.replace(".", "")) || [];
|
|
@@ -7111,7 +7183,7 @@ var Uploader = import_react48.default.memo((props) => {
|
|
|
7111
7183
|
},
|
|
7112
7184
|
[files, uploaded, maxCount, parsedAccepts, maxFileSize, maxFileTotalSize, name, onChange]
|
|
7113
7185
|
);
|
|
7114
|
-
(0,
|
|
7186
|
+
(0, import_react49.useEffect)(() => {
|
|
7115
7187
|
if (!dropZoneRef.current || disabled) {
|
|
7116
7188
|
return;
|
|
7117
7189
|
}
|
|
@@ -7139,7 +7211,7 @@ var Uploader = import_react48.default.memo((props) => {
|
|
|
7139
7211
|
})
|
|
7140
7212
|
);
|
|
7141
7213
|
}, [disabled, addFiles]);
|
|
7142
|
-
(0,
|
|
7214
|
+
(0, import_react49.useEffect)(() => {
|
|
7143
7215
|
if (inputRef.current && minCount) {
|
|
7144
7216
|
if (files.length < minCount) {
|
|
7145
7217
|
inputRef.current.setCustomValidity(`At least ${minCount} files are required.`);
|
|
@@ -7148,14 +7220,14 @@ var Uploader = import_react48.default.memo((props) => {
|
|
|
7148
7220
|
}
|
|
7149
7221
|
}
|
|
7150
7222
|
}, [inputRef, files, minCount]);
|
|
7151
|
-
const handleFileChanged = (0,
|
|
7223
|
+
const handleFileChanged = (0, import_react49.useCallback)(
|
|
7152
7224
|
(event) => {
|
|
7153
7225
|
const files2 = Array.from(event.target.files || []);
|
|
7154
7226
|
addFiles(files2);
|
|
7155
7227
|
},
|
|
7156
7228
|
[addFiles]
|
|
7157
7229
|
);
|
|
7158
|
-
const handleDeleteFile = (0,
|
|
7230
|
+
const handleDeleteFile = (0, import_react49.useCallback)(
|
|
7159
7231
|
(deletedFile) => {
|
|
7160
7232
|
if (deletedFile instanceof File) {
|
|
7161
7233
|
setFiles((current) => {
|
|
@@ -7175,10 +7247,10 @@ var Uploader = import_react48.default.memo((props) => {
|
|
|
7175
7247
|
},
|
|
7176
7248
|
[name, onChange, onDelete]
|
|
7177
7249
|
);
|
|
7178
|
-
const handleUploaderButtonClick = (0,
|
|
7250
|
+
const handleUploaderButtonClick = (0, import_react49.useCallback)(() => {
|
|
7179
7251
|
inputRef.current?.click();
|
|
7180
7252
|
}, []);
|
|
7181
|
-
const uploader = /* @__PURE__ */
|
|
7253
|
+
const uploader = /* @__PURE__ */ import_react49.default.createElement(
|
|
7182
7254
|
FileDropZone,
|
|
7183
7255
|
{
|
|
7184
7256
|
state: previewState,
|
|
@@ -7187,8 +7259,8 @@ var Uploader = import_react48.default.memo((props) => {
|
|
|
7187
7259
|
ref: dropZoneRef,
|
|
7188
7260
|
onClick: handleUploaderButtonClick
|
|
7189
7261
|
},
|
|
7190
|
-
/* @__PURE__ */
|
|
7191
|
-
/* @__PURE__ */
|
|
7262
|
+
/* @__PURE__ */ import_react49.default.createElement(Stack_default, { alignItems: "center", gap: 1 }, /* @__PURE__ */ import_react49.default.createElement(UploaderIcon, { state: previewState, error: !!(error || errorText), disabled })),
|
|
7263
|
+
/* @__PURE__ */ import_react49.default.createElement(
|
|
7192
7264
|
VisuallyHiddenInput,
|
|
7193
7265
|
{
|
|
7194
7266
|
disabled,
|
|
@@ -7211,7 +7283,7 @@ var Uploader = import_react48.default.memo((props) => {
|
|
|
7211
7283
|
}
|
|
7212
7284
|
)
|
|
7213
7285
|
);
|
|
7214
|
-
return /* @__PURE__ */
|
|
7286
|
+
return /* @__PURE__ */ import_react49.default.createElement(UploaderRoot, null, showDropZone && /* @__PURE__ */ import_react49.default.createElement(FormControl_default, { size, error: !!(error || errorText), disabled, required: !!minCount }, label && /* @__PURE__ */ import_react49.default.createElement(FormLabel_default, null, label), uploader, /* @__PURE__ */ import_react49.default.createElement(FormHelperText_default, null, /* @__PURE__ */ import_react49.default.createElement(Stack_default, null, errorText && /* @__PURE__ */ import_react49.default.createElement("div", null, errorText), /* @__PURE__ */ import_react49.default.createElement("div", null, helperText)))), [...uploaded, ...files].length > 0 && /* @__PURE__ */ import_react49.default.createElement(Preview, { files, uploaded, onDelete: handleDeleteFile }));
|
|
7215
7287
|
});
|
|
7216
7288
|
Uploader.displayName = "Uploader";
|
|
7217
7289
|
|
|
@@ -7219,9 +7291,12 @@ Uploader.displayName = "Uploader";
|
|
|
7219
7291
|
var import_joy60 = require("@mui/joy");
|
|
7220
7292
|
|
|
7221
7293
|
// src/components/IconMenuButton/IconMenuButton.tsx
|
|
7222
|
-
var
|
|
7294
|
+
var import_react50 = __toESM(require("react"));
|
|
7223
7295
|
var import_joy61 = require("@mui/joy");
|
|
7224
|
-
function
|
|
7296
|
+
var MenuButtonRootSlot = import_react50.default.forwardRef(function MenuButtonRootSlot2({ as, ownerState: _ownerState, ...rest }, ref) {
|
|
7297
|
+
return /* @__PURE__ */ import_react50.default.createElement(import_joy61.IconButton, { ...rest, component: as ?? "button", ref });
|
|
7298
|
+
});
|
|
7299
|
+
function IconMenuButtonInner(props, ref) {
|
|
7225
7300
|
const {
|
|
7226
7301
|
size,
|
|
7227
7302
|
icon,
|
|
@@ -7232,8 +7307,10 @@ function IconMenuButton(props) {
|
|
|
7232
7307
|
variant = "plain",
|
|
7233
7308
|
placement = "bottom"
|
|
7234
7309
|
} = props;
|
|
7310
|
+
const { ref: buttonComponentRef, ...buttonComponentProps } = props.buttonComponentProps ?? {};
|
|
7311
|
+
const mergedButtonRef = useMergedRef(buttonComponentRef, ref);
|
|
7235
7312
|
if (!items.length) {
|
|
7236
|
-
return /* @__PURE__ */
|
|
7313
|
+
return /* @__PURE__ */ import_react50.default.createElement(
|
|
7237
7314
|
import_joy61.IconButton,
|
|
7238
7315
|
{
|
|
7239
7316
|
component: props.buttonComponent ?? "button",
|
|
@@ -7242,41 +7319,46 @@ function IconMenuButton(props) {
|
|
|
7242
7319
|
color,
|
|
7243
7320
|
disabled,
|
|
7244
7321
|
loading,
|
|
7245
|
-
...
|
|
7322
|
+
...buttonComponentProps,
|
|
7323
|
+
ref: mergedButtonRef
|
|
7246
7324
|
},
|
|
7247
7325
|
icon
|
|
7248
7326
|
);
|
|
7249
7327
|
}
|
|
7250
|
-
return /* @__PURE__ */
|
|
7328
|
+
return /* @__PURE__ */ import_react50.default.createElement(Dropdown_default, null, /* @__PURE__ */ import_react50.default.createElement(
|
|
7251
7329
|
import_joy61.MenuButton,
|
|
7252
7330
|
{
|
|
7253
|
-
slots: { root:
|
|
7331
|
+
slots: { root: MenuButtonRootSlot },
|
|
7254
7332
|
slotProps: {
|
|
7255
7333
|
root: {
|
|
7256
|
-
|
|
7334
|
+
// 기본값 'button'은 MenuButtonRootSlot 한 곳에만 둔다.
|
|
7335
|
+
component: props.buttonComponent,
|
|
7257
7336
|
size,
|
|
7258
7337
|
variant,
|
|
7259
7338
|
color,
|
|
7260
7339
|
disabled,
|
|
7261
7340
|
loading,
|
|
7262
|
-
...
|
|
7341
|
+
...buttonComponentProps,
|
|
7342
|
+
// Joy의 useSlot이 내부 ref와 이 ref를 합쳐준다. 위 no-items 분기와 같은 경로로 ref를 넘긴다.
|
|
7343
|
+
ref: mergedButtonRef
|
|
7263
7344
|
}
|
|
7264
7345
|
}
|
|
7265
7346
|
},
|
|
7266
7347
|
icon
|
|
7267
|
-
), /* @__PURE__ */
|
|
7348
|
+
), /* @__PURE__ */ import_react50.default.createElement(Menu, { placement, size }, items.map((i) => /* @__PURE__ */ import_react50.default.createElement(MenuItem, { key: i.text, component: i.component, ...i.componentProps ?? {} }, i.text))));
|
|
7268
7349
|
}
|
|
7350
|
+
var IconMenuButton = import_react50.default.forwardRef(IconMenuButtonInner);
|
|
7269
7351
|
IconMenuButton.displayName = "IconMenuButton";
|
|
7270
7352
|
|
|
7271
7353
|
// src/components/Markdown/Markdown.tsx
|
|
7272
|
-
var
|
|
7354
|
+
var import_react51 = __toESM(require("react"));
|
|
7273
7355
|
var import_joy62 = require("@mui/joy");
|
|
7274
7356
|
var import_joy63 = require("@mui/joy");
|
|
7275
7357
|
var import_remark_gfm = __toESM(require("remark-gfm"));
|
|
7276
|
-
var LazyReactMarkdown = (0,
|
|
7358
|
+
var LazyReactMarkdown = (0, import_react51.lazy)(() => import("react-markdown"));
|
|
7277
7359
|
var Markdown = (props) => {
|
|
7278
|
-
const [rehypeAccent2, setRehypeAccent] = (0,
|
|
7279
|
-
(0,
|
|
7360
|
+
const [rehypeAccent2, setRehypeAccent] = (0, import_react51.useState)(null);
|
|
7361
|
+
(0, import_react51.useEffect)(() => {
|
|
7280
7362
|
const loadRehypeAccent = async () => {
|
|
7281
7363
|
const module2 = await Promise.resolve().then(() => (init_rehype_accent(), rehype_accent_exports));
|
|
7282
7364
|
setRehypeAccent(() => module2.rehypeAccent);
|
|
@@ -7298,8 +7380,8 @@ var Markdown = (props) => {
|
|
|
7298
7380
|
if (!rehypeAccent2) {
|
|
7299
7381
|
return null;
|
|
7300
7382
|
}
|
|
7301
|
-
return /* @__PURE__ */
|
|
7302
|
-
|
|
7383
|
+
return /* @__PURE__ */ import_react51.default.createElement(Typography, { component: "div", color, textColor, level: defaultLevel, ...innerProps }, /* @__PURE__ */ import_react51.default.createElement(
|
|
7384
|
+
import_react51.Suspense,
|
|
7303
7385
|
{
|
|
7304
7386
|
fallback: (
|
|
7305
7387
|
// While in the fallback state, prevent browser auto-translation (e.g. Chrome/Google Translate)
|
|
@@ -7307,10 +7389,10 @@ var Markdown = (props) => {
|
|
|
7307
7389
|
// swaps the fallback for the real content via insertBefore; if the browser has mutated the DOM
|
|
7308
7390
|
// in the meantime, the reference node's parent changes and React throws a DOMException
|
|
7309
7391
|
// ("Failed to execute 'insertBefore' on 'Node'"), crashing the subtree. (cf. facebook/react#11538)
|
|
7310
|
-
fallback || /* @__PURE__ */
|
|
7392
|
+
fallback || /* @__PURE__ */ import_react51.default.createElement(Typography, { translate: "no", className: "notranslate" }, /* @__PURE__ */ import_react51.default.createElement(import_joy62.Skeleton, null, content || ""))
|
|
7311
7393
|
)
|
|
7312
7394
|
},
|
|
7313
|
-
/* @__PURE__ */
|
|
7395
|
+
/* @__PURE__ */ import_react51.default.createElement(
|
|
7314
7396
|
LazyReactMarkdown,
|
|
7315
7397
|
{
|
|
7316
7398
|
...markdownOptions,
|
|
@@ -7318,17 +7400,17 @@ var Markdown = (props) => {
|
|
|
7318
7400
|
rehypePlugins: [[rehypeAccent2, { accentColor }]],
|
|
7319
7401
|
remarkPlugins: [import_remark_gfm.default],
|
|
7320
7402
|
components: {
|
|
7321
|
-
a: ({ children, href }) => /* @__PURE__ */
|
|
7322
|
-
hr: () => /* @__PURE__ */
|
|
7323
|
-
b: ({ children }) => /* @__PURE__ */
|
|
7324
|
-
strong: ({ children }) => /* @__PURE__ */
|
|
7403
|
+
a: ({ children, href }) => /* @__PURE__ */ import_react51.default.createElement(import_joy63.Link, { href, target: defaultLinkAction }, children),
|
|
7404
|
+
hr: () => /* @__PURE__ */ import_react51.default.createElement(Divider, { sx: { display: "block" } }),
|
|
7405
|
+
b: ({ children }) => /* @__PURE__ */ import_react51.default.createElement(Typography, { component: "strong", fontWeight: boldFontWeight || "lg" }, children),
|
|
7406
|
+
strong: ({ children }) => /* @__PURE__ */ import_react51.default.createElement(Typography, { component: "strong", fontWeight: boldFontWeight || "lg" }, children),
|
|
7325
7407
|
// Table components
|
|
7326
|
-
table: ({ children }) => /* @__PURE__ */
|
|
7408
|
+
table: ({ children }) => /* @__PURE__ */ import_react51.default.createElement(Sheet, { variant: "outlined", sx: { display: "block", borderRadius: "sm", overflow: "auto" } }, /* @__PURE__ */ import_react51.default.createElement(Table, { size: "sm" }, children)),
|
|
7327
7409
|
// Code components
|
|
7328
7410
|
code: ({ children, className }) => {
|
|
7329
7411
|
const isBlock = className?.startsWith("language-");
|
|
7330
7412
|
if (isBlock) {
|
|
7331
|
-
return /* @__PURE__ */
|
|
7413
|
+
return /* @__PURE__ */ import_react51.default.createElement(
|
|
7332
7414
|
Typography,
|
|
7333
7415
|
{
|
|
7334
7416
|
component: "code",
|
|
@@ -7342,7 +7424,7 @@ var Markdown = (props) => {
|
|
|
7342
7424
|
children
|
|
7343
7425
|
);
|
|
7344
7426
|
}
|
|
7345
|
-
return /* @__PURE__ */
|
|
7427
|
+
return /* @__PURE__ */ import_react51.default.createElement(
|
|
7346
7428
|
Typography,
|
|
7347
7429
|
{
|
|
7348
7430
|
component: "code",
|
|
@@ -7357,7 +7439,7 @@ var Markdown = (props) => {
|
|
|
7357
7439
|
children
|
|
7358
7440
|
);
|
|
7359
7441
|
},
|
|
7360
|
-
pre: ({ children }) => /* @__PURE__ */
|
|
7442
|
+
pre: ({ children }) => /* @__PURE__ */ import_react51.default.createElement(
|
|
7361
7443
|
Sheet,
|
|
7362
7444
|
{
|
|
7363
7445
|
variant: "soft",
|
|
@@ -7375,12 +7457,12 @@ var Markdown = (props) => {
|
|
|
7375
7457
|
// Task list checkbox
|
|
7376
7458
|
input: ({ checked, type }) => {
|
|
7377
7459
|
if (type === "checkbox") {
|
|
7378
|
-
return /* @__PURE__ */
|
|
7460
|
+
return /* @__PURE__ */ import_react51.default.createElement(Checkbox, { checked, disabled: true, size: "sm", sx: { mr: 1 } });
|
|
7379
7461
|
}
|
|
7380
|
-
return /* @__PURE__ */
|
|
7462
|
+
return /* @__PURE__ */ import_react51.default.createElement("input", { checked, type });
|
|
7381
7463
|
},
|
|
7382
7464
|
// Blockquote
|
|
7383
|
-
blockquote: ({ children }) => /* @__PURE__ */
|
|
7465
|
+
blockquote: ({ children }) => /* @__PURE__ */ import_react51.default.createElement(
|
|
7384
7466
|
Sheet,
|
|
7385
7467
|
{
|
|
7386
7468
|
variant: "soft",
|
|
@@ -7389,12 +7471,12 @@ var Markdown = (props) => {
|
|
|
7389
7471
|
children
|
|
7390
7472
|
),
|
|
7391
7473
|
// Image
|
|
7392
|
-
img: ({ src, alt }) => /* @__PURE__ */
|
|
7474
|
+
img: ({ src, alt }) => /* @__PURE__ */ import_react51.default.createElement("img", { src, alt, style: { maxWidth: "100%", borderRadius: "4px" } }),
|
|
7393
7475
|
// Text style components
|
|
7394
|
-
em: ({ children }) => /* @__PURE__ */
|
|
7395
|
-
del: ({ children }) => /* @__PURE__ */
|
|
7476
|
+
em: ({ children }) => /* @__PURE__ */ import_react51.default.createElement(Typography, { component: "em", sx: { fontStyle: "italic" } }, children),
|
|
7477
|
+
del: ({ children }) => /* @__PURE__ */ import_react51.default.createElement(Typography, { component: "del", sx: { textDecoration: "line-through" } }, children),
|
|
7396
7478
|
// Span for accent color (from rehype-accent plugin)
|
|
7397
|
-
span: ({ children, node }) => /* @__PURE__ */
|
|
7479
|
+
span: ({ children, node }) => /* @__PURE__ */ import_react51.default.createElement(Typography, { component: "span", textColor: node?.properties?.textColor }, children),
|
|
7398
7480
|
...markdownOptions?.components
|
|
7399
7481
|
}
|
|
7400
7482
|
}
|
|
@@ -7404,7 +7486,7 @@ var Markdown = (props) => {
|
|
|
7404
7486
|
Markdown.displayName = "Markdown";
|
|
7405
7487
|
|
|
7406
7488
|
// src/components/MenuButton/MenuButton.tsx
|
|
7407
|
-
var
|
|
7489
|
+
var import_react52 = __toESM(require("react"));
|
|
7408
7490
|
var import_joy64 = require("@mui/joy");
|
|
7409
7491
|
var import_ExpandMore = __toESM(require("@mui/icons-material/ExpandMore"));
|
|
7410
7492
|
function MenuButton2(props) {
|
|
@@ -7422,7 +7504,7 @@ function MenuButton2(props) {
|
|
|
7422
7504
|
placement = "bottom"
|
|
7423
7505
|
} = props;
|
|
7424
7506
|
if (!items.length) {
|
|
7425
|
-
return /* @__PURE__ */
|
|
7507
|
+
return /* @__PURE__ */ import_react52.default.createElement(
|
|
7426
7508
|
import_joy64.Button,
|
|
7427
7509
|
{
|
|
7428
7510
|
component: props.buttonComponent ?? "button",
|
|
@@ -7433,12 +7515,12 @@ function MenuButton2(props) {
|
|
|
7433
7515
|
loading,
|
|
7434
7516
|
startDecorator,
|
|
7435
7517
|
...props.buttonComponentProps ?? {},
|
|
7436
|
-
endDecorator: showIcon ? /* @__PURE__ */
|
|
7518
|
+
endDecorator: showIcon ? /* @__PURE__ */ import_react52.default.createElement(import_react52.default.Fragment, null, endDecorator, /* @__PURE__ */ import_react52.default.createElement(import_ExpandMore.default, null)) : /* @__PURE__ */ import_react52.default.createElement(import_react52.default.Fragment, null, endDecorator)
|
|
7437
7519
|
},
|
|
7438
7520
|
buttonText
|
|
7439
7521
|
);
|
|
7440
7522
|
}
|
|
7441
|
-
return /* @__PURE__ */
|
|
7523
|
+
return /* @__PURE__ */ import_react52.default.createElement(Dropdown_default, null, /* @__PURE__ */ import_react52.default.createElement(
|
|
7442
7524
|
import_joy64.MenuButton,
|
|
7443
7525
|
{
|
|
7444
7526
|
component: props.buttonComponent ?? "button",
|
|
@@ -7449,15 +7531,15 @@ function MenuButton2(props) {
|
|
|
7449
7531
|
loading,
|
|
7450
7532
|
startDecorator,
|
|
7451
7533
|
...props.buttonComponentProps ?? {},
|
|
7452
|
-
endDecorator: showIcon ? /* @__PURE__ */
|
|
7534
|
+
endDecorator: showIcon ? /* @__PURE__ */ import_react52.default.createElement(import_react52.default.Fragment, null, endDecorator, /* @__PURE__ */ import_react52.default.createElement(import_ExpandMore.default, null)) : /* @__PURE__ */ import_react52.default.createElement(import_react52.default.Fragment, null, endDecorator)
|
|
7453
7535
|
},
|
|
7454
7536
|
buttonText
|
|
7455
|
-
), /* @__PURE__ */
|
|
7537
|
+
), /* @__PURE__ */ import_react52.default.createElement(Menu, { placement, size }, items.map((i) => /* @__PURE__ */ import_react52.default.createElement(MenuItem, { key: i.text, component: i.component, ...i.componentProps ?? {} }, i.text))));
|
|
7456
7538
|
}
|
|
7457
7539
|
MenuButton2.displayName = "MenuButton";
|
|
7458
7540
|
|
|
7459
7541
|
// src/components/MonthPicker/MonthPicker.tsx
|
|
7460
|
-
var
|
|
7542
|
+
var import_react53 = __toESM(require("react"));
|
|
7461
7543
|
var import_CalendarToday4 = __toESM(require("@mui/icons-material/CalendarToday"));
|
|
7462
7544
|
var import_joy65 = require("@mui/joy");
|
|
7463
7545
|
var import_base6 = require("@mui/base");
|
|
@@ -7513,7 +7595,7 @@ function parseDate4(dateString, format) {
|
|
|
7513
7595
|
const result = new Date(year, month, day);
|
|
7514
7596
|
return result;
|
|
7515
7597
|
}
|
|
7516
|
-
var MonthPicker = (0,
|
|
7598
|
+
var MonthPicker = (0, import_react53.forwardRef)((inProps, ref) => {
|
|
7517
7599
|
const props = (0, import_joy65.useThemeProps)({ props: inProps, name: "MonthPicker" });
|
|
7518
7600
|
const {
|
|
7519
7601
|
onChange,
|
|
@@ -7540,18 +7622,18 @@ var MonthPicker = (0, import_react52.forwardRef)((inProps, ref) => {
|
|
|
7540
7622
|
locale,
|
|
7541
7623
|
...innerProps
|
|
7542
7624
|
} = props;
|
|
7543
|
-
const innerRef = (0,
|
|
7544
|
-
const buttonRef = (0,
|
|
7625
|
+
const innerRef = (0, import_react53.useRef)(null);
|
|
7626
|
+
const buttonRef = (0, import_react53.useRef)(null);
|
|
7545
7627
|
const [rawValue, setValue, isControlled] = useControlledState(
|
|
7546
7628
|
props.value,
|
|
7547
7629
|
props.defaultValue ?? null,
|
|
7548
|
-
(0,
|
|
7630
|
+
(0, import_react53.useCallback)(
|
|
7549
7631
|
(value2) => onChange?.({ target: { name: props.name, value: value2 ?? "" } }),
|
|
7550
7632
|
[props.name, onChange]
|
|
7551
7633
|
)
|
|
7552
7634
|
);
|
|
7553
7635
|
const value = rawValue ?? "";
|
|
7554
|
-
const getFormattedDisplayValue = (0,
|
|
7636
|
+
const getFormattedDisplayValue = (0, import_react53.useCallback)(
|
|
7555
7637
|
(inputValue) => {
|
|
7556
7638
|
if (!inputValue) return "";
|
|
7557
7639
|
try {
|
|
@@ -7562,19 +7644,19 @@ var MonthPicker = (0, import_react52.forwardRef)((inProps, ref) => {
|
|
|
7562
7644
|
},
|
|
7563
7645
|
[format, displayFormat, locale]
|
|
7564
7646
|
);
|
|
7565
|
-
const [displayValue, setDisplayValue] = (0,
|
|
7566
|
-
const [anchorEl, setAnchorEl] = (0,
|
|
7647
|
+
const [displayValue, setDisplayValue] = (0, import_react53.useState)(() => getFormattedDisplayValue(value));
|
|
7648
|
+
const [anchorEl, setAnchorEl] = (0, import_react53.useState)(null);
|
|
7567
7649
|
const open = Boolean(anchorEl);
|
|
7568
|
-
(0,
|
|
7650
|
+
(0, import_react53.useEffect)(() => {
|
|
7569
7651
|
if (!anchorEl) {
|
|
7570
7652
|
innerRef.current?.blur();
|
|
7571
7653
|
}
|
|
7572
7654
|
}, [anchorEl, innerRef]);
|
|
7573
|
-
(0,
|
|
7574
|
-
(0,
|
|
7655
|
+
(0, import_react53.useImperativeHandle)(ref, () => innerRef.current, [innerRef]);
|
|
7656
|
+
(0, import_react53.useEffect)(() => {
|
|
7575
7657
|
setDisplayValue(getFormattedDisplayValue(value));
|
|
7576
7658
|
}, [value, getFormattedDisplayValue]);
|
|
7577
|
-
const handleChange = (0,
|
|
7659
|
+
const handleChange = (0, import_react53.useCallback)(
|
|
7578
7660
|
(event) => {
|
|
7579
7661
|
const newValue = event.target.value;
|
|
7580
7662
|
setValue(newValue);
|
|
@@ -7584,21 +7666,21 @@ var MonthPicker = (0, import_react52.forwardRef)((inProps, ref) => {
|
|
|
7584
7666
|
},
|
|
7585
7667
|
[setValue, getFormattedDisplayValue, isControlled]
|
|
7586
7668
|
);
|
|
7587
|
-
const handleCalendarToggle = (0,
|
|
7669
|
+
const handleCalendarToggle = (0, import_react53.useCallback)(
|
|
7588
7670
|
(event) => {
|
|
7589
7671
|
setAnchorEl(anchorEl ? null : event.currentTarget);
|
|
7590
7672
|
innerRef.current?.focus();
|
|
7591
7673
|
},
|
|
7592
7674
|
[anchorEl, setAnchorEl, innerRef]
|
|
7593
7675
|
);
|
|
7594
|
-
const handleInputMouseDown = (0,
|
|
7676
|
+
const handleInputMouseDown = (0, import_react53.useCallback)(
|
|
7595
7677
|
(event) => {
|
|
7596
7678
|
event.preventDefault();
|
|
7597
7679
|
buttonRef.current?.focus();
|
|
7598
7680
|
},
|
|
7599
7681
|
[buttonRef]
|
|
7600
7682
|
);
|
|
7601
|
-
return /* @__PURE__ */
|
|
7683
|
+
return /* @__PURE__ */ import_react53.default.createElement(MonthPickerRoot, null, /* @__PURE__ */ import_react53.default.createElement(import_base6.FocusTrap, { open: true }, /* @__PURE__ */ import_react53.default.createElement(import_react53.default.Fragment, null, /* @__PURE__ */ import_react53.default.createElement(
|
|
7602
7684
|
Input_default,
|
|
7603
7685
|
{
|
|
7604
7686
|
...innerProps,
|
|
@@ -7628,7 +7710,7 @@ var MonthPicker = (0, import_react52.forwardRef)((inProps, ref) => {
|
|
|
7628
7710
|
// NOTE: placeholder char 를 텍스트로 표시하므로 동일한 너비를 가지는 mono font 를 사용해야 이질감이 없다.
|
|
7629
7711
|
fontFamily: "monospace"
|
|
7630
7712
|
},
|
|
7631
|
-
endDecorator: /* @__PURE__ */
|
|
7713
|
+
endDecorator: /* @__PURE__ */ import_react53.default.createElement(
|
|
7632
7714
|
IconButton_default,
|
|
7633
7715
|
{
|
|
7634
7716
|
ref: buttonRef,
|
|
@@ -7640,12 +7722,12 @@ var MonthPicker = (0, import_react52.forwardRef)((inProps, ref) => {
|
|
|
7640
7722
|
"aria-expanded": open,
|
|
7641
7723
|
disabled
|
|
7642
7724
|
},
|
|
7643
|
-
/* @__PURE__ */
|
|
7725
|
+
/* @__PURE__ */ import_react53.default.createElement(import_CalendarToday4.default, null)
|
|
7644
7726
|
),
|
|
7645
7727
|
label,
|
|
7646
7728
|
helperText
|
|
7647
7729
|
}
|
|
7648
|
-
), open && /* @__PURE__ */
|
|
7730
|
+
), open && /* @__PURE__ */ import_react53.default.createElement(import_base6.ClickAwayListener, { onClickAway: () => setAnchorEl(null) }, /* @__PURE__ */ import_react53.default.createElement(
|
|
7649
7731
|
StyledPopper4,
|
|
7650
7732
|
{
|
|
7651
7733
|
id: "month-picker-popper",
|
|
@@ -7664,7 +7746,7 @@ var MonthPicker = (0, import_react52.forwardRef)((inProps, ref) => {
|
|
|
7664
7746
|
"aria-label": "Calendar Tooltip",
|
|
7665
7747
|
"aria-expanded": open
|
|
7666
7748
|
},
|
|
7667
|
-
/* @__PURE__ */
|
|
7749
|
+
/* @__PURE__ */ import_react53.default.createElement(CalendarSheet4, { tabIndex: -1, role: "presentation" }, /* @__PURE__ */ import_react53.default.createElement(
|
|
7668
7750
|
Calendar_default,
|
|
7669
7751
|
{
|
|
7670
7752
|
view: "month",
|
|
@@ -7685,14 +7767,14 @@ var MonthPicker = (0, import_react52.forwardRef)((inProps, ref) => {
|
|
|
7685
7767
|
disablePast,
|
|
7686
7768
|
locale
|
|
7687
7769
|
}
|
|
7688
|
-
), /* @__PURE__ */
|
|
7770
|
+
), /* @__PURE__ */ import_react53.default.createElement(
|
|
7689
7771
|
DialogActions_default,
|
|
7690
7772
|
{
|
|
7691
7773
|
sx: {
|
|
7692
7774
|
p: 1
|
|
7693
7775
|
}
|
|
7694
7776
|
},
|
|
7695
|
-
/* @__PURE__ */
|
|
7777
|
+
/* @__PURE__ */ import_react53.default.createElement(
|
|
7696
7778
|
Button_default,
|
|
7697
7779
|
{
|
|
7698
7780
|
size,
|
|
@@ -7715,7 +7797,7 @@ var MonthPicker = (0, import_react52.forwardRef)((inProps, ref) => {
|
|
|
7715
7797
|
});
|
|
7716
7798
|
|
|
7717
7799
|
// src/components/NavigationGroup/NavigationGroup.tsx
|
|
7718
|
-
var
|
|
7800
|
+
var import_react54 = __toESM(require("react"));
|
|
7719
7801
|
var import_joy66 = require("@mui/joy");
|
|
7720
7802
|
var AccordionSummary2 = (0, import_joy66.styled)(import_joy66.AccordionSummary, {
|
|
7721
7803
|
name: "NavigationGroup",
|
|
@@ -7739,11 +7821,11 @@ var AccordionDetails2 = (0, import_joy66.styled)(import_joy66.AccordionDetails,
|
|
|
7739
7821
|
}));
|
|
7740
7822
|
function NavigationGroup(props) {
|
|
7741
7823
|
const { title, children, startDecorator, level, ...rest } = props;
|
|
7742
|
-
return /* @__PURE__ */
|
|
7824
|
+
return /* @__PURE__ */ import_react54.default.createElement(import_joy66.Accordion, { ...rest }, /* @__PURE__ */ import_react54.default.createElement(AccordionSummary2, { useIcon: !!startDecorator, level }, /* @__PURE__ */ import_react54.default.createElement(import_joy66.Stack, { direction: "row", gap: 4 }, startDecorator, title)), /* @__PURE__ */ import_react54.default.createElement(AccordionDetails2, null, children));
|
|
7743
7825
|
}
|
|
7744
7826
|
|
|
7745
7827
|
// src/components/NavigationItem/NavigationItem.tsx
|
|
7746
|
-
var
|
|
7828
|
+
var import_react55 = __toESM(require("react"));
|
|
7747
7829
|
var import_joy67 = require("@mui/joy");
|
|
7748
7830
|
var ListItemButton = (0, import_joy67.styled)(import_joy67.ListItemButton, {
|
|
7749
7831
|
name: "NavigationItem",
|
|
@@ -7772,7 +7854,7 @@ function NavigationItem(props) {
|
|
|
7772
7854
|
const handleClick = () => {
|
|
7773
7855
|
onClick?.(id);
|
|
7774
7856
|
};
|
|
7775
|
-
return /* @__PURE__ */
|
|
7857
|
+
return /* @__PURE__ */ import_react55.default.createElement(import_joy67.ListItem, { ...rest }, /* @__PURE__ */ import_react55.default.createElement(
|
|
7776
7858
|
ListItemButton,
|
|
7777
7859
|
{
|
|
7778
7860
|
level,
|
|
@@ -7781,21 +7863,21 @@ function NavigationItem(props) {
|
|
|
7781
7863
|
"aria-current": selected,
|
|
7782
7864
|
onClick: handleClick
|
|
7783
7865
|
},
|
|
7784
|
-
startDecorator && /* @__PURE__ */
|
|
7866
|
+
startDecorator && /* @__PURE__ */ import_react55.default.createElement(import_joy67.ListItemDecorator, null, startDecorator),
|
|
7785
7867
|
children
|
|
7786
7868
|
));
|
|
7787
7869
|
}
|
|
7788
7870
|
|
|
7789
7871
|
// src/components/Navigator/Navigator.tsx
|
|
7790
|
-
var
|
|
7872
|
+
var import_react56 = __toESM(require("react"));
|
|
7791
7873
|
function Navigator(props) {
|
|
7792
7874
|
const { items, level = 0, onSelect } = props;
|
|
7793
7875
|
const handleItemClick = (id) => {
|
|
7794
7876
|
onSelect?.(id);
|
|
7795
7877
|
};
|
|
7796
|
-
return /* @__PURE__ */
|
|
7878
|
+
return /* @__PURE__ */ import_react56.default.createElement("div", null, items.map((item, index) => {
|
|
7797
7879
|
if (item.type === "item") {
|
|
7798
|
-
return /* @__PURE__ */
|
|
7880
|
+
return /* @__PURE__ */ import_react56.default.createElement(
|
|
7799
7881
|
NavigationItem,
|
|
7800
7882
|
{
|
|
7801
7883
|
key: item.id,
|
|
@@ -7808,7 +7890,7 @@ function Navigator(props) {
|
|
|
7808
7890
|
item.title
|
|
7809
7891
|
);
|
|
7810
7892
|
} else if (item.type === "group") {
|
|
7811
|
-
return /* @__PURE__ */
|
|
7893
|
+
return /* @__PURE__ */ import_react56.default.createElement(
|
|
7812
7894
|
NavigationGroup,
|
|
7813
7895
|
{
|
|
7814
7896
|
key: `${item.title}-${index}`,
|
|
@@ -7826,7 +7908,7 @@ function Navigator(props) {
|
|
|
7826
7908
|
Navigator.displayName = "Navigator";
|
|
7827
7909
|
|
|
7828
7910
|
// src/components/ProfileMenu/ProfileMenu.tsx
|
|
7829
|
-
var
|
|
7911
|
+
var import_react57 = __toESM(require("react"));
|
|
7830
7912
|
var import_joy68 = require("@mui/joy");
|
|
7831
7913
|
var import_base7 = require("@mui/base");
|
|
7832
7914
|
var import_ArrowDropDown = __toESM(require("@mui/icons-material/ArrowDropDown"));
|
|
@@ -7836,9 +7918,9 @@ var StyledProfileCard = (0, import_joy68.styled)(import_joy3.Stack, {
|
|
|
7836
7918
|
})({});
|
|
7837
7919
|
function ProfileCard(props) {
|
|
7838
7920
|
const { children, chip, caption, size } = props;
|
|
7839
|
-
const captionLevel = (0,
|
|
7840
|
-
const nameLevel = (0,
|
|
7841
|
-
return /* @__PURE__ */
|
|
7921
|
+
const captionLevel = (0, import_react57.useMemo)(() => size === "sm" ? "body-xs" : "body-sm", [size]);
|
|
7922
|
+
const nameLevel = (0, import_react57.useMemo)(() => size === "sm" ? "body-sm" : "body-md", [size]);
|
|
7923
|
+
return /* @__PURE__ */ import_react57.default.createElement(StyledProfileCard, { px: 4, py: 2 }, /* @__PURE__ */ import_react57.default.createElement(import_joy3.Stack, { direction: "row", gap: 2 }, /* @__PURE__ */ import_react57.default.createElement(Typography, { level: nameLevel, fontWeight: "bold", textColor: "text.primary" }, children), chip && /* @__PURE__ */ import_react57.default.createElement(Chip, { size, color: "neutral", variant: "outlined" }, chip)), caption && /* @__PURE__ */ import_react57.default.createElement(Typography, { level: captionLevel, textColor: "text.tertiary" }, caption));
|
|
7842
7924
|
}
|
|
7843
7925
|
ProfileCard.displayName = "ProfileCard";
|
|
7844
7926
|
var StyledProfileMenuButton = (0, import_joy68.styled)(import_joy68.MenuButton, {
|
|
@@ -7850,16 +7932,16 @@ var StyledProfileMenuButton = (0, import_joy68.styled)(import_joy68.MenuButton,
|
|
|
7850
7932
|
}));
|
|
7851
7933
|
function ProfileMenuButton(props) {
|
|
7852
7934
|
const { size = "sm", src, alt, children, getInitial, ...innerProps } = props;
|
|
7853
|
-
return /* @__PURE__ */
|
|
7935
|
+
return /* @__PURE__ */ import_react57.default.createElement(
|
|
7854
7936
|
StyledProfileMenuButton,
|
|
7855
7937
|
{
|
|
7856
7938
|
variant: "plain",
|
|
7857
7939
|
color: "neutral",
|
|
7858
7940
|
size,
|
|
7859
|
-
endDecorator: /* @__PURE__ */
|
|
7941
|
+
endDecorator: /* @__PURE__ */ import_react57.default.createElement(import_ArrowDropDown.default, null),
|
|
7860
7942
|
...innerProps
|
|
7861
7943
|
},
|
|
7862
|
-
/* @__PURE__ */
|
|
7944
|
+
/* @__PURE__ */ import_react57.default.createElement(Avatar, { variant: "soft", color: "primary", size, src, alt, getInitial }, children)
|
|
7863
7945
|
);
|
|
7864
7946
|
}
|
|
7865
7947
|
ProfileMenuButton.displayName = "ProfileMenuButton";
|
|
@@ -7879,9 +7961,9 @@ function ProfileMenu(inProps) {
|
|
|
7879
7961
|
const [open, setOpen] = useControlledState(
|
|
7880
7962
|
_open,
|
|
7881
7963
|
defaultOpen ?? false,
|
|
7882
|
-
(0,
|
|
7964
|
+
(0, import_react57.useCallback)((value) => onOpenChange?.(value), [onOpenChange])
|
|
7883
7965
|
);
|
|
7884
|
-
return /* @__PURE__ */
|
|
7966
|
+
return /* @__PURE__ */ import_react57.default.createElement(import_base7.ClickAwayListener, { onClickAway: () => setOpen(false) }, /* @__PURE__ */ import_react57.default.createElement("div", null, /* @__PURE__ */ import_react57.default.createElement(import_joy68.Dropdown, { open }, /* @__PURE__ */ import_react57.default.createElement(
|
|
7885
7967
|
ProfileMenuButton,
|
|
7886
7968
|
{
|
|
7887
7969
|
size,
|
|
@@ -7891,7 +7973,7 @@ function ProfileMenu(inProps) {
|
|
|
7891
7973
|
getInitial
|
|
7892
7974
|
},
|
|
7893
7975
|
profile.name
|
|
7894
|
-
), /* @__PURE__ */
|
|
7976
|
+
), /* @__PURE__ */ import_react57.default.createElement(ProfileMenuRoot, { size, placement: "bottom-end", ...innerProps, onClose: () => setOpen(false) }, /* @__PURE__ */ import_react57.default.createElement(ProfileCard, { size, caption: profile.caption, chip: profile.chip }, profile.name), !!menuItems.length && /* @__PURE__ */ import_react57.default.createElement(import_joy68.ListDivider, null), menuItems.map(({ label, ...menuProps }) => /* @__PURE__ */ import_react57.default.createElement(
|
|
7895
7977
|
MenuItem,
|
|
7896
7978
|
{
|
|
7897
7979
|
key: label,
|
|
@@ -7907,7 +7989,7 @@ function ProfileMenu(inProps) {
|
|
|
7907
7989
|
ProfileMenu.displayName = "ProfileMenu";
|
|
7908
7990
|
|
|
7909
7991
|
// src/components/RadioTileGroup/RadioTileGroup.tsx
|
|
7910
|
-
var
|
|
7992
|
+
var import_react58 = __toESM(require("react"));
|
|
7911
7993
|
var import_joy69 = require("@mui/joy");
|
|
7912
7994
|
var RadioTileGroupRoot = (0, import_joy69.styled)(RadioGroup, {
|
|
7913
7995
|
name: "RadioTileGroup",
|
|
@@ -7995,7 +8077,7 @@ function RadioTileGroup(props) {
|
|
|
7995
8077
|
error,
|
|
7996
8078
|
required
|
|
7997
8079
|
} = props;
|
|
7998
|
-
const radioGroup = /* @__PURE__ */
|
|
8080
|
+
const radioGroup = /* @__PURE__ */ import_react58.default.createElement(
|
|
7999
8081
|
RadioTileGroupRoot,
|
|
8000
8082
|
{
|
|
8001
8083
|
overlay: true,
|
|
@@ -8006,7 +8088,7 @@ function RadioTileGroup(props) {
|
|
|
8006
8088
|
flex,
|
|
8007
8089
|
columns
|
|
8008
8090
|
},
|
|
8009
|
-
options.map((option) => /* @__PURE__ */
|
|
8091
|
+
options.map((option) => /* @__PURE__ */ import_react58.default.createElement(
|
|
8010
8092
|
RadioTileSheet,
|
|
8011
8093
|
{
|
|
8012
8094
|
key: option.value,
|
|
@@ -8016,7 +8098,7 @@ function RadioTileGroup(props) {
|
|
|
8016
8098
|
flex,
|
|
8017
8099
|
textAlign
|
|
8018
8100
|
},
|
|
8019
|
-
/* @__PURE__ */
|
|
8101
|
+
/* @__PURE__ */ import_react58.default.createElement(
|
|
8020
8102
|
Radio,
|
|
8021
8103
|
{
|
|
8022
8104
|
id: `${option.value}`,
|
|
@@ -8045,7 +8127,7 @@ function RadioTileGroup(props) {
|
|
|
8045
8127
|
}
|
|
8046
8128
|
}
|
|
8047
8129
|
),
|
|
8048
|
-
option.startDecorator && /* @__PURE__ */
|
|
8130
|
+
option.startDecorator && /* @__PURE__ */ import_react58.default.createElement(
|
|
8049
8131
|
Box_default,
|
|
8050
8132
|
{
|
|
8051
8133
|
sx: {
|
|
@@ -8066,15 +8148,15 @@ function RadioTileGroup(props) {
|
|
|
8066
8148
|
)
|
|
8067
8149
|
))
|
|
8068
8150
|
);
|
|
8069
|
-
return /* @__PURE__ */
|
|
8151
|
+
return /* @__PURE__ */ import_react58.default.createElement(FormControl_default, { required, disabled: allDisabled, error, size, sx, className }, label && /* @__PURE__ */ import_react58.default.createElement(FormLabel_default, null, label), radioGroup, helperText && /* @__PURE__ */ import_react58.default.createElement(FormHelperText_default, null, helperText));
|
|
8070
8152
|
}
|
|
8071
8153
|
RadioTileGroup.displayName = "RadioTileGroup";
|
|
8072
8154
|
|
|
8073
8155
|
// src/components/RadioList/RadioList.tsx
|
|
8074
|
-
var
|
|
8156
|
+
var import_react59 = __toESM(require("react"));
|
|
8075
8157
|
function RadioList(props) {
|
|
8076
8158
|
const { items, ...innerProps } = props;
|
|
8077
|
-
return /* @__PURE__ */
|
|
8159
|
+
return /* @__PURE__ */ import_react59.default.createElement(RadioGroup, { ...innerProps }, items.map((item) => /* @__PURE__ */ import_react59.default.createElement(Radio, { key: `${item.value}`, value: item.value, label: item.label })));
|
|
8078
8160
|
}
|
|
8079
8161
|
RadioList.displayName = "RadioList";
|
|
8080
8162
|
|
|
@@ -8165,7 +8247,7 @@ var SearchBar = React56.forwardRef(function SearchBar2(inProps, ref) {
|
|
|
8165
8247
|
SearchBar.displayName = "SearchBar";
|
|
8166
8248
|
|
|
8167
8249
|
// src/components/Stepper/Stepper.tsx
|
|
8168
|
-
var
|
|
8250
|
+
var import_react60 = __toESM(require("react"));
|
|
8169
8251
|
var import_joy70 = require("@mui/joy");
|
|
8170
8252
|
var import_Check = __toESM(require("@mui/icons-material/Check"));
|
|
8171
8253
|
var import_framer_motion27 = require("framer-motion");
|
|
@@ -8194,7 +8276,7 @@ function Stepper(props) {
|
|
|
8194
8276
|
stepOrientation = "horizontal"
|
|
8195
8277
|
} = props;
|
|
8196
8278
|
const effectiveStepOrientation = orientation === "vertical" ? "horizontal" : stepOrientation;
|
|
8197
|
-
return /* @__PURE__ */
|
|
8279
|
+
return /* @__PURE__ */ import_react60.default.createElement(
|
|
8198
8280
|
MotionStepper,
|
|
8199
8281
|
{
|
|
8200
8282
|
orientation,
|
|
@@ -8233,23 +8315,23 @@ function Stepper(props) {
|
|
|
8233
8315
|
const completed = activeStep > i + 1;
|
|
8234
8316
|
const disabled = activeStep < i + 1;
|
|
8235
8317
|
const hasContent = step.label || step.extraContent;
|
|
8236
|
-
return /* @__PURE__ */
|
|
8318
|
+
return /* @__PURE__ */ import_react60.default.createElement(
|
|
8237
8319
|
Step,
|
|
8238
8320
|
{
|
|
8239
8321
|
key: `step-${i}`,
|
|
8240
|
-
indicator: /* @__PURE__ */
|
|
8322
|
+
indicator: /* @__PURE__ */ import_react60.default.createElement(StepIndicator, { variant: disabled ? "outlined" : "solid", color: disabled ? "neutral" : "primary" }, completed ? /* @__PURE__ */ import_react60.default.createElement(import_Check.default, null) : step.indicatorContent),
|
|
8241
8323
|
active,
|
|
8242
8324
|
completed,
|
|
8243
8325
|
disabled,
|
|
8244
8326
|
orientation: effectiveStepOrientation
|
|
8245
8327
|
},
|
|
8246
|
-
hasContent && /* @__PURE__ */
|
|
8328
|
+
hasContent && /* @__PURE__ */ import_react60.default.createElement(
|
|
8247
8329
|
Stack_default,
|
|
8248
8330
|
{
|
|
8249
8331
|
sx: orientation === "horizontal" && effectiveStepOrientation === "vertical" ? { alignItems: "center" } : {}
|
|
8250
8332
|
},
|
|
8251
|
-
step.label && /* @__PURE__ */
|
|
8252
|
-
step.extraContent && /* @__PURE__ */
|
|
8333
|
+
step.label && /* @__PURE__ */ import_react60.default.createElement(Typography_default, { level: "title-sm" }, step.label),
|
|
8334
|
+
step.extraContent && /* @__PURE__ */ import_react60.default.createElement(Typography_default, { level: "body-xs" }, step.extraContent)
|
|
8253
8335
|
)
|
|
8254
8336
|
);
|
|
8255
8337
|
})
|
|
@@ -8258,7 +8340,7 @@ function Stepper(props) {
|
|
|
8258
8340
|
Stepper.displayName = "Stepper";
|
|
8259
8341
|
|
|
8260
8342
|
// src/components/Switch/Switch.tsx
|
|
8261
|
-
var
|
|
8343
|
+
var import_react61 = __toESM(require("react"));
|
|
8262
8344
|
var import_joy71 = require("@mui/joy");
|
|
8263
8345
|
var import_framer_motion28 = require("framer-motion");
|
|
8264
8346
|
var MotionSwitch = (0, import_framer_motion28.motion)(import_joy71.Switch);
|
|
@@ -8280,14 +8362,14 @@ var StyledThumb = (0, import_joy71.styled)(import_framer_motion28.motion.div)({
|
|
|
8280
8362
|
right: "var(--Switch-thumbOffset)"
|
|
8281
8363
|
}
|
|
8282
8364
|
});
|
|
8283
|
-
var Thumb = (props) => /* @__PURE__ */
|
|
8365
|
+
var Thumb = (props) => /* @__PURE__ */ import_react61.default.createElement(StyledThumb, { ...props, layout: true, transition: spring });
|
|
8284
8366
|
var spring = {
|
|
8285
8367
|
type: "spring",
|
|
8286
8368
|
stiffness: 700,
|
|
8287
8369
|
damping: 30
|
|
8288
8370
|
};
|
|
8289
8371
|
var Switch = (props) => {
|
|
8290
|
-
return /* @__PURE__ */
|
|
8372
|
+
return /* @__PURE__ */ import_react61.default.createElement(
|
|
8291
8373
|
MotionSwitch,
|
|
8292
8374
|
{
|
|
8293
8375
|
...props,
|
|
@@ -8301,7 +8383,7 @@ var Switch = (props) => {
|
|
|
8301
8383
|
Switch.displayName = "Switch";
|
|
8302
8384
|
|
|
8303
8385
|
// src/components/Tabs/Tabs.tsx
|
|
8304
|
-
var
|
|
8386
|
+
var import_react62 = __toESM(require("react"));
|
|
8305
8387
|
var import_joy72 = require("@mui/joy");
|
|
8306
8388
|
var StyledTabs = (0, import_joy72.styled)(import_joy72.Tabs)(({ theme }) => ({
|
|
8307
8389
|
backgroundColor: theme.palette.background.body
|
|
@@ -8317,15 +8399,15 @@ var StyledTab = (0, import_joy72.styled)(import_joy72.Tab)(({ theme }) => ({
|
|
|
8317
8399
|
backgroundColor: theme.palette.background.body
|
|
8318
8400
|
}
|
|
8319
8401
|
}));
|
|
8320
|
-
var Tab = (0,
|
|
8321
|
-
return /* @__PURE__ */
|
|
8402
|
+
var Tab = (0, import_react62.forwardRef)(function Tab2({ startDecorator, endDecorator, children, ...props }, ref) {
|
|
8403
|
+
return /* @__PURE__ */ import_react62.default.createElement(StyledTab, { ...props, ref }, startDecorator, children, endDecorator);
|
|
8322
8404
|
});
|
|
8323
8405
|
Tab.displayName = "Tab";
|
|
8324
8406
|
var TabList = import_joy72.TabList;
|
|
8325
8407
|
var TabPanel = import_joy72.TabPanel;
|
|
8326
8408
|
|
|
8327
8409
|
// src/components/ThemeProvider/ThemeProvider.tsx
|
|
8328
|
-
var
|
|
8410
|
+
var import_react63 = __toESM(require("react"));
|
|
8329
8411
|
var import_joy73 = require("@mui/joy");
|
|
8330
8412
|
var colorScheme = {
|
|
8331
8413
|
palette: {
|
|
@@ -8722,6 +8804,6 @@ var defaultTheme = (0, import_joy73.extendTheme)({
|
|
|
8722
8804
|
});
|
|
8723
8805
|
function ThemeProvider(props) {
|
|
8724
8806
|
const theme = props.theme || defaultTheme;
|
|
8725
|
-
return /* @__PURE__ */
|
|
8807
|
+
return /* @__PURE__ */ import_react63.default.createElement(import_react63.default.Fragment, null, /* @__PURE__ */ import_react63.default.createElement(import_joy73.CssVarsProvider, { theme }, /* @__PURE__ */ import_react63.default.createElement(import_joy73.CssBaseline, null), props.children));
|
|
8726
8808
|
}
|
|
8727
8809
|
ThemeProvider.displayName = "ThemeProvider";
|