@x-plat/design-system 0.5.63 → 0.5.65
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/AutoResizeTextArea/index.cjs +118 -0
- package/dist/components/AutoResizeTextArea/index.css +46 -0
- package/dist/components/AutoResizeTextArea/index.d.cts +10 -0
- package/dist/components/AutoResizeTextArea/index.d.ts +10 -0
- package/dist/components/AutoResizeTextArea/index.js +81 -0
- package/dist/components/ChatInput/index.cjs +72 -30
- package/dist/components/ChatInput/index.css +47 -0
- package/dist/components/ChatInput/index.js +71 -29
- package/dist/components/CheckBox/index.css +1 -0
- package/dist/components/Radio/index.css +1 -0
- package/dist/components/TextArea/index.cjs +16 -44
- package/dist/components/TextArea/index.css +26 -28
- package/dist/components/TextArea/index.d.cts +8 -1
- package/dist/components/TextArea/index.d.ts +8 -1
- package/dist/components/TextArea/index.js +16 -44
- package/dist/components/index.cjs +561 -545
- package/dist/components/index.css +75 -28
- package/dist/components/index.d.cts +1 -0
- package/dist/components/index.d.ts +1 -0
- package/dist/components/index.js +508 -493
- package/dist/index.cjs +585 -569
- package/dist/index.css +75 -28
- package/dist/index.d.cts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +530 -515
- package/package.json +1 -1
|
@@ -32,6 +32,7 @@ var components_exports = {};
|
|
|
32
32
|
__export(components_exports, {
|
|
33
33
|
Accordion: () => Accordion_default,
|
|
34
34
|
Alert: () => Alert_default,
|
|
35
|
+
AutoResizeTextArea: () => AutoResizeTextArea_default,
|
|
35
36
|
Avatar: () => Avatar_default,
|
|
36
37
|
Badge: () => Badge_default,
|
|
37
38
|
Box: () => Box_default,
|
|
@@ -2783,11 +2784,72 @@ var Chart = import_react5.default.memo((props) => {
|
|
|
2783
2784
|
Chart.displayName = "Chart";
|
|
2784
2785
|
var Chart_default = Chart;
|
|
2785
2786
|
|
|
2786
|
-
// src/components/
|
|
2787
|
+
// src/components/AutoResizeTextArea/AutoResizeTextArea.tsx
|
|
2787
2788
|
var import_react6 = __toESM(require("react"), 1);
|
|
2789
|
+
var import_jsx_runtime306 = require("react/jsx-runtime");
|
|
2790
|
+
var MAX_HEIGHT = 400;
|
|
2791
|
+
var AutoResizeTextArea = import_react6.default.forwardRef(
|
|
2792
|
+
(props, ref) => {
|
|
2793
|
+
const { value, className, onChange, disabled, bare = false, ...textareaProps } = props;
|
|
2794
|
+
const localRef = import_react6.default.useRef(null);
|
|
2795
|
+
const setRefs = (el) => {
|
|
2796
|
+
localRef.current = el;
|
|
2797
|
+
if (!ref) return;
|
|
2798
|
+
if (typeof ref === "function") ref(el);
|
|
2799
|
+
else if (ref && "current" in ref)
|
|
2800
|
+
ref.current = el;
|
|
2801
|
+
};
|
|
2802
|
+
const updateHeight = () => {
|
|
2803
|
+
const el = localRef.current;
|
|
2804
|
+
if (!el) return;
|
|
2805
|
+
el.style.height = "0px";
|
|
2806
|
+
el.style.height = `${Math.min(el.scrollHeight, MAX_HEIGHT)}px`;
|
|
2807
|
+
};
|
|
2808
|
+
const handleChange = (e) => {
|
|
2809
|
+
if (onChange) {
|
|
2810
|
+
const event = {
|
|
2811
|
+
...e,
|
|
2812
|
+
target: { value: e.target.value }
|
|
2813
|
+
};
|
|
2814
|
+
onChange(event);
|
|
2815
|
+
}
|
|
2816
|
+
};
|
|
2817
|
+
import_react6.default.useEffect(() => {
|
|
2818
|
+
updateHeight();
|
|
2819
|
+
}, [value]);
|
|
2820
|
+
if (bare) {
|
|
2821
|
+
return /* @__PURE__ */ (0, import_jsx_runtime306.jsx)(
|
|
2822
|
+
"textarea",
|
|
2823
|
+
{
|
|
2824
|
+
...textareaProps,
|
|
2825
|
+
ref: setRefs,
|
|
2826
|
+
className,
|
|
2827
|
+
disabled,
|
|
2828
|
+
value,
|
|
2829
|
+
onChange: handleChange
|
|
2830
|
+
}
|
|
2831
|
+
);
|
|
2832
|
+
}
|
|
2833
|
+
return /* @__PURE__ */ (0, import_jsx_runtime306.jsx)("div", { className: clsx_default("lib-xplat-auto-resize-textarea-wrapper", className), children: /* @__PURE__ */ (0, import_jsx_runtime306.jsx)("div", { className: clsx_default("lib-xplat-auto-resize-textarea", disabled && "disabled"), children: /* @__PURE__ */ (0, import_jsx_runtime306.jsx)(
|
|
2834
|
+
"textarea",
|
|
2835
|
+
{
|
|
2836
|
+
...textareaProps,
|
|
2837
|
+
ref: setRefs,
|
|
2838
|
+
disabled,
|
|
2839
|
+
value,
|
|
2840
|
+
onChange: handleChange
|
|
2841
|
+
}
|
|
2842
|
+
) }) });
|
|
2843
|
+
}
|
|
2844
|
+
);
|
|
2845
|
+
AutoResizeTextArea.displayName = "AutoResizeTextArea";
|
|
2846
|
+
var AutoResizeTextArea_default = AutoResizeTextArea;
|
|
2847
|
+
|
|
2848
|
+
// src/components/ChatInput/ChatInput.tsx
|
|
2849
|
+
var import_react7 = __toESM(require("react"), 1);
|
|
2788
2850
|
|
|
2789
2851
|
// src/components/IconButton/IconButton.tsx
|
|
2790
|
-
var
|
|
2852
|
+
var import_jsx_runtime307 = require("react/jsx-runtime");
|
|
2791
2853
|
var IconButton = (props) => {
|
|
2792
2854
|
const {
|
|
2793
2855
|
icon,
|
|
@@ -2797,7 +2859,7 @@ var IconButton = (props) => {
|
|
|
2797
2859
|
disabled,
|
|
2798
2860
|
...rest
|
|
2799
2861
|
} = props;
|
|
2800
|
-
return /* @__PURE__ */ (0,
|
|
2862
|
+
return /* @__PURE__ */ (0, import_jsx_runtime307.jsx)(
|
|
2801
2863
|
"button",
|
|
2802
2864
|
{
|
|
2803
2865
|
className: clsx_default("lib-xplat-icon-button", type, size, className),
|
|
@@ -2811,9 +2873,8 @@ IconButton.displayName = "IconButton";
|
|
|
2811
2873
|
var IconButton_default = IconButton;
|
|
2812
2874
|
|
|
2813
2875
|
// src/components/ChatInput/ChatInput.tsx
|
|
2814
|
-
var
|
|
2815
|
-
var
|
|
2816
|
-
var ChatInput = import_react6.default.forwardRef(
|
|
2876
|
+
var import_jsx_runtime308 = require("react/jsx-runtime");
|
|
2877
|
+
var ChatInput = import_react7.default.forwardRef(
|
|
2817
2878
|
(props, ref) => {
|
|
2818
2879
|
const {
|
|
2819
2880
|
placeholder,
|
|
@@ -2824,24 +2885,9 @@ var ChatInput = import_react6.default.forwardRef(
|
|
|
2824
2885
|
onChange
|
|
2825
2886
|
} = props;
|
|
2826
2887
|
const isControlled = valueProp !== void 0;
|
|
2827
|
-
const [internalValue, setInternalValue] =
|
|
2888
|
+
const [internalValue, setInternalValue] = import_react7.default.useState("");
|
|
2828
2889
|
const value = isControlled ? valueProp : internalValue;
|
|
2829
2890
|
const hasText = value.trim().length > 0;
|
|
2830
|
-
const textareaRef = import_react6.default.useRef(null);
|
|
2831
|
-
const setRefs = import_react6.default.useCallback(
|
|
2832
|
-
(el) => {
|
|
2833
|
-
textareaRef.current = el;
|
|
2834
|
-
if (typeof ref === "function") ref(el);
|
|
2835
|
-
else if (ref) ref.current = el;
|
|
2836
|
-
},
|
|
2837
|
-
[ref]
|
|
2838
|
-
);
|
|
2839
|
-
const updateHeight = import_react6.default.useCallback(() => {
|
|
2840
|
-
const el = textareaRef.current;
|
|
2841
|
-
if (!el) return;
|
|
2842
|
-
el.style.height = "0px";
|
|
2843
|
-
el.style.height = `${Math.min(el.scrollHeight, MAX_HEIGHT)}px`;
|
|
2844
|
-
}, []);
|
|
2845
2891
|
const handleChange = (e) => {
|
|
2846
2892
|
const val = e.target.value;
|
|
2847
2893
|
if (!isControlled) setInternalValue(val);
|
|
@@ -2851,7 +2897,6 @@ var ChatInput = import_react6.default.forwardRef(
|
|
|
2851
2897
|
if (!hasText || disabled) return;
|
|
2852
2898
|
onSubmit?.(value);
|
|
2853
2899
|
if (!isControlled) setInternalValue("");
|
|
2854
|
-
requestAnimationFrame(updateHeight);
|
|
2855
2900
|
};
|
|
2856
2901
|
const handleKeyDown = (e) => {
|
|
2857
2902
|
if (e.key === "Enter" && !e.shiftKey) {
|
|
@@ -2859,14 +2904,12 @@ var ChatInput = import_react6.default.forwardRef(
|
|
|
2859
2904
|
handleSubmit();
|
|
2860
2905
|
}
|
|
2861
2906
|
};
|
|
2862
|
-
|
|
2863
|
-
|
|
2864
|
-
|
|
2865
|
-
return /* @__PURE__ */ (0, import_jsx_runtime307.jsxs)("div", { className: clsx_default("lib-xplat-chat-input", disabled && "disabled"), children: [
|
|
2866
|
-
/* @__PURE__ */ (0, import_jsx_runtime307.jsx)(
|
|
2867
|
-
"textarea",
|
|
2907
|
+
return /* @__PURE__ */ (0, import_jsx_runtime308.jsxs)("div", { className: clsx_default("lib-xplat-chat-input", disabled && "disabled"), children: [
|
|
2908
|
+
/* @__PURE__ */ (0, import_jsx_runtime308.jsx)(
|
|
2909
|
+
AutoResizeTextArea_default,
|
|
2868
2910
|
{
|
|
2869
|
-
ref
|
|
2911
|
+
ref,
|
|
2912
|
+
bare: true,
|
|
2870
2913
|
className: "chat-input-textarea",
|
|
2871
2914
|
placeholder,
|
|
2872
2915
|
value,
|
|
@@ -2876,10 +2919,10 @@ var ChatInput = import_react6.default.forwardRef(
|
|
|
2876
2919
|
onKeyDown: handleKeyDown
|
|
2877
2920
|
}
|
|
2878
2921
|
),
|
|
2879
|
-
/* @__PURE__ */ (0,
|
|
2922
|
+
/* @__PURE__ */ (0, import_jsx_runtime308.jsx)(
|
|
2880
2923
|
IconButton_default,
|
|
2881
2924
|
{
|
|
2882
|
-
icon: /* @__PURE__ */ (0,
|
|
2925
|
+
icon: /* @__PURE__ */ (0, import_jsx_runtime308.jsx)(MessageSquareIcon_default, {}),
|
|
2883
2926
|
type: buttonType,
|
|
2884
2927
|
size: "sm",
|
|
2885
2928
|
disabled: !hasText || disabled,
|
|
@@ -2900,7 +2943,7 @@ var import_tokens_core = require("@x-plat/tokens-core");
|
|
|
2900
2943
|
var import_tokens_core2 = require("@x-plat/tokens-core");
|
|
2901
2944
|
|
|
2902
2945
|
// src/components/CheckBox/CheckBox.tsx
|
|
2903
|
-
var
|
|
2946
|
+
var import_jsx_runtime309 = require("react/jsx-runtime");
|
|
2904
2947
|
var CheckBox = (props) => {
|
|
2905
2948
|
const {
|
|
2906
2949
|
checked,
|
|
@@ -2919,8 +2962,8 @@ var CheckBox = (props) => {
|
|
|
2919
2962
|
const checkedClasses = `checked`;
|
|
2920
2963
|
const disabledClasses = "disabled";
|
|
2921
2964
|
const boxClasses = disabled ? disabledClasses : checked ? checkedClasses : uncheckedClasses;
|
|
2922
|
-
return /* @__PURE__ */ (0,
|
|
2923
|
-
/* @__PURE__ */ (0,
|
|
2965
|
+
return /* @__PURE__ */ (0, import_jsx_runtime309.jsxs)("label", { className: clsx_default("lib-xplat-checkbox", size, type, className), children: [
|
|
2966
|
+
/* @__PURE__ */ (0, import_jsx_runtime309.jsx)(
|
|
2924
2967
|
"input",
|
|
2925
2968
|
{
|
|
2926
2969
|
type: "checkbox",
|
|
@@ -2930,44 +2973,44 @@ var CheckBox = (props) => {
|
|
|
2930
2973
|
...rest
|
|
2931
2974
|
}
|
|
2932
2975
|
),
|
|
2933
|
-
/* @__PURE__ */ (0,
|
|
2934
|
-
label && /* @__PURE__ */ (0,
|
|
2976
|
+
/* @__PURE__ */ (0, import_jsx_runtime309.jsx)("span", { className: clsx_default("checkbox", boxClasses), children: /* @__PURE__ */ (0, import_jsx_runtime309.jsx)("span", { className: clsx_default("check-icon", { visible: checked }), children: /* @__PURE__ */ (0, import_jsx_runtime309.jsx)(CheckIcon_default, {}) }) }),
|
|
2977
|
+
label && /* @__PURE__ */ (0, import_jsx_runtime309.jsx)("span", { className: "label", children: label })
|
|
2935
2978
|
] });
|
|
2936
2979
|
};
|
|
2937
2980
|
CheckBox.displayName = "CheckBox";
|
|
2938
2981
|
var CheckBox_default = CheckBox;
|
|
2939
2982
|
|
|
2940
2983
|
// src/components/Chip/Chip.tsx
|
|
2941
|
-
var
|
|
2984
|
+
var import_jsx_runtime310 = require("react/jsx-runtime");
|
|
2942
2985
|
var Chip = (props) => {
|
|
2943
2986
|
const {
|
|
2944
2987
|
children,
|
|
2945
2988
|
type = "primary",
|
|
2946
2989
|
size = "md"
|
|
2947
2990
|
} = props;
|
|
2948
|
-
return /* @__PURE__ */ (0,
|
|
2991
|
+
return /* @__PURE__ */ (0, import_jsx_runtime310.jsx)("div", { className: clsx_default("lib-xplat-chip", type, size), children });
|
|
2949
2992
|
};
|
|
2950
2993
|
Chip.displayName = "Chip";
|
|
2951
2994
|
var Chip_default = Chip;
|
|
2952
2995
|
|
|
2953
2996
|
// src/components/DatePicker/InputDatePicker/index.tsx
|
|
2954
|
-
var
|
|
2997
|
+
var import_react14 = __toESM(require("react"), 1);
|
|
2955
2998
|
|
|
2956
2999
|
// src/components/Input/Input.tsx
|
|
2957
|
-
var
|
|
3000
|
+
var import_react8 = __toESM(require("react"), 1);
|
|
2958
3001
|
|
|
2959
3002
|
// src/components/Input/InputValidations.tsx
|
|
2960
|
-
var
|
|
3003
|
+
var import_jsx_runtime311 = require("react/jsx-runtime");
|
|
2961
3004
|
var InputValidations = (props) => {
|
|
2962
3005
|
const { message, status = "default" } = props;
|
|
2963
|
-
return /* @__PURE__ */ (0,
|
|
2964
|
-
/* @__PURE__ */ (0,
|
|
2965
|
-
status === "default" && /* @__PURE__ */ (0,
|
|
2966
|
-
status === "success" && /* @__PURE__ */ (0,
|
|
2967
|
-
status === "warning" && /* @__PURE__ */ (0,
|
|
2968
|
-
status === "error" && /* @__PURE__ */ (0,
|
|
3006
|
+
return /* @__PURE__ */ (0, import_jsx_runtime311.jsxs)("div", { className: clsx_default("lib-xplat-input-validation", status), children: [
|
|
3007
|
+
/* @__PURE__ */ (0, import_jsx_runtime311.jsxs)("div", { className: "icon", children: [
|
|
3008
|
+
status === "default" && /* @__PURE__ */ (0, import_jsx_runtime311.jsx)(InfoIcon_default, {}),
|
|
3009
|
+
status === "success" && /* @__PURE__ */ (0, import_jsx_runtime311.jsx)(SuccessIcon_default, {}),
|
|
3010
|
+
status === "warning" && /* @__PURE__ */ (0, import_jsx_runtime311.jsx)(InfoIcon_default, {}),
|
|
3011
|
+
status === "error" && /* @__PURE__ */ (0, import_jsx_runtime311.jsx)(ErrorIcon_default, {})
|
|
2969
3012
|
] }),
|
|
2970
|
-
/* @__PURE__ */ (0,
|
|
3013
|
+
/* @__PURE__ */ (0, import_jsx_runtime311.jsx)("div", { className: "message", children: message })
|
|
2971
3014
|
] });
|
|
2972
3015
|
};
|
|
2973
3016
|
InputValidations.displayName = "InputValidations";
|
|
@@ -3008,8 +3051,8 @@ var handleTelBackspace = (prevValue, currValue) => {
|
|
|
3008
3051
|
};
|
|
3009
3052
|
|
|
3010
3053
|
// src/components/Input/Input.tsx
|
|
3011
|
-
var
|
|
3012
|
-
var
|
|
3054
|
+
var import_jsx_runtime312 = require("react/jsx-runtime");
|
|
3055
|
+
var import_react9 = require("react");
|
|
3013
3056
|
var formatValue = (type, value) => {
|
|
3014
3057
|
if (value === null || value === void 0) return "";
|
|
3015
3058
|
const strValue = Array.isArray(value) ? String(value[0] ?? "") : String(value);
|
|
@@ -3057,7 +3100,7 @@ var parseValue = (type, value) => {
|
|
|
3057
3100
|
return value;
|
|
3058
3101
|
}
|
|
3059
3102
|
};
|
|
3060
|
-
var Input =
|
|
3103
|
+
var Input = import_react8.default.forwardRef((props, ref) => {
|
|
3061
3104
|
const {
|
|
3062
3105
|
value,
|
|
3063
3106
|
className,
|
|
@@ -3084,13 +3127,13 @@ var Input = import_react7.default.forwardRef((props, ref) => {
|
|
|
3084
3127
|
onChange(event);
|
|
3085
3128
|
}
|
|
3086
3129
|
};
|
|
3087
|
-
return /* @__PURE__ */ (0,
|
|
3088
|
-
/* @__PURE__ */ (0,
|
|
3130
|
+
return /* @__PURE__ */ (0, import_jsx_runtime312.jsxs)("div", { className: clsx_default("lib-xplat-input-wrap", className), children: [
|
|
3131
|
+
/* @__PURE__ */ (0, import_jsx_runtime312.jsxs)(
|
|
3089
3132
|
"div",
|
|
3090
3133
|
{
|
|
3091
3134
|
className: clsx_default("lib-xplat-input", size, disabled ? "disabled" : void 0),
|
|
3092
3135
|
children: [
|
|
3093
|
-
/* @__PURE__ */ (0,
|
|
3136
|
+
/* @__PURE__ */ (0, import_jsx_runtime312.jsx)(
|
|
3094
3137
|
"input",
|
|
3095
3138
|
{
|
|
3096
3139
|
...inputProps,
|
|
@@ -3101,11 +3144,11 @@ var Input = import_react7.default.forwardRef((props, ref) => {
|
|
|
3101
3144
|
onChange: handleChange
|
|
3102
3145
|
}
|
|
3103
3146
|
),
|
|
3104
|
-
suffix && /* @__PURE__ */ (0,
|
|
3147
|
+
suffix && /* @__PURE__ */ (0, import_jsx_runtime312.jsx)("div", { className: "suffix", children: suffix })
|
|
3105
3148
|
]
|
|
3106
3149
|
}
|
|
3107
3150
|
),
|
|
3108
|
-
validations && /* @__PURE__ */ (0,
|
|
3151
|
+
validations && /* @__PURE__ */ (0, import_jsx_runtime312.jsx)("div", { className: "lib-xplat-input-validation-wrap", children: validations?.map((validation, idx) => /* @__PURE__ */ (0, import_react9.createElement)(
|
|
3109
3152
|
InputValidations_default,
|
|
3110
3153
|
{
|
|
3111
3154
|
...validation,
|
|
@@ -3118,20 +3161,20 @@ Input.displayName = "Input";
|
|
|
3118
3161
|
var Input_default = Input;
|
|
3119
3162
|
|
|
3120
3163
|
// src/components/Input/PasswordInput/PasswordInput.tsx
|
|
3121
|
-
var
|
|
3122
|
-
var
|
|
3123
|
-
var PasswordInput =
|
|
3164
|
+
var import_react10 = __toESM(require("react"), 1);
|
|
3165
|
+
var import_jsx_runtime313 = require("react/jsx-runtime");
|
|
3166
|
+
var PasswordInput = import_react10.default.forwardRef(
|
|
3124
3167
|
(props, ref) => {
|
|
3125
3168
|
const { reg: _reg, ...inputProps } = props;
|
|
3126
|
-
const [isView, setIsView] =
|
|
3169
|
+
const [isView, setIsView] = import_react10.default.useState(false);
|
|
3127
3170
|
const handleChangeView = () => {
|
|
3128
3171
|
setIsView((prev) => !prev);
|
|
3129
3172
|
};
|
|
3130
|
-
return /* @__PURE__ */ (0,
|
|
3173
|
+
return /* @__PURE__ */ (0, import_jsx_runtime313.jsx)(
|
|
3131
3174
|
Input_default,
|
|
3132
3175
|
{
|
|
3133
3176
|
...inputProps,
|
|
3134
|
-
suffix: /* @__PURE__ */ (0,
|
|
3177
|
+
suffix: /* @__PURE__ */ (0, import_jsx_runtime313.jsx)("div", { className: "wrapper pointer", onClick: handleChangeView, children: isView ? /* @__PURE__ */ (0, import_jsx_runtime313.jsx)(OpenEyeIcon_default, {}) : /* @__PURE__ */ (0, import_jsx_runtime313.jsx)(CloseEyeIcon_default, {}) }),
|
|
3135
3178
|
type: isView ? "text" : "password",
|
|
3136
3179
|
ref
|
|
3137
3180
|
}
|
|
@@ -3142,17 +3185,17 @@ PasswordInput.displayName = "PasswordInput";
|
|
|
3142
3185
|
var PasswordInput_default = PasswordInput;
|
|
3143
3186
|
|
|
3144
3187
|
// src/components/Modal/Modal.tsx
|
|
3145
|
-
var
|
|
3188
|
+
var import_react12 = __toESM(require("react"), 1);
|
|
3146
3189
|
var import_react_dom2 = require("react-dom");
|
|
3147
3190
|
|
|
3148
3191
|
// src/tokens/hooks/Portal.tsx
|
|
3149
|
-
var
|
|
3192
|
+
var import_react11 = __toESM(require("react"), 1);
|
|
3150
3193
|
var import_react_dom = __toESM(require("react-dom"), 1);
|
|
3151
|
-
var
|
|
3152
|
-
var PortalContainerContext =
|
|
3153
|
-
var PortalProvider = ({ container, children }) => /* @__PURE__ */ (0,
|
|
3194
|
+
var import_jsx_runtime314 = require("react/jsx-runtime");
|
|
3195
|
+
var PortalContainerContext = import_react11.default.createContext(null);
|
|
3196
|
+
var PortalProvider = ({ container, children }) => /* @__PURE__ */ (0, import_jsx_runtime314.jsx)(PortalContainerContext.Provider, { value: container, children });
|
|
3154
3197
|
var Portal = ({ children }) => {
|
|
3155
|
-
const contextContainer =
|
|
3198
|
+
const contextContainer = import_react11.default.useContext(PortalContainerContext);
|
|
3156
3199
|
if (typeof document === "undefined") return null;
|
|
3157
3200
|
const container = contextContainer ?? document.body;
|
|
3158
3201
|
return import_react_dom.default.createPortal(children, container);
|
|
@@ -3161,14 +3204,14 @@ Portal.displayName = "Portal";
|
|
|
3161
3204
|
var Portal_default = Portal;
|
|
3162
3205
|
|
|
3163
3206
|
// src/components/Modal/Modal.tsx
|
|
3164
|
-
var
|
|
3207
|
+
var import_jsx_runtime315 = require("react/jsx-runtime");
|
|
3165
3208
|
var ANIMATION_DURATION_MS = 200;
|
|
3166
3209
|
var Modal = (props) => {
|
|
3167
3210
|
const { isOpen, onClose, children } = props;
|
|
3168
|
-
const [mounted, setMounted] =
|
|
3169
|
-
const [visible, setVisible] =
|
|
3170
|
-
const boxRef =
|
|
3171
|
-
|
|
3211
|
+
const [mounted, setMounted] = import_react12.default.useState(false);
|
|
3212
|
+
const [visible, setVisible] = import_react12.default.useState(false);
|
|
3213
|
+
const boxRef = import_react12.default.useRef(null);
|
|
3214
|
+
import_react12.default.useEffect(() => {
|
|
3172
3215
|
if (isOpen) {
|
|
3173
3216
|
setMounted(true);
|
|
3174
3217
|
const t2 = setTimeout(() => setVisible(true), 1);
|
|
@@ -3182,12 +3225,12 @@ var Modal = (props) => {
|
|
|
3182
3225
|
if (!mounted) return null;
|
|
3183
3226
|
const stateClass = visible ? "enter" : "exit";
|
|
3184
3227
|
return (0, import_react_dom2.createPortal)(
|
|
3185
|
-
/* @__PURE__ */ (0,
|
|
3228
|
+
/* @__PURE__ */ (0, import_jsx_runtime315.jsx)(
|
|
3186
3229
|
"div",
|
|
3187
3230
|
{
|
|
3188
3231
|
className: clsx_default("lib-xplat-modal", "dim", stateClass),
|
|
3189
3232
|
onClick: onClose,
|
|
3190
|
-
children: /* @__PURE__ */ (0,
|
|
3233
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime315.jsx)(
|
|
3191
3234
|
"div",
|
|
3192
3235
|
{
|
|
3193
3236
|
ref: boxRef,
|
|
@@ -3195,7 +3238,7 @@ var Modal = (props) => {
|
|
|
3195
3238
|
role: "dialog",
|
|
3196
3239
|
"aria-modal": "true",
|
|
3197
3240
|
onClick: (e) => e.stopPropagation(),
|
|
3198
|
-
children: /* @__PURE__ */ (0,
|
|
3241
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime315.jsx)(PortalProvider, { container: boxRef.current, children })
|
|
3199
3242
|
}
|
|
3200
3243
|
)
|
|
3201
3244
|
}
|
|
@@ -3207,9 +3250,9 @@ Modal.displayName = "Modal";
|
|
|
3207
3250
|
var Modal_default = Modal;
|
|
3208
3251
|
|
|
3209
3252
|
// src/components/DatePicker/SingleDatePicker/index.tsx
|
|
3210
|
-
var
|
|
3211
|
-
var
|
|
3212
|
-
var DayCell2 =
|
|
3253
|
+
var import_react13 = __toESM(require("react"), 1);
|
|
3254
|
+
var import_jsx_runtime316 = require("react/jsx-runtime");
|
|
3255
|
+
var DayCell2 = import_react13.default.memo(
|
|
3213
3256
|
({
|
|
3214
3257
|
day,
|
|
3215
3258
|
disabled,
|
|
@@ -3219,7 +3262,7 @@ var DayCell2 = import_react12.default.memo(
|
|
|
3219
3262
|
isEnd,
|
|
3220
3263
|
inRange,
|
|
3221
3264
|
onSelect
|
|
3222
|
-
}) => /* @__PURE__ */ (0,
|
|
3265
|
+
}) => /* @__PURE__ */ (0, import_jsx_runtime316.jsx)(
|
|
3223
3266
|
"button",
|
|
3224
3267
|
{
|
|
3225
3268
|
type: "button",
|
|
@@ -3261,26 +3304,26 @@ var SingleDatePicker = (props) => {
|
|
|
3261
3304
|
initialYear,
|
|
3262
3305
|
initialMonth
|
|
3263
3306
|
);
|
|
3264
|
-
const [pickerMode, setPickerMode] =
|
|
3265
|
-
const [yearRangeStart, setYearRangeStart] =
|
|
3307
|
+
const [pickerMode, setPickerMode] = import_react13.default.useState("days");
|
|
3308
|
+
const [yearRangeStart, setYearRangeStart] = import_react13.default.useState(
|
|
3266
3309
|
Math.floor((initialYear ?? (/* @__PURE__ */ new Date()).getFullYear()) / 12) * 12
|
|
3267
3310
|
);
|
|
3268
|
-
const minTime =
|
|
3311
|
+
const minTime = import_react13.default.useMemo(
|
|
3269
3312
|
() => minDate ? new Date(minDate.getFullYear(), minDate.getMonth(), minDate.getDate()).getTime() : -Infinity,
|
|
3270
3313
|
[minDate]
|
|
3271
3314
|
);
|
|
3272
|
-
const maxTime =
|
|
3315
|
+
const maxTime = import_react13.default.useMemo(
|
|
3273
3316
|
() => maxDate ? new Date(maxDate.getFullYear(), maxDate.getMonth(), maxDate.getDate()).getTime() : Infinity,
|
|
3274
3317
|
[maxDate]
|
|
3275
3318
|
);
|
|
3276
|
-
const highlightSet =
|
|
3319
|
+
const highlightSet = import_react13.default.useMemo(() => {
|
|
3277
3320
|
const set = /* @__PURE__ */ new Set();
|
|
3278
3321
|
for (const h of highlightDates) {
|
|
3279
3322
|
set.add(`${h.getFullYear()}-${h.getMonth()}-${h.getDate()}`);
|
|
3280
3323
|
}
|
|
3281
3324
|
return set;
|
|
3282
3325
|
}, [highlightDates]);
|
|
3283
|
-
const handleSelect =
|
|
3326
|
+
const handleSelect = import_react13.default.useCallback(
|
|
3284
3327
|
(date) => {
|
|
3285
3328
|
onChange?.(date);
|
|
3286
3329
|
},
|
|
@@ -3317,20 +3360,20 @@ var SingleDatePicker = (props) => {
|
|
|
3317
3360
|
const monthLabels = MONTH_LABELS[locale];
|
|
3318
3361
|
const titleText = pickerMode === "days" ? locale === "ko" ? `${year}\uB144 ${monthLabels[month]}` : `${monthLabels[month]} ${year}` : pickerMode === "months" ? `${year}` : `${yearRangeStart} - ${yearRangeStart + 11}`;
|
|
3319
3362
|
const hasRange = rangeStart != null && rangeEnd != null;
|
|
3320
|
-
return /* @__PURE__ */ (0,
|
|
3363
|
+
return /* @__PURE__ */ (0, import_jsx_runtime316.jsxs)(
|
|
3321
3364
|
"div",
|
|
3322
3365
|
{
|
|
3323
3366
|
className: clsx_default("lib-xplat-datepicker", "single"),
|
|
3324
3367
|
children: [
|
|
3325
|
-
/* @__PURE__ */ (0,
|
|
3326
|
-
/* @__PURE__ */ (0,
|
|
3327
|
-
/* @__PURE__ */ (0,
|
|
3328
|
-
/* @__PURE__ */ (0,
|
|
3368
|
+
/* @__PURE__ */ (0, import_jsx_runtime316.jsxs)("div", { className: "datepicker-header", children: [
|
|
3369
|
+
/* @__PURE__ */ (0, import_jsx_runtime316.jsx)("button", { className: "datepicker-nav", onClick: handlePrev, type: "button", children: /* @__PURE__ */ (0, import_jsx_runtime316.jsx)(ChevronLeftIcon_default, {}) }),
|
|
3370
|
+
/* @__PURE__ */ (0, import_jsx_runtime316.jsx)("button", { className: "datepicker-title", onClick: handleTitleClick, type: "button", children: titleText }),
|
|
3371
|
+
/* @__PURE__ */ (0, import_jsx_runtime316.jsx)("button", { className: "datepicker-nav", onClick: handleNext, type: "button", children: /* @__PURE__ */ (0, import_jsx_runtime316.jsx)(ChevronRightIcon_default, {}) })
|
|
3329
3372
|
] }),
|
|
3330
|
-
/* @__PURE__ */ (0,
|
|
3331
|
-
pickerMode === "years" && /* @__PURE__ */ (0,
|
|
3373
|
+
/* @__PURE__ */ (0, import_jsx_runtime316.jsxs)("div", { className: "datepicker-body", children: [
|
|
3374
|
+
pickerMode === "years" && /* @__PURE__ */ (0, import_jsx_runtime316.jsx)("div", { className: "datepicker-picker-grid", children: Array.from({ length: 12 }, (_, i) => {
|
|
3332
3375
|
const y = yearRangeStart + i;
|
|
3333
|
-
return /* @__PURE__ */ (0,
|
|
3376
|
+
return /* @__PURE__ */ (0, import_jsx_runtime316.jsx)(
|
|
3334
3377
|
"button",
|
|
3335
3378
|
{
|
|
3336
3379
|
type: "button",
|
|
@@ -3341,7 +3384,7 @@ var SingleDatePicker = (props) => {
|
|
|
3341
3384
|
y
|
|
3342
3385
|
);
|
|
3343
3386
|
}) }),
|
|
3344
|
-
pickerMode === "months" && /* @__PURE__ */ (0,
|
|
3387
|
+
pickerMode === "months" && /* @__PURE__ */ (0, import_jsx_runtime316.jsx)("div", { className: "datepicker-picker-grid", children: monthLabels.map((label, i) => /* @__PURE__ */ (0, import_jsx_runtime316.jsx)(
|
|
3345
3388
|
"button",
|
|
3346
3389
|
{
|
|
3347
3390
|
type: "button",
|
|
@@ -3351,8 +3394,8 @@ var SingleDatePicker = (props) => {
|
|
|
3351
3394
|
},
|
|
3352
3395
|
i
|
|
3353
3396
|
)) }),
|
|
3354
|
-
pickerMode === "days" && /* @__PURE__ */ (0,
|
|
3355
|
-
/* @__PURE__ */ (0,
|
|
3397
|
+
pickerMode === "days" && /* @__PURE__ */ (0, import_jsx_runtime316.jsxs)(import_jsx_runtime316.Fragment, { children: [
|
|
3398
|
+
/* @__PURE__ */ (0, import_jsx_runtime316.jsx)("div", { className: "datepicker-weekdays", children: weekdays.map((label, i) => /* @__PURE__ */ (0, import_jsx_runtime316.jsx)(
|
|
3356
3399
|
"div",
|
|
3357
3400
|
{
|
|
3358
3401
|
className: clsx_default(
|
|
@@ -3364,7 +3407,7 @@ var SingleDatePicker = (props) => {
|
|
|
3364
3407
|
},
|
|
3365
3408
|
label
|
|
3366
3409
|
)) }),
|
|
3367
|
-
/* @__PURE__ */ (0,
|
|
3410
|
+
/* @__PURE__ */ (0, import_jsx_runtime316.jsx)("div", { className: "datepicker-grid", children: days.map((day, idx) => {
|
|
3368
3411
|
const t = day.date.getTime();
|
|
3369
3412
|
const disabled = t < minTime || t > maxTime;
|
|
3370
3413
|
const selected = value ? isSameDay(day.date, value) : false;
|
|
@@ -3374,7 +3417,7 @@ var SingleDatePicker = (props) => {
|
|
|
3374
3417
|
const isStart = hasRange ? isSameDay(day.date, rangeStart) : false;
|
|
3375
3418
|
const isEnd = hasRange ? isSameDay(day.date, rangeEnd) : false;
|
|
3376
3419
|
const inRangeVal = hasRange ? isInRange(day.date, rangeStart, rangeEnd) : false;
|
|
3377
|
-
return /* @__PURE__ */ (0,
|
|
3420
|
+
return /* @__PURE__ */ (0, import_jsx_runtime316.jsx)(
|
|
3378
3421
|
DayCell2,
|
|
3379
3422
|
{
|
|
3380
3423
|
day,
|
|
@@ -3399,7 +3442,7 @@ SingleDatePicker.displayName = "SingleDatePicker";
|
|
|
3399
3442
|
var SingleDatePicker_default = SingleDatePicker;
|
|
3400
3443
|
|
|
3401
3444
|
// src/components/DatePicker/InputDatePicker/index.tsx
|
|
3402
|
-
var
|
|
3445
|
+
var import_jsx_runtime317 = require("react/jsx-runtime");
|
|
3403
3446
|
var formatDate = (date) => {
|
|
3404
3447
|
if (!date || !(date instanceof Date) || isNaN(date.getTime())) return "";
|
|
3405
3448
|
const y = date.getFullYear();
|
|
@@ -3409,8 +3452,8 @@ var formatDate = (date) => {
|
|
|
3409
3452
|
};
|
|
3410
3453
|
var InputDatePicker = (props) => {
|
|
3411
3454
|
const { value, onChange, minDate, maxDate, disabled, locale = "ko", placeholder } = props;
|
|
3412
|
-
const [isOpen, setIsOpen] =
|
|
3413
|
-
const [tempDate, setTempDate] =
|
|
3455
|
+
const [isOpen, setIsOpen] = import_react14.default.useState(false);
|
|
3456
|
+
const [tempDate, setTempDate] = import_react14.default.useState(value ?? /* @__PURE__ */ new Date());
|
|
3414
3457
|
const handleOpen = () => {
|
|
3415
3458
|
if (disabled) return;
|
|
3416
3459
|
setTempDate(value ?? /* @__PURE__ */ new Date());
|
|
@@ -3426,19 +3469,19 @@ var InputDatePicker = (props) => {
|
|
|
3426
3469
|
const handleClose = () => {
|
|
3427
3470
|
setIsOpen(false);
|
|
3428
3471
|
};
|
|
3429
|
-
return /* @__PURE__ */ (0,
|
|
3430
|
-
/* @__PURE__ */ (0,
|
|
3472
|
+
return /* @__PURE__ */ (0, import_jsx_runtime317.jsxs)("div", { className: clsx_default("lib-xplat-datepicker input-datepicker", disabled && "disabled"), children: [
|
|
3473
|
+
/* @__PURE__ */ (0, import_jsx_runtime317.jsx)("div", { className: "input-datepicker-trigger", onClick: handleOpen, children: /* @__PURE__ */ (0, import_jsx_runtime317.jsx)(
|
|
3431
3474
|
Input_default,
|
|
3432
3475
|
{
|
|
3433
3476
|
value: formatDate(value),
|
|
3434
3477
|
placeholder,
|
|
3435
|
-
suffix: /* @__PURE__ */ (0,
|
|
3478
|
+
suffix: /* @__PURE__ */ (0, import_jsx_runtime317.jsx)(CalenderIcon_default, {}),
|
|
3436
3479
|
disabled,
|
|
3437
3480
|
readOnly: true
|
|
3438
3481
|
}
|
|
3439
3482
|
) }),
|
|
3440
|
-
/* @__PURE__ */ (0,
|
|
3441
|
-
/* @__PURE__ */ (0,
|
|
3483
|
+
/* @__PURE__ */ (0, import_jsx_runtime317.jsx)(Modal_default, { isOpen, onClose: handleClose, children: /* @__PURE__ */ (0, import_jsx_runtime317.jsxs)("div", { className: "lib-xplat-popup-datepicker-card", children: [
|
|
3484
|
+
/* @__PURE__ */ (0, import_jsx_runtime317.jsx)("div", { className: "popup-datepicker-content", children: /* @__PURE__ */ (0, import_jsx_runtime317.jsx)(
|
|
3442
3485
|
SingleDatePicker_default,
|
|
3443
3486
|
{
|
|
3444
3487
|
value: tempDate,
|
|
@@ -3448,9 +3491,9 @@ var InputDatePicker = (props) => {
|
|
|
3448
3491
|
locale
|
|
3449
3492
|
}
|
|
3450
3493
|
) }),
|
|
3451
|
-
/* @__PURE__ */ (0,
|
|
3452
|
-
/* @__PURE__ */ (0,
|
|
3453
|
-
/* @__PURE__ */ (0,
|
|
3494
|
+
/* @__PURE__ */ (0, import_jsx_runtime317.jsxs)("div", { className: "popup-datepicker-footer", children: [
|
|
3495
|
+
/* @__PURE__ */ (0, import_jsx_runtime317.jsx)(Button_default, { type: "secondary", onClick: handleClose, children: locale === "ko" ? "\uCDE8\uC18C" : "Cancel" }),
|
|
3496
|
+
/* @__PURE__ */ (0, import_jsx_runtime317.jsx)(Button_default, { type: "primary", onClick: handleApply, children: locale === "ko" ? "\uC801\uC6A9" : "Apply" })
|
|
3454
3497
|
] })
|
|
3455
3498
|
] }) })
|
|
3456
3499
|
] });
|
|
@@ -3459,20 +3502,20 @@ InputDatePicker.displayName = "InputDatePicker";
|
|
|
3459
3502
|
var InputDatePicker_default = InputDatePicker;
|
|
3460
3503
|
|
|
3461
3504
|
// src/components/DatePicker/PopupPicker/index.tsx
|
|
3462
|
-
var
|
|
3505
|
+
var import_react18 = __toESM(require("react"), 1);
|
|
3463
3506
|
|
|
3464
3507
|
// src/components/DatePicker/RangePicker/index.tsx
|
|
3465
|
-
var
|
|
3508
|
+
var import_react17 = __toESM(require("react"), 1);
|
|
3466
3509
|
|
|
3467
3510
|
// src/components/Tab/Tab.tsx
|
|
3468
|
-
var
|
|
3511
|
+
var import_react16 = __toESM(require("react"), 1);
|
|
3469
3512
|
|
|
3470
3513
|
// src/components/Tab/TabItem.tsx
|
|
3471
|
-
var
|
|
3472
|
-
var
|
|
3473
|
-
var TabItem =
|
|
3514
|
+
var import_react15 = __toESM(require("react"), 1);
|
|
3515
|
+
var import_jsx_runtime318 = require("react/jsx-runtime");
|
|
3516
|
+
var TabItem = import_react15.default.forwardRef((props, ref) => {
|
|
3474
3517
|
const { isActive: isActive2, title, onClick } = props;
|
|
3475
|
-
return /* @__PURE__ */ (0,
|
|
3518
|
+
return /* @__PURE__ */ (0, import_jsx_runtime318.jsx)(
|
|
3476
3519
|
"div",
|
|
3477
3520
|
{
|
|
3478
3521
|
ref,
|
|
@@ -3486,25 +3529,25 @@ TabItem.displayName = "TabItem";
|
|
|
3486
3529
|
var TabItem_default = TabItem;
|
|
3487
3530
|
|
|
3488
3531
|
// src/components/Tab/Tab.tsx
|
|
3489
|
-
var
|
|
3532
|
+
var import_jsx_runtime319 = require("react/jsx-runtime");
|
|
3490
3533
|
var Tab = (props) => {
|
|
3491
3534
|
const { activeIndex, onChange, tabs, type, size = "md" } = props;
|
|
3492
|
-
const [underlineStyle, setUnderlineStyle] =
|
|
3535
|
+
const [underlineStyle, setUnderlineStyle] = import_react16.default.useState({
|
|
3493
3536
|
left: 0,
|
|
3494
3537
|
width: 0
|
|
3495
3538
|
});
|
|
3496
|
-
const itemRefs =
|
|
3539
|
+
const itemRefs = import_react16.default.useRef([]);
|
|
3497
3540
|
const handleChangeActiveTab = (tabItem, tabIdx) => {
|
|
3498
3541
|
onChange(tabItem, tabIdx);
|
|
3499
3542
|
};
|
|
3500
|
-
|
|
3543
|
+
import_react16.default.useEffect(() => {
|
|
3501
3544
|
const el = itemRefs.current[activeIndex];
|
|
3502
3545
|
if (el) {
|
|
3503
3546
|
setUnderlineStyle({ left: el.offsetLeft, width: el.offsetWidth });
|
|
3504
3547
|
}
|
|
3505
3548
|
}, [activeIndex, tabs.length]);
|
|
3506
|
-
return /* @__PURE__ */ (0,
|
|
3507
|
-
tabs.map((tab, idx) => /* @__PURE__ */ (0,
|
|
3549
|
+
return /* @__PURE__ */ (0, import_jsx_runtime319.jsxs)("div", { className: clsx_default("lib-xplat-tab", `type-${type}`, size), children: [
|
|
3550
|
+
tabs.map((tab, idx) => /* @__PURE__ */ (0, import_jsx_runtime319.jsx)(
|
|
3508
3551
|
TabItem_default,
|
|
3509
3552
|
{
|
|
3510
3553
|
onClick: () => handleChangeActiveTab(tab, idx),
|
|
@@ -3516,7 +3559,7 @@ var Tab = (props) => {
|
|
|
3516
3559
|
},
|
|
3517
3560
|
`${tab.value}_${idx}`
|
|
3518
3561
|
)),
|
|
3519
|
-
type === "toggle" && /* @__PURE__ */ (0,
|
|
3562
|
+
type === "toggle" && /* @__PURE__ */ (0, import_jsx_runtime319.jsx)(
|
|
3520
3563
|
"div",
|
|
3521
3564
|
{
|
|
3522
3565
|
className: "tab-toggle-underline",
|
|
@@ -3532,7 +3575,7 @@ Tab.displayName = "Tab";
|
|
|
3532
3575
|
var Tab_default = Tab;
|
|
3533
3576
|
|
|
3534
3577
|
// src/components/DatePicker/RangePicker/index.tsx
|
|
3535
|
-
var
|
|
3578
|
+
var import_jsx_runtime320 = require("react/jsx-runtime");
|
|
3536
3579
|
var RangePicker = (props) => {
|
|
3537
3580
|
const {
|
|
3538
3581
|
startDate,
|
|
@@ -3542,7 +3585,7 @@ var RangePicker = (props) => {
|
|
|
3542
3585
|
maxDate,
|
|
3543
3586
|
locale = "ko"
|
|
3544
3587
|
} = props;
|
|
3545
|
-
const [activeTab, setActiveTab] =
|
|
3588
|
+
const [activeTab, setActiveTab] = import_react17.default.useState("start");
|
|
3546
3589
|
const handleStartChange = (date) => {
|
|
3547
3590
|
if (!date) return;
|
|
3548
3591
|
const newStart = date > endDate ? endDate : date;
|
|
@@ -3555,8 +3598,8 @@ var RangePicker = (props) => {
|
|
|
3555
3598
|
};
|
|
3556
3599
|
const startMaxDate = maxDate && endDate < maxDate ? endDate : endDate;
|
|
3557
3600
|
const endMinDate = minDate && startDate > minDate ? startDate : startDate;
|
|
3558
|
-
return /* @__PURE__ */ (0,
|
|
3559
|
-
/* @__PURE__ */ (0,
|
|
3601
|
+
return /* @__PURE__ */ (0, import_jsx_runtime320.jsxs)("div", { className: clsx_default("lib-xplat-datepicker", "range"), children: [
|
|
3602
|
+
/* @__PURE__ */ (0, import_jsx_runtime320.jsx)("div", { className: "datepicker-range-tabs", children: /* @__PURE__ */ (0, import_jsx_runtime320.jsx)(
|
|
3560
3603
|
Tab_default,
|
|
3561
3604
|
{
|
|
3562
3605
|
activeIndex: activeTab === "start" ? 0 : 1,
|
|
@@ -3569,8 +3612,8 @@ var RangePicker = (props) => {
|
|
|
3569
3612
|
size: "sm"
|
|
3570
3613
|
}
|
|
3571
3614
|
) }),
|
|
3572
|
-
/* @__PURE__ */ (0,
|
|
3573
|
-
/* @__PURE__ */ (0,
|
|
3615
|
+
/* @__PURE__ */ (0, import_jsx_runtime320.jsxs)("div", { className: "datepicker-range-panels", children: [
|
|
3616
|
+
/* @__PURE__ */ (0, import_jsx_runtime320.jsx)(
|
|
3574
3617
|
SingleDatePicker_default,
|
|
3575
3618
|
{
|
|
3576
3619
|
value: startDate,
|
|
@@ -3582,7 +3625,7 @@ var RangePicker = (props) => {
|
|
|
3582
3625
|
locale
|
|
3583
3626
|
}
|
|
3584
3627
|
),
|
|
3585
|
-
/* @__PURE__ */ (0,
|
|
3628
|
+
/* @__PURE__ */ (0, import_jsx_runtime320.jsx)(
|
|
3586
3629
|
SingleDatePicker_default,
|
|
3587
3630
|
{
|
|
3588
3631
|
value: endDate,
|
|
@@ -3595,7 +3638,7 @@ var RangePicker = (props) => {
|
|
|
3595
3638
|
}
|
|
3596
3639
|
)
|
|
3597
3640
|
] }),
|
|
3598
|
-
/* @__PURE__ */ (0,
|
|
3641
|
+
/* @__PURE__ */ (0, import_jsx_runtime320.jsx)("div", { className: "datepicker-range-mobile", children: activeTab === "start" ? /* @__PURE__ */ (0, import_jsx_runtime320.jsx)(
|
|
3599
3642
|
SingleDatePicker_default,
|
|
3600
3643
|
{
|
|
3601
3644
|
value: startDate,
|
|
@@ -3606,7 +3649,7 @@ var RangePicker = (props) => {
|
|
|
3606
3649
|
rangeEnd: endDate,
|
|
3607
3650
|
locale
|
|
3608
3651
|
}
|
|
3609
|
-
) : /* @__PURE__ */ (0,
|
|
3652
|
+
) : /* @__PURE__ */ (0, import_jsx_runtime320.jsx)(
|
|
3610
3653
|
SingleDatePicker_default,
|
|
3611
3654
|
{
|
|
3612
3655
|
value: endDate,
|
|
@@ -3624,10 +3667,10 @@ RangePicker.displayName = "RangePicker";
|
|
|
3624
3667
|
var RangePicker_default = RangePicker;
|
|
3625
3668
|
|
|
3626
3669
|
// src/components/DatePicker/PopupPicker/index.tsx
|
|
3627
|
-
var
|
|
3670
|
+
var import_jsx_runtime321 = require("react/jsx-runtime");
|
|
3628
3671
|
var PopupPicker = (props) => {
|
|
3629
3672
|
const { component, type, locale } = props;
|
|
3630
|
-
const [isOpen, setIsOpen] =
|
|
3673
|
+
const [isOpen, setIsOpen] = import_react18.default.useState(false);
|
|
3631
3674
|
const handleClick = () => setIsOpen(true);
|
|
3632
3675
|
const handleClose = () => setIsOpen(false);
|
|
3633
3676
|
const handleSingleChange = (date) => {
|
|
@@ -3635,11 +3678,11 @@ var PopupPicker = (props) => {
|
|
|
3635
3678
|
props.onChange?.(date);
|
|
3636
3679
|
handleClose();
|
|
3637
3680
|
};
|
|
3638
|
-
return /* @__PURE__ */ (0,
|
|
3639
|
-
|
|
3640
|
-
/* @__PURE__ */ (0,
|
|
3641
|
-
/* @__PURE__ */ (0,
|
|
3642
|
-
type === "single" && /* @__PURE__ */ (0,
|
|
3681
|
+
return /* @__PURE__ */ (0, import_jsx_runtime321.jsxs)("div", { className: "lib-xplat-popup-datepicker", children: [
|
|
3682
|
+
import_react18.default.cloneElement(component, { onClick: handleClick }),
|
|
3683
|
+
/* @__PURE__ */ (0, import_jsx_runtime321.jsx)(Modal_default, { isOpen, onClose: handleClose, children: /* @__PURE__ */ (0, import_jsx_runtime321.jsxs)("div", { className: clsx_default("lib-xplat-popup-datepicker-card", type === "range" && "range-mode"), children: [
|
|
3684
|
+
/* @__PURE__ */ (0, import_jsx_runtime321.jsxs)("div", { className: "popup-datepicker-content", children: [
|
|
3685
|
+
type === "single" && /* @__PURE__ */ (0, import_jsx_runtime321.jsx)(
|
|
3643
3686
|
SingleDatePicker_default,
|
|
3644
3687
|
{
|
|
3645
3688
|
value: props.value,
|
|
@@ -3649,7 +3692,7 @@ var PopupPicker = (props) => {
|
|
|
3649
3692
|
locale
|
|
3650
3693
|
}
|
|
3651
3694
|
),
|
|
3652
|
-
type === "range" && /* @__PURE__ */ (0,
|
|
3695
|
+
type === "range" && /* @__PURE__ */ (0, import_jsx_runtime321.jsx)(
|
|
3653
3696
|
RangePicker_default,
|
|
3654
3697
|
{
|
|
3655
3698
|
startDate: props.startDate,
|
|
@@ -3661,8 +3704,8 @@ var PopupPicker = (props) => {
|
|
|
3661
3704
|
}
|
|
3662
3705
|
)
|
|
3663
3706
|
] }),
|
|
3664
|
-
/* @__PURE__ */ (0,
|
|
3665
|
-
/* @__PURE__ */ (0,
|
|
3707
|
+
/* @__PURE__ */ (0, import_jsx_runtime321.jsxs)("div", { className: "popup-datepicker-footer", children: [
|
|
3708
|
+
/* @__PURE__ */ (0, import_jsx_runtime321.jsx)(
|
|
3666
3709
|
Button_default,
|
|
3667
3710
|
{
|
|
3668
3711
|
type: "secondary",
|
|
@@ -3670,7 +3713,7 @@ var PopupPicker = (props) => {
|
|
|
3670
3713
|
children: locale === "ko" ? "\uCDE8\uC18C" : "Cancel"
|
|
3671
3714
|
}
|
|
3672
3715
|
),
|
|
3673
|
-
/* @__PURE__ */ (0,
|
|
3716
|
+
/* @__PURE__ */ (0, import_jsx_runtime321.jsx)(Button_default, { type: "primary", onClick: handleClose, children: locale === "ko" ? "\uC801\uC6A9" : "Apply" })
|
|
3674
3717
|
] })
|
|
3675
3718
|
] }) })
|
|
3676
3719
|
] });
|
|
@@ -3679,10 +3722,10 @@ PopupPicker.displayName = "PopupPicker";
|
|
|
3679
3722
|
var PopupPicker_default = PopupPicker;
|
|
3680
3723
|
|
|
3681
3724
|
// src/components/Divider/Divider.tsx
|
|
3682
|
-
var
|
|
3725
|
+
var import_jsx_runtime322 = require("react/jsx-runtime");
|
|
3683
3726
|
var Divider = (props) => {
|
|
3684
3727
|
const { orientation = "horizontal" } = props;
|
|
3685
|
-
return /* @__PURE__ */ (0,
|
|
3728
|
+
return /* @__PURE__ */ (0, import_jsx_runtime322.jsx)(
|
|
3686
3729
|
"div",
|
|
3687
3730
|
{
|
|
3688
3731
|
className: clsx_default("lib-xplat-divider", orientation),
|
|
@@ -3695,15 +3738,15 @@ Divider.displayName = "Divider";
|
|
|
3695
3738
|
var Divider_default = Divider;
|
|
3696
3739
|
|
|
3697
3740
|
// src/components/Drawer/Drawer.tsx
|
|
3698
|
-
var
|
|
3741
|
+
var import_react19 = __toESM(require("react"), 1);
|
|
3699
3742
|
var import_react_dom3 = require("react-dom");
|
|
3700
|
-
var
|
|
3743
|
+
var import_jsx_runtime323 = require("react/jsx-runtime");
|
|
3701
3744
|
var ANIMATION_DURATION_MS2 = 250;
|
|
3702
3745
|
var Drawer = (props) => {
|
|
3703
3746
|
const { isOpen, onClose, placement = "right", size = "md", title, children } = props;
|
|
3704
|
-
const [mounted, setMounted] =
|
|
3705
|
-
const [visible, setVisible] =
|
|
3706
|
-
|
|
3747
|
+
const [mounted, setMounted] = import_react19.default.useState(false);
|
|
3748
|
+
const [visible, setVisible] = import_react19.default.useState(false);
|
|
3749
|
+
import_react19.default.useEffect(() => {
|
|
3707
3750
|
if (isOpen) {
|
|
3708
3751
|
setMounted(true);
|
|
3709
3752
|
const t2 = setTimeout(() => setVisible(true), 1);
|
|
@@ -3717,12 +3760,12 @@ var Drawer = (props) => {
|
|
|
3717
3760
|
if (!mounted) return null;
|
|
3718
3761
|
const stateClass = visible ? "enter" : "exit";
|
|
3719
3762
|
return (0, import_react_dom3.createPortal)(
|
|
3720
|
-
/* @__PURE__ */ (0,
|
|
3763
|
+
/* @__PURE__ */ (0, import_jsx_runtime323.jsx)(
|
|
3721
3764
|
"div",
|
|
3722
3765
|
{
|
|
3723
3766
|
className: clsx_default("lib-xplat-drawer-overlay", stateClass),
|
|
3724
3767
|
onClick: onClose,
|
|
3725
|
-
children: /* @__PURE__ */ (0,
|
|
3768
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime323.jsxs)(
|
|
3726
3769
|
"div",
|
|
3727
3770
|
{
|
|
3728
3771
|
className: clsx_default("lib-xplat-drawer", placement, size, stateClass),
|
|
@@ -3730,11 +3773,11 @@ var Drawer = (props) => {
|
|
|
3730
3773
|
"aria-modal": "true",
|
|
3731
3774
|
onClick: (e) => e.stopPropagation(),
|
|
3732
3775
|
children: [
|
|
3733
|
-
title && /* @__PURE__ */ (0,
|
|
3734
|
-
/* @__PURE__ */ (0,
|
|
3735
|
-
/* @__PURE__ */ (0,
|
|
3776
|
+
title && /* @__PURE__ */ (0, import_jsx_runtime323.jsxs)("div", { className: "drawer-header", children: [
|
|
3777
|
+
/* @__PURE__ */ (0, import_jsx_runtime323.jsx)("span", { className: "drawer-title", children: title }),
|
|
3778
|
+
/* @__PURE__ */ (0, import_jsx_runtime323.jsx)("button", { className: "close-btn", onClick: onClose, "aria-label": "\uB2EB\uAE30", children: "\xD7" })
|
|
3736
3779
|
] }),
|
|
3737
|
-
/* @__PURE__ */ (0,
|
|
3780
|
+
/* @__PURE__ */ (0, import_jsx_runtime323.jsx)("div", { className: "drawer-body", children })
|
|
3738
3781
|
]
|
|
3739
3782
|
}
|
|
3740
3783
|
)
|
|
@@ -3747,16 +3790,16 @@ Drawer.displayName = "Drawer";
|
|
|
3747
3790
|
var Drawer_default = Drawer;
|
|
3748
3791
|
|
|
3749
3792
|
// src/components/Dropdown/Dropdown.tsx
|
|
3750
|
-
var
|
|
3793
|
+
var import_react22 = __toESM(require("react"), 1);
|
|
3751
3794
|
|
|
3752
3795
|
// src/tokens/hooks/useAutoPosition.ts
|
|
3753
|
-
var
|
|
3796
|
+
var import_react20 = __toESM(require("react"), 1);
|
|
3754
3797
|
var useAutoPosition = (triggerRef, popRef, enabled = true) => {
|
|
3755
|
-
const [position, setPosition] =
|
|
3798
|
+
const [position, setPosition] = import_react20.default.useState({
|
|
3756
3799
|
position: {},
|
|
3757
3800
|
direction: "bottom"
|
|
3758
3801
|
});
|
|
3759
|
-
const calculatePosition =
|
|
3802
|
+
const calculatePosition = import_react20.default.useCallback(() => {
|
|
3760
3803
|
if (!triggerRef.current || !popRef.current) return;
|
|
3761
3804
|
const triggerRect = triggerRef.current.getBoundingClientRect();
|
|
3762
3805
|
const popW = popRef.current.offsetWidth;
|
|
@@ -3783,13 +3826,13 @@ var useAutoPosition = (triggerRef, popRef, enabled = true) => {
|
|
|
3783
3826
|
direction
|
|
3784
3827
|
});
|
|
3785
3828
|
}, [triggerRef, popRef]);
|
|
3786
|
-
|
|
3829
|
+
import_react20.default.useLayoutEffect(() => {
|
|
3787
3830
|
if (!enabled) return;
|
|
3788
3831
|
calculatePosition();
|
|
3789
3832
|
const raf = requestAnimationFrame(calculatePosition);
|
|
3790
3833
|
return () => cancelAnimationFrame(raf);
|
|
3791
3834
|
}, [calculatePosition, enabled]);
|
|
3792
|
-
|
|
3835
|
+
import_react20.default.useEffect(() => {
|
|
3793
3836
|
if (!enabled || !popRef.current) return;
|
|
3794
3837
|
const observer = new ResizeObserver(() => {
|
|
3795
3838
|
calculatePosition();
|
|
@@ -3797,7 +3840,7 @@ var useAutoPosition = (triggerRef, popRef, enabled = true) => {
|
|
|
3797
3840
|
observer.observe(popRef.current);
|
|
3798
3841
|
return () => observer.disconnect();
|
|
3799
3842
|
}, [calculatePosition, enabled, popRef]);
|
|
3800
|
-
|
|
3843
|
+
import_react20.default.useEffect(() => {
|
|
3801
3844
|
if (!enabled) return;
|
|
3802
3845
|
window.addEventListener("resize", calculatePosition);
|
|
3803
3846
|
window.addEventListener("scroll", calculatePosition, true);
|
|
@@ -3811,9 +3854,9 @@ var useAutoPosition = (triggerRef, popRef, enabled = true) => {
|
|
|
3811
3854
|
var useAutoPosition_default = useAutoPosition;
|
|
3812
3855
|
|
|
3813
3856
|
// src/tokens/hooks/useClickOutside.ts
|
|
3814
|
-
var
|
|
3857
|
+
var import_react21 = __toESM(require("react"), 1);
|
|
3815
3858
|
var useClickOutside = (refs, handler, enabled = true) => {
|
|
3816
|
-
|
|
3859
|
+
import_react21.default.useEffect(() => {
|
|
3817
3860
|
if (!enabled) return;
|
|
3818
3861
|
const refArray = Array.isArray(refs) ? refs : [refs];
|
|
3819
3862
|
const listener = (event) => {
|
|
@@ -3836,17 +3879,17 @@ var useClickOutside = (refs, handler, enabled = true) => {
|
|
|
3836
3879
|
var useClickOutside_default = useClickOutside;
|
|
3837
3880
|
|
|
3838
3881
|
// src/components/Dropdown/Dropdown.tsx
|
|
3839
|
-
var
|
|
3882
|
+
var import_jsx_runtime324 = require("react/jsx-runtime");
|
|
3840
3883
|
var Dropdown = (props) => {
|
|
3841
3884
|
const { items, children } = props;
|
|
3842
|
-
const [isOpen, setIsOpen] =
|
|
3843
|
-
const [mounted, setMounted] =
|
|
3844
|
-
const [visible, setVisible] =
|
|
3845
|
-
const triggerRef =
|
|
3846
|
-
const menuRef =
|
|
3885
|
+
const [isOpen, setIsOpen] = import_react22.default.useState(false);
|
|
3886
|
+
const [mounted, setMounted] = import_react22.default.useState(false);
|
|
3887
|
+
const [visible, setVisible] = import_react22.default.useState(false);
|
|
3888
|
+
const triggerRef = import_react22.default.useRef(null);
|
|
3889
|
+
const menuRef = import_react22.default.useRef(null);
|
|
3847
3890
|
const { position, direction } = useAutoPosition_default(triggerRef, menuRef, mounted);
|
|
3848
3891
|
useClickOutside_default([triggerRef, menuRef], () => setIsOpen(false), isOpen);
|
|
3849
|
-
|
|
3892
|
+
import_react22.default.useEffect(() => {
|
|
3850
3893
|
if (isOpen) {
|
|
3851
3894
|
setMounted(true);
|
|
3852
3895
|
const t2 = setTimeout(() => setVisible(true), 1);
|
|
@@ -3861,8 +3904,8 @@ var Dropdown = (props) => {
|
|
|
3861
3904
|
item.onClick?.();
|
|
3862
3905
|
setIsOpen(false);
|
|
3863
3906
|
};
|
|
3864
|
-
return /* @__PURE__ */ (0,
|
|
3865
|
-
/* @__PURE__ */ (0,
|
|
3907
|
+
return /* @__PURE__ */ (0, import_jsx_runtime324.jsxs)("div", { className: "lib-xplat-dropdown", children: [
|
|
3908
|
+
/* @__PURE__ */ (0, import_jsx_runtime324.jsx)(
|
|
3866
3909
|
"div",
|
|
3867
3910
|
{
|
|
3868
3911
|
ref: triggerRef,
|
|
@@ -3871,14 +3914,14 @@ var Dropdown = (props) => {
|
|
|
3871
3914
|
children
|
|
3872
3915
|
}
|
|
3873
3916
|
),
|
|
3874
|
-
mounted && /* @__PURE__ */ (0,
|
|
3917
|
+
mounted && /* @__PURE__ */ (0, import_jsx_runtime324.jsx)(Portal_default, { children: /* @__PURE__ */ (0, import_jsx_runtime324.jsx)(
|
|
3875
3918
|
"div",
|
|
3876
3919
|
{
|
|
3877
3920
|
ref: menuRef,
|
|
3878
3921
|
className: clsx_default("lib-xplat-dropdown-menu", direction, { visible }),
|
|
3879
3922
|
style: { top: position.top, left: position.left },
|
|
3880
3923
|
role: "menu",
|
|
3881
|
-
children: items.map((item) => /* @__PURE__ */ (0,
|
|
3924
|
+
children: items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime324.jsx)(
|
|
3882
3925
|
"button",
|
|
3883
3926
|
{
|
|
3884
3927
|
className: clsx_default("dropdown-item", {
|
|
@@ -3900,8 +3943,8 @@ Dropdown.displayName = "Dropdown";
|
|
|
3900
3943
|
var Dropdown_default = Dropdown;
|
|
3901
3944
|
|
|
3902
3945
|
// src/components/Editor/Editor.tsx
|
|
3903
|
-
var
|
|
3904
|
-
var
|
|
3946
|
+
var import_react23 = __toESM(require("react"), 1);
|
|
3947
|
+
var import_jsx_runtime325 = require("react/jsx-runtime");
|
|
3905
3948
|
var DEFAULT_TOOLBAR = [
|
|
3906
3949
|
"bold",
|
|
3907
3950
|
"italic",
|
|
@@ -4008,21 +4051,21 @@ var Editor = (props) => {
|
|
|
4008
4051
|
onImageUpload,
|
|
4009
4052
|
minHeight = 200
|
|
4010
4053
|
} = props;
|
|
4011
|
-
const editorRef =
|
|
4012
|
-
const lastRangeRef =
|
|
4013
|
-
const composingRef =
|
|
4014
|
-
const [isFocused, setIsFocused] =
|
|
4015
|
-
const [isEmpty, setIsEmpty] =
|
|
4016
|
-
const [activeFormats, setActiveFormats] =
|
|
4017
|
-
const [slashOpen, setSlashOpen] =
|
|
4018
|
-
const [slashFilter, setSlashFilter] =
|
|
4019
|
-
const [slashIdx, setSlashIdx] =
|
|
4020
|
-
const [slashPos, setSlashPos] =
|
|
4021
|
-
const slashStartRangeRef =
|
|
4022
|
-
const [linkOpen, setLinkOpen] =
|
|
4023
|
-
const [linkValue, setLinkValue] =
|
|
4024
|
-
const [linkPos, setLinkPos] =
|
|
4025
|
-
|
|
4054
|
+
const editorRef = import_react23.default.useRef(null);
|
|
4055
|
+
const lastRangeRef = import_react23.default.useRef(null);
|
|
4056
|
+
const composingRef = import_react23.default.useRef(false);
|
|
4057
|
+
const [isFocused, setIsFocused] = import_react23.default.useState(false);
|
|
4058
|
+
const [isEmpty, setIsEmpty] = import_react23.default.useState(!value);
|
|
4059
|
+
const [activeFormats, setActiveFormats] = import_react23.default.useState(/* @__PURE__ */ new Set());
|
|
4060
|
+
const [slashOpen, setSlashOpen] = import_react23.default.useState(false);
|
|
4061
|
+
const [slashFilter, setSlashFilter] = import_react23.default.useState("");
|
|
4062
|
+
const [slashIdx, setSlashIdx] = import_react23.default.useState(0);
|
|
4063
|
+
const [slashPos, setSlashPos] = import_react23.default.useState({ top: 0, left: 0 });
|
|
4064
|
+
const slashStartRangeRef = import_react23.default.useRef(null);
|
|
4065
|
+
const [linkOpen, setLinkOpen] = import_react23.default.useState(false);
|
|
4066
|
+
const [linkValue, setLinkValue] = import_react23.default.useState("");
|
|
4067
|
+
const [linkPos, setLinkPos] = import_react23.default.useState({ top: 0, left: 0 });
|
|
4068
|
+
import_react23.default.useEffect(() => {
|
|
4026
4069
|
if (!editorRef.current) return;
|
|
4027
4070
|
if (editorRef.current.innerHTML !== value) {
|
|
4028
4071
|
editorRef.current.innerHTML = sanitizeHtml(value || "");
|
|
@@ -4136,7 +4179,7 @@ var Editor = (props) => {
|
|
|
4136
4179
|
setSlashIdx(0);
|
|
4137
4180
|
slashStartRangeRef.current = null;
|
|
4138
4181
|
};
|
|
4139
|
-
const filteredSlashItems =
|
|
4182
|
+
const filteredSlashItems = import_react23.default.useMemo(() => {
|
|
4140
4183
|
if (!slashFilter) return SLASH_ITEMS;
|
|
4141
4184
|
const f = slashFilter.toLowerCase();
|
|
4142
4185
|
return SLASH_ITEMS.filter((it) => it.label.toLowerCase().includes(f) || it.key.includes(f));
|
|
@@ -4421,8 +4464,8 @@ var Editor = (props) => {
|
|
|
4421
4464
|
break;
|
|
4422
4465
|
}
|
|
4423
4466
|
};
|
|
4424
|
-
return /* @__PURE__ */ (0,
|
|
4425
|
-
!readOnly && /* @__PURE__ */ (0,
|
|
4467
|
+
return /* @__PURE__ */ (0, import_jsx_runtime325.jsxs)("div", { className: clsx_default("lib-xplat-editor", isFocused && "focused", readOnly && "readonly"), children: [
|
|
4468
|
+
!readOnly && /* @__PURE__ */ (0, import_jsx_runtime325.jsx)(
|
|
4426
4469
|
EditorToolbar,
|
|
4427
4470
|
{
|
|
4428
4471
|
items: toolbar,
|
|
@@ -4430,9 +4473,9 @@ var Editor = (props) => {
|
|
|
4430
4473
|
onAction: onToolbarAction
|
|
4431
4474
|
}
|
|
4432
4475
|
),
|
|
4433
|
-
/* @__PURE__ */ (0,
|
|
4434
|
-
isEmpty && !isFocused && /* @__PURE__ */ (0,
|
|
4435
|
-
/* @__PURE__ */ (0,
|
|
4476
|
+
/* @__PURE__ */ (0, import_jsx_runtime325.jsxs)("div", { className: "lib-xplat-editor__content", style: { minHeight }, children: [
|
|
4477
|
+
isEmpty && !isFocused && /* @__PURE__ */ (0, import_jsx_runtime325.jsx)("div", { className: "lib-xplat-editor__placeholder", children: placeholder }),
|
|
4478
|
+
/* @__PURE__ */ (0, import_jsx_runtime325.jsx)(
|
|
4436
4479
|
"div",
|
|
4437
4480
|
{
|
|
4438
4481
|
ref: editorRef,
|
|
@@ -4451,7 +4494,7 @@ var Editor = (props) => {
|
|
|
4451
4494
|
spellCheck: true
|
|
4452
4495
|
}
|
|
4453
4496
|
),
|
|
4454
|
-
slashOpen && filteredSlashItems.length > 0 && /* @__PURE__ */ (0,
|
|
4497
|
+
slashOpen && filteredSlashItems.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime325.jsx)(
|
|
4455
4498
|
SlashMenu,
|
|
4456
4499
|
{
|
|
4457
4500
|
position: slashPos,
|
|
@@ -4461,7 +4504,7 @@ var Editor = (props) => {
|
|
|
4461
4504
|
onClose: closeSlashMenu
|
|
4462
4505
|
}
|
|
4463
4506
|
),
|
|
4464
|
-
linkOpen && /* @__PURE__ */ (0,
|
|
4507
|
+
linkOpen && /* @__PURE__ */ (0, import_jsx_runtime325.jsx)(
|
|
4465
4508
|
LinkPopover,
|
|
4466
4509
|
{
|
|
4467
4510
|
position: linkPos,
|
|
@@ -4513,7 +4556,7 @@ var isActive = (item, active) => {
|
|
|
4513
4556
|
return active.has(item);
|
|
4514
4557
|
};
|
|
4515
4558
|
var EditorToolbar = ({ items, active, onAction }) => {
|
|
4516
|
-
return /* @__PURE__ */ (0,
|
|
4559
|
+
return /* @__PURE__ */ (0, import_jsx_runtime325.jsx)("div", { className: "lib-xplat-editor__toolbar", children: items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime325.jsx)(
|
|
4517
4560
|
"button",
|
|
4518
4561
|
{
|
|
4519
4562
|
type: "button",
|
|
@@ -4529,7 +4572,7 @@ var EditorToolbar = ({ items, active, onAction }) => {
|
|
|
4529
4572
|
)) });
|
|
4530
4573
|
};
|
|
4531
4574
|
var SlashMenu = ({ position, items, activeIndex, onSelect, onClose }) => {
|
|
4532
|
-
|
|
4575
|
+
import_react23.default.useEffect(() => {
|
|
4533
4576
|
const handleClickOutside = (e) => {
|
|
4534
4577
|
const target = e.target;
|
|
4535
4578
|
const menu = document.querySelector(".lib-xplat-editor__slash-menu");
|
|
@@ -4538,12 +4581,12 @@ var SlashMenu = ({ position, items, activeIndex, onSelect, onClose }) => {
|
|
|
4538
4581
|
window.addEventListener("mousedown", handleClickOutside);
|
|
4539
4582
|
return () => window.removeEventListener("mousedown", handleClickOutside);
|
|
4540
4583
|
}, [onClose]);
|
|
4541
|
-
return /* @__PURE__ */ (0,
|
|
4584
|
+
return /* @__PURE__ */ (0, import_jsx_runtime325.jsx)(
|
|
4542
4585
|
"div",
|
|
4543
4586
|
{
|
|
4544
4587
|
className: "lib-xplat-editor__slash-menu",
|
|
4545
4588
|
style: { top: position.top, left: position.left },
|
|
4546
|
-
children: items.map((item, i) => /* @__PURE__ */ (0,
|
|
4589
|
+
children: items.map((item, i) => /* @__PURE__ */ (0, import_jsx_runtime325.jsxs)(
|
|
4547
4590
|
"button",
|
|
4548
4591
|
{
|
|
4549
4592
|
type: "button",
|
|
@@ -4553,8 +4596,8 @@ var SlashMenu = ({ position, items, activeIndex, onSelect, onClose }) => {
|
|
|
4553
4596
|
onSelect(item);
|
|
4554
4597
|
},
|
|
4555
4598
|
children: [
|
|
4556
|
-
/* @__PURE__ */ (0,
|
|
4557
|
-
item.hint && /* @__PURE__ */ (0,
|
|
4599
|
+
/* @__PURE__ */ (0, import_jsx_runtime325.jsx)("span", { className: "label", children: item.label }),
|
|
4600
|
+
item.hint && /* @__PURE__ */ (0, import_jsx_runtime325.jsx)("span", { className: "hint", children: item.hint })
|
|
4558
4601
|
]
|
|
4559
4602
|
},
|
|
4560
4603
|
item.key
|
|
@@ -4563,17 +4606,17 @@ var SlashMenu = ({ position, items, activeIndex, onSelect, onClose }) => {
|
|
|
4563
4606
|
);
|
|
4564
4607
|
};
|
|
4565
4608
|
var LinkPopover = ({ position, value, onChange, onConfirm, onClose }) => {
|
|
4566
|
-
const inputRef =
|
|
4567
|
-
|
|
4609
|
+
const inputRef = import_react23.default.useRef(null);
|
|
4610
|
+
import_react23.default.useEffect(() => {
|
|
4568
4611
|
inputRef.current?.focus();
|
|
4569
4612
|
}, []);
|
|
4570
|
-
return /* @__PURE__ */ (0,
|
|
4613
|
+
return /* @__PURE__ */ (0, import_jsx_runtime325.jsxs)(
|
|
4571
4614
|
"div",
|
|
4572
4615
|
{
|
|
4573
4616
|
className: "lib-xplat-editor__link-popover",
|
|
4574
4617
|
style: { top: position.top, left: position.left },
|
|
4575
4618
|
children: [
|
|
4576
|
-
/* @__PURE__ */ (0,
|
|
4619
|
+
/* @__PURE__ */ (0, import_jsx_runtime325.jsx)(
|
|
4577
4620
|
"input",
|
|
4578
4621
|
{
|
|
4579
4622
|
ref: inputRef,
|
|
@@ -4593,11 +4636,11 @@ var LinkPopover = ({ position, value, onChange, onConfirm, onClose }) => {
|
|
|
4593
4636
|
}
|
|
4594
4637
|
}
|
|
4595
4638
|
),
|
|
4596
|
-
/* @__PURE__ */ (0,
|
|
4639
|
+
/* @__PURE__ */ (0, import_jsx_runtime325.jsx)("button", { type: "button", onMouseDown: (e) => {
|
|
4597
4640
|
e.preventDefault();
|
|
4598
4641
|
onConfirm();
|
|
4599
4642
|
}, children: "\uC801\uC6A9" }),
|
|
4600
|
-
/* @__PURE__ */ (0,
|
|
4643
|
+
/* @__PURE__ */ (0, import_jsx_runtime325.jsx)("button", { type: "button", onMouseDown: (e) => {
|
|
4601
4644
|
e.preventDefault();
|
|
4602
4645
|
onClose();
|
|
4603
4646
|
}, children: "\uCDE8\uC18C" })
|
|
@@ -4607,23 +4650,23 @@ var LinkPopover = ({ position, value, onChange, onConfirm, onClose }) => {
|
|
|
4607
4650
|
};
|
|
4608
4651
|
|
|
4609
4652
|
// src/components/EmptyState/EmptyState.tsx
|
|
4610
|
-
var
|
|
4653
|
+
var import_jsx_runtime326 = require("react/jsx-runtime");
|
|
4611
4654
|
var EmptyState = (props) => {
|
|
4612
4655
|
const { icon, title = "\uB370\uC774\uD130\uAC00 \uC5C6\uC2B5\uB2C8\uB2E4", description, action } = props;
|
|
4613
|
-
return /* @__PURE__ */ (0,
|
|
4614
|
-
icon && /* @__PURE__ */ (0,
|
|
4615
|
-
!icon && /* @__PURE__ */ (0,
|
|
4616
|
-
/* @__PURE__ */ (0,
|
|
4617
|
-
description && /* @__PURE__ */ (0,
|
|
4618
|
-
action && /* @__PURE__ */ (0,
|
|
4656
|
+
return /* @__PURE__ */ (0, import_jsx_runtime326.jsxs)("div", { className: "lib-xplat-empty-state", children: [
|
|
4657
|
+
icon && /* @__PURE__ */ (0, import_jsx_runtime326.jsx)("div", { className: "empty-icon", children: icon }),
|
|
4658
|
+
!icon && /* @__PURE__ */ (0, import_jsx_runtime326.jsx)("div", { className: "empty-icon", children: /* @__PURE__ */ (0, import_jsx_runtime326.jsx)("svg", { viewBox: "0 0 24 24", fill: "currentColor", children: /* @__PURE__ */ (0, import_jsx_runtime326.jsx)("path", { d: "M20 6h-8l-2-2H4c-1.1 0-2 .9-2 2v12c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2zm0 12H4V8h16v10z" }) }) }),
|
|
4659
|
+
/* @__PURE__ */ (0, import_jsx_runtime326.jsx)("p", { className: "empty-title", children: title }),
|
|
4660
|
+
description && /* @__PURE__ */ (0, import_jsx_runtime326.jsx)("p", { className: "empty-description", children: description }),
|
|
4661
|
+
action && /* @__PURE__ */ (0, import_jsx_runtime326.jsx)("div", { className: "empty-action", children: action })
|
|
4619
4662
|
] });
|
|
4620
4663
|
};
|
|
4621
4664
|
EmptyState.displayName = "EmptyState";
|
|
4622
4665
|
var EmptyState_default = EmptyState;
|
|
4623
4666
|
|
|
4624
4667
|
// src/components/FileUpload/FileUpload.tsx
|
|
4625
|
-
var
|
|
4626
|
-
var
|
|
4668
|
+
var import_react24 = __toESM(require("react"), 1);
|
|
4669
|
+
var import_jsx_runtime327 = require("react/jsx-runtime");
|
|
4627
4670
|
var FileUpload = (props) => {
|
|
4628
4671
|
const {
|
|
4629
4672
|
accept,
|
|
@@ -4633,8 +4676,8 @@ var FileUpload = (props) => {
|
|
|
4633
4676
|
label = "\uD30C\uC77C\uC744 \uB4DC\uB798\uADF8\uD558\uAC70\uB098 \uD074\uB9AD\uD558\uC5EC \uC5C5\uB85C\uB4DC",
|
|
4634
4677
|
description
|
|
4635
4678
|
} = props;
|
|
4636
|
-
const [isDragOver, setIsDragOver] =
|
|
4637
|
-
const inputRef =
|
|
4679
|
+
const [isDragOver, setIsDragOver] = import_react24.default.useState(false);
|
|
4680
|
+
const inputRef = import_react24.default.useRef(null);
|
|
4638
4681
|
const handleFiles = (fileList) => {
|
|
4639
4682
|
let files = Array.from(fileList);
|
|
4640
4683
|
if (maxSize) {
|
|
@@ -4664,7 +4707,7 @@ var FileUpload = (props) => {
|
|
|
4664
4707
|
handleFiles(e.target.files);
|
|
4665
4708
|
}
|
|
4666
4709
|
};
|
|
4667
|
-
return /* @__PURE__ */ (0,
|
|
4710
|
+
return /* @__PURE__ */ (0, import_jsx_runtime327.jsxs)(
|
|
4668
4711
|
"div",
|
|
4669
4712
|
{
|
|
4670
4713
|
className: clsx_default("lib-xplat-file-upload", { "drag-over": isDragOver }),
|
|
@@ -4673,7 +4716,7 @@ var FileUpload = (props) => {
|
|
|
4673
4716
|
onDragLeave: handleDragLeave,
|
|
4674
4717
|
onClick: () => inputRef.current?.click(),
|
|
4675
4718
|
children: [
|
|
4676
|
-
/* @__PURE__ */ (0,
|
|
4719
|
+
/* @__PURE__ */ (0, import_jsx_runtime327.jsx)(
|
|
4677
4720
|
"input",
|
|
4678
4721
|
{
|
|
4679
4722
|
ref: inputRef,
|
|
@@ -4683,9 +4726,9 @@ var FileUpload = (props) => {
|
|
|
4683
4726
|
onChange: handleChange
|
|
4684
4727
|
}
|
|
4685
4728
|
),
|
|
4686
|
-
/* @__PURE__ */ (0,
|
|
4687
|
-
/* @__PURE__ */ (0,
|
|
4688
|
-
description && /* @__PURE__ */ (0,
|
|
4729
|
+
/* @__PURE__ */ (0, import_jsx_runtime327.jsx)("div", { className: "upload-icon", children: /* @__PURE__ */ (0, import_jsx_runtime327.jsx)(UploadIcon_default, {}) }),
|
|
4730
|
+
/* @__PURE__ */ (0, import_jsx_runtime327.jsx)("p", { className: "upload-label", children: label }),
|
|
4731
|
+
description && /* @__PURE__ */ (0, import_jsx_runtime327.jsx)("p", { className: "upload-description", children: description })
|
|
4689
4732
|
]
|
|
4690
4733
|
}
|
|
4691
4734
|
);
|
|
@@ -4694,10 +4737,10 @@ FileUpload.displayName = "FileUpload";
|
|
|
4694
4737
|
var FileUpload_default = FileUpload;
|
|
4695
4738
|
|
|
4696
4739
|
// src/components/HtmlTypeWriter/HtmlTypeWriter.tsx
|
|
4697
|
-
var
|
|
4740
|
+
var import_react26 = __toESM(require("react"), 1);
|
|
4698
4741
|
|
|
4699
4742
|
// src/components/HtmlTypeWriter/utils.ts
|
|
4700
|
-
var
|
|
4743
|
+
var import_react25 = __toESM(require("react"), 1);
|
|
4701
4744
|
var voidTags = /* @__PURE__ */ new Set([
|
|
4702
4745
|
"br",
|
|
4703
4746
|
"img",
|
|
@@ -4765,41 +4808,41 @@ var convertNodeToReactWithRange = (node, typedLen, rangeMap) => {
|
|
|
4765
4808
|
props[attr.name] = attr.value;
|
|
4766
4809
|
});
|
|
4767
4810
|
if (voidTags.has(tag)) {
|
|
4768
|
-
return
|
|
4811
|
+
return import_react25.default.createElement(tag, props);
|
|
4769
4812
|
}
|
|
4770
4813
|
const children = Array.from(element.childNodes).map((child) => convertNodeToReactWithRange(child, typedLen, rangeMap)).filter((n) => n != null);
|
|
4771
|
-
return
|
|
4814
|
+
return import_react25.default.createElement(tag, props, ...children);
|
|
4772
4815
|
};
|
|
4773
4816
|
var htmlToReactProgressive = (root, typedLen, rangeMap) => {
|
|
4774
4817
|
const nodes = Array.from(root.childNodes).map((child, idx) => {
|
|
4775
4818
|
const node = convertNodeToReactWithRange(child, typedLen, rangeMap);
|
|
4776
|
-
return node == null ? null :
|
|
4819
|
+
return node == null ? null : import_react25.default.createElement(import_react25.default.Fragment, { key: idx }, node);
|
|
4777
4820
|
}).filter(Boolean);
|
|
4778
4821
|
return nodes.length === 0 ? null : nodes;
|
|
4779
4822
|
};
|
|
4780
4823
|
|
|
4781
4824
|
// src/components/HtmlTypeWriter/HtmlTypeWriter.tsx
|
|
4782
|
-
var
|
|
4825
|
+
var import_jsx_runtime328 = require("react/jsx-runtime");
|
|
4783
4826
|
var HtmlTypeWriter = ({
|
|
4784
4827
|
html,
|
|
4785
4828
|
duration = 20,
|
|
4786
4829
|
onDone,
|
|
4787
4830
|
onChange
|
|
4788
4831
|
}) => {
|
|
4789
|
-
const [typedLen, setTypedLen] =
|
|
4790
|
-
const doneCalledRef =
|
|
4791
|
-
const { doc, rangeMap, totalLength } =
|
|
4832
|
+
const [typedLen, setTypedLen] = import_react26.default.useState(0);
|
|
4833
|
+
const doneCalledRef = import_react26.default.useRef(false);
|
|
4834
|
+
const { doc, rangeMap, totalLength } = import_react26.default.useMemo(() => {
|
|
4792
4835
|
if (typeof window === "undefined") return { doc: null, rangeMap: /* @__PURE__ */ new Map(), totalLength: 0 };
|
|
4793
4836
|
const decoded = decodeHtmlEntities(html);
|
|
4794
4837
|
const doc2 = new DOMParser().parseFromString(decoded, "text/html");
|
|
4795
4838
|
const { rangeMap: rangeMap2, totalLength: totalLength2 } = buildRangeMap(doc2.body);
|
|
4796
4839
|
return { doc: doc2, rangeMap: rangeMap2, totalLength: totalLength2 };
|
|
4797
4840
|
}, [html]);
|
|
4798
|
-
|
|
4841
|
+
import_react26.default.useEffect(() => {
|
|
4799
4842
|
setTypedLen(0);
|
|
4800
4843
|
doneCalledRef.current = false;
|
|
4801
4844
|
}, [html]);
|
|
4802
|
-
|
|
4845
|
+
import_react26.default.useEffect(() => {
|
|
4803
4846
|
if (!totalLength) return;
|
|
4804
4847
|
if (typedLen >= totalLength) return;
|
|
4805
4848
|
const timer = window.setInterval(() => {
|
|
@@ -4807,33 +4850,33 @@ var HtmlTypeWriter = ({
|
|
|
4807
4850
|
}, duration);
|
|
4808
4851
|
return () => window.clearInterval(timer);
|
|
4809
4852
|
}, [typedLen, totalLength, duration]);
|
|
4810
|
-
|
|
4853
|
+
import_react26.default.useEffect(() => {
|
|
4811
4854
|
if (typedLen > 0 && typedLen < totalLength) {
|
|
4812
4855
|
onChange?.();
|
|
4813
4856
|
}
|
|
4814
4857
|
}, [typedLen, totalLength, onChange]);
|
|
4815
|
-
|
|
4858
|
+
import_react26.default.useEffect(() => {
|
|
4816
4859
|
if (typedLen === totalLength && totalLength > 0 && !doneCalledRef.current) {
|
|
4817
4860
|
doneCalledRef.current = true;
|
|
4818
4861
|
onDone?.();
|
|
4819
4862
|
}
|
|
4820
4863
|
}, [typedLen, totalLength, onDone]);
|
|
4821
|
-
const parsed =
|
|
4864
|
+
const parsed = import_react26.default.useMemo(
|
|
4822
4865
|
() => doc ? htmlToReactProgressive(doc.body, typedLen, rangeMap) : null,
|
|
4823
4866
|
[doc, typedLen, rangeMap]
|
|
4824
4867
|
);
|
|
4825
|
-
return /* @__PURE__ */ (0,
|
|
4868
|
+
return /* @__PURE__ */ (0, import_jsx_runtime328.jsx)("div", { className: "lib-xplat-htmlTypewriter", children: parsed });
|
|
4826
4869
|
};
|
|
4827
4870
|
HtmlTypeWriter.displayName = "HtmlTypeWriter";
|
|
4828
4871
|
var HtmlTypeWriter_default = HtmlTypeWriter;
|
|
4829
4872
|
|
|
4830
4873
|
// src/components/ImageSelector/ImageSelector.tsx
|
|
4831
|
-
var
|
|
4832
|
-
var
|
|
4874
|
+
var import_react27 = __toESM(require("react"), 1);
|
|
4875
|
+
var import_jsx_runtime329 = require("react/jsx-runtime");
|
|
4833
4876
|
var ImageSelector = (props) => {
|
|
4834
4877
|
const { value, label, onChange } = props;
|
|
4835
|
-
const [previewUrl, setPreviewUrl] =
|
|
4836
|
-
|
|
4878
|
+
const [previewUrl, setPreviewUrl] = import_react27.default.useState();
|
|
4879
|
+
import_react27.default.useEffect(() => {
|
|
4837
4880
|
if (!value) {
|
|
4838
4881
|
setPreviewUrl(void 0);
|
|
4839
4882
|
return;
|
|
@@ -4842,7 +4885,7 @@ var ImageSelector = (props) => {
|
|
|
4842
4885
|
setPreviewUrl(url);
|
|
4843
4886
|
return () => URL.revokeObjectURL(url);
|
|
4844
4887
|
}, [value]);
|
|
4845
|
-
const inputRef =
|
|
4888
|
+
const inputRef = import_react27.default.useRef(null);
|
|
4846
4889
|
const handleFileChange = (e) => {
|
|
4847
4890
|
const selectedFile = e.target.files?.[0];
|
|
4848
4891
|
if (selectedFile) {
|
|
@@ -4855,8 +4898,8 @@ var ImageSelector = (props) => {
|
|
|
4855
4898
|
const handleOpenFileDialog = () => {
|
|
4856
4899
|
inputRef.current?.click();
|
|
4857
4900
|
};
|
|
4858
|
-
return /* @__PURE__ */ (0,
|
|
4859
|
-
/* @__PURE__ */ (0,
|
|
4901
|
+
return /* @__PURE__ */ (0, import_jsx_runtime329.jsxs)("div", { className: `lib-xplat-imageselector${value ? "" : " none-value"}`, children: [
|
|
4902
|
+
/* @__PURE__ */ (0, import_jsx_runtime329.jsx)(
|
|
4860
4903
|
"input",
|
|
4861
4904
|
{
|
|
4862
4905
|
type: "file",
|
|
@@ -4866,13 +4909,13 @@ var ImageSelector = (props) => {
|
|
|
4866
4909
|
ref: inputRef
|
|
4867
4910
|
}
|
|
4868
4911
|
),
|
|
4869
|
-
value && /* @__PURE__ */ (0,
|
|
4870
|
-
/* @__PURE__ */ (0,
|
|
4871
|
-
/* @__PURE__ */ (0,
|
|
4912
|
+
value && /* @__PURE__ */ (0, import_jsx_runtime329.jsxs)("div", { className: "action-bar", children: [
|
|
4913
|
+
/* @__PURE__ */ (0, import_jsx_runtime329.jsx)("div", { className: "icon-wrapper", onClick: handleOpenFileDialog, children: /* @__PURE__ */ (0, import_jsx_runtime329.jsx)(UploadIcon_default, {}) }),
|
|
4914
|
+
/* @__PURE__ */ (0, import_jsx_runtime329.jsx)("div", { className: "icon-wrapper", onClick: handleDeleteFile, children: /* @__PURE__ */ (0, import_jsx_runtime329.jsx)(DeleteIcon_default, {}) })
|
|
4872
4915
|
] }),
|
|
4873
|
-
/* @__PURE__ */ (0,
|
|
4874
|
-
/* @__PURE__ */ (0,
|
|
4875
|
-
/* @__PURE__ */ (0,
|
|
4916
|
+
/* @__PURE__ */ (0, import_jsx_runtime329.jsx)("div", { className: "content", children: previewUrl ? /* @__PURE__ */ (0, import_jsx_runtime329.jsx)("img", { src: previewUrl, alt: "preview" }) : /* @__PURE__ */ (0, import_jsx_runtime329.jsxs)("div", { className: "skeleton", onClick: handleOpenFileDialog, children: [
|
|
4917
|
+
/* @__PURE__ */ (0, import_jsx_runtime329.jsx)("div", { className: "icon-wrapper", children: /* @__PURE__ */ (0, import_jsx_runtime329.jsx)(ImageIcon_default, {}) }),
|
|
4918
|
+
/* @__PURE__ */ (0, import_jsx_runtime329.jsx)("div", { className: "label", children: label || "\uC774\uBBF8\uC9C0 \uCD94\uAC00\uD558\uAE30" })
|
|
4876
4919
|
] }) })
|
|
4877
4920
|
] });
|
|
4878
4921
|
};
|
|
@@ -4880,7 +4923,7 @@ ImageSelector.displayName = "ImageSelector";
|
|
|
4880
4923
|
var ImageSelector_default = ImageSelector;
|
|
4881
4924
|
|
|
4882
4925
|
// src/components/Pagination/Pagination.tsx
|
|
4883
|
-
var
|
|
4926
|
+
var import_jsx_runtime330 = require("react/jsx-runtime");
|
|
4884
4927
|
var getPageRange = (current, totalPages, siblingCount) => {
|
|
4885
4928
|
const totalNumbers = siblingCount * 2 + 5;
|
|
4886
4929
|
if (totalPages <= totalNumbers) {
|
|
@@ -4923,19 +4966,19 @@ var Pagination = (props) => {
|
|
|
4923
4966
|
onChange?.(page);
|
|
4924
4967
|
}
|
|
4925
4968
|
};
|
|
4926
|
-
return /* @__PURE__ */ (0,
|
|
4927
|
-
/* @__PURE__ */ (0,
|
|
4969
|
+
return /* @__PURE__ */ (0, import_jsx_runtime330.jsxs)("nav", { className: clsx_default("lib-xplat-pagination", size, type), "aria-label": "\uD398\uC774\uC9C0 \uB124\uBE44\uAC8C\uC774\uC158", children: [
|
|
4970
|
+
/* @__PURE__ */ (0, import_jsx_runtime330.jsx)(
|
|
4928
4971
|
"button",
|
|
4929
4972
|
{
|
|
4930
4973
|
className: "page-btn prev",
|
|
4931
4974
|
disabled: current <= 1,
|
|
4932
4975
|
onClick: () => handleClick(current - 1),
|
|
4933
4976
|
"aria-label": "\uC774\uC804 \uD398\uC774\uC9C0",
|
|
4934
|
-
children: /* @__PURE__ */ (0,
|
|
4977
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime330.jsx)(ChevronLeftIcon_default, {})
|
|
4935
4978
|
}
|
|
4936
4979
|
),
|
|
4937
4980
|
pages.map(
|
|
4938
|
-
(page, i) => page === "..." ? /* @__PURE__ */ (0,
|
|
4981
|
+
(page, i) => page === "..." ? /* @__PURE__ */ (0, import_jsx_runtime330.jsx)("span", { className: "dots", children: "..." }, `dots-${i}`) : /* @__PURE__ */ (0, import_jsx_runtime330.jsx)(
|
|
4939
4982
|
"button",
|
|
4940
4983
|
{
|
|
4941
4984
|
className: clsx_default("page-btn", { active: page === current }),
|
|
@@ -4946,14 +4989,14 @@ var Pagination = (props) => {
|
|
|
4946
4989
|
page
|
|
4947
4990
|
)
|
|
4948
4991
|
),
|
|
4949
|
-
/* @__PURE__ */ (0,
|
|
4992
|
+
/* @__PURE__ */ (0, import_jsx_runtime330.jsx)(
|
|
4950
4993
|
"button",
|
|
4951
4994
|
{
|
|
4952
4995
|
className: "page-btn next",
|
|
4953
4996
|
disabled: current >= totalPages,
|
|
4954
4997
|
onClick: () => handleClick(current + 1),
|
|
4955
4998
|
"aria-label": "\uB2E4\uC74C \uD398\uC774\uC9C0",
|
|
4956
|
-
children: /* @__PURE__ */ (0,
|
|
4999
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime330.jsx)(ChevronRightIcon_default, {})
|
|
4957
5000
|
}
|
|
4958
5001
|
)
|
|
4959
5002
|
] });
|
|
@@ -4962,17 +5005,17 @@ Pagination.displayName = "Pagination";
|
|
|
4962
5005
|
var Pagination_default = Pagination;
|
|
4963
5006
|
|
|
4964
5007
|
// src/components/PopOver/PopOver.tsx
|
|
4965
|
-
var
|
|
4966
|
-
var
|
|
5008
|
+
var import_react28 = __toESM(require("react"), 1);
|
|
5009
|
+
var import_jsx_runtime331 = require("react/jsx-runtime");
|
|
4967
5010
|
var PopOver = (props) => {
|
|
4968
5011
|
const { children, isOpen, onClose, PopOverEl } = props;
|
|
4969
|
-
const popRef =
|
|
4970
|
-
const triggerRef =
|
|
4971
|
-
const [localOpen, setLocalOpen] =
|
|
4972
|
-
const [eventTrigger, setEventTrigger] =
|
|
5012
|
+
const popRef = import_react28.default.useRef(null);
|
|
5013
|
+
const triggerRef = import_react28.default.useRef(null);
|
|
5014
|
+
const [localOpen, setLocalOpen] = import_react28.default.useState(false);
|
|
5015
|
+
const [eventTrigger, setEventTrigger] = import_react28.default.useState(false);
|
|
4973
5016
|
useClickOutside_default([popRef, triggerRef], onClose, isOpen);
|
|
4974
5017
|
const position = useAutoPosition_default(triggerRef, popRef, localOpen);
|
|
4975
|
-
|
|
5018
|
+
import_react28.default.useEffect(() => {
|
|
4976
5019
|
if (isOpen) {
|
|
4977
5020
|
setLocalOpen(isOpen);
|
|
4978
5021
|
setTimeout(() => {
|
|
@@ -4985,7 +5028,7 @@ var PopOver = (props) => {
|
|
|
4985
5028
|
}, 200);
|
|
4986
5029
|
}
|
|
4987
5030
|
}, [isOpen]);
|
|
4988
|
-
return /* @__PURE__ */ (0,
|
|
5031
|
+
return /* @__PURE__ */ (0, import_jsx_runtime331.jsxs)(
|
|
4989
5032
|
"div",
|
|
4990
5033
|
{
|
|
4991
5034
|
className: "lib-xplat-pop-over",
|
|
@@ -4995,7 +5038,7 @@ var PopOver = (props) => {
|
|
|
4995
5038
|
},
|
|
4996
5039
|
children: [
|
|
4997
5040
|
children,
|
|
4998
|
-
localOpen && /* @__PURE__ */ (0,
|
|
5041
|
+
localOpen && /* @__PURE__ */ (0, import_jsx_runtime331.jsx)(Portal_default, { children: /* @__PURE__ */ (0, import_jsx_runtime331.jsx)(
|
|
4999
5042
|
"div",
|
|
5000
5043
|
{
|
|
5001
5044
|
className: clsx_default(
|
|
@@ -5018,7 +5061,7 @@ PopOver.displayName = "PopOver";
|
|
|
5018
5061
|
var PopOver_default = PopOver;
|
|
5019
5062
|
|
|
5020
5063
|
// src/components/Progress/Progress.tsx
|
|
5021
|
-
var
|
|
5064
|
+
var import_jsx_runtime332 = require("react/jsx-runtime");
|
|
5022
5065
|
var Progress = (props) => {
|
|
5023
5066
|
const {
|
|
5024
5067
|
value,
|
|
@@ -5028,8 +5071,8 @@ var Progress = (props) => {
|
|
|
5028
5071
|
showLabel = false
|
|
5029
5072
|
} = props;
|
|
5030
5073
|
const percentage = Math.min(100, Math.max(0, value / max * 100));
|
|
5031
|
-
return /* @__PURE__ */ (0,
|
|
5032
|
-
/* @__PURE__ */ (0,
|
|
5074
|
+
return /* @__PURE__ */ (0, import_jsx_runtime332.jsxs)("div", { className: clsx_default("lib-xplat-progress", size, type), children: [
|
|
5075
|
+
/* @__PURE__ */ (0, import_jsx_runtime332.jsx)(
|
|
5033
5076
|
"div",
|
|
5034
5077
|
{
|
|
5035
5078
|
className: "track",
|
|
@@ -5037,7 +5080,7 @@ var Progress = (props) => {
|
|
|
5037
5080
|
"aria-valuenow": value,
|
|
5038
5081
|
"aria-valuemin": 0,
|
|
5039
5082
|
"aria-valuemax": max,
|
|
5040
|
-
children: /* @__PURE__ */ (0,
|
|
5083
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime332.jsx)(
|
|
5041
5084
|
"div",
|
|
5042
5085
|
{
|
|
5043
5086
|
className: "bar",
|
|
@@ -5046,7 +5089,7 @@ var Progress = (props) => {
|
|
|
5046
5089
|
)
|
|
5047
5090
|
}
|
|
5048
5091
|
),
|
|
5049
|
-
showLabel && /* @__PURE__ */ (0,
|
|
5092
|
+
showLabel && /* @__PURE__ */ (0, import_jsx_runtime332.jsxs)("span", { className: "label", children: [
|
|
5050
5093
|
Math.round(percentage),
|
|
5051
5094
|
"%"
|
|
5052
5095
|
] })
|
|
@@ -5056,17 +5099,17 @@ Progress.displayName = "Progress";
|
|
|
5056
5099
|
var Progress_default = Progress;
|
|
5057
5100
|
|
|
5058
5101
|
// src/components/Radio/RadioGroupContext.tsx
|
|
5059
|
-
var
|
|
5060
|
-
var RadioGroupContext =
|
|
5102
|
+
var import_react29 = __toESM(require("react"), 1);
|
|
5103
|
+
var RadioGroupContext = import_react29.default.createContext(
|
|
5061
5104
|
null
|
|
5062
5105
|
);
|
|
5063
5106
|
var useRadioGroupContext = () => {
|
|
5064
|
-
return
|
|
5107
|
+
return import_react29.default.useContext(RadioGroupContext);
|
|
5065
5108
|
};
|
|
5066
5109
|
var RadioGroupContext_default = RadioGroupContext;
|
|
5067
5110
|
|
|
5068
5111
|
// src/components/Radio/Radio.tsx
|
|
5069
|
-
var
|
|
5112
|
+
var import_jsx_runtime333 = require("react/jsx-runtime");
|
|
5070
5113
|
var Radio = (props) => {
|
|
5071
5114
|
const {
|
|
5072
5115
|
label,
|
|
@@ -5085,7 +5128,7 @@ var Radio = (props) => {
|
|
|
5085
5128
|
value,
|
|
5086
5129
|
onChange: rest.onChange
|
|
5087
5130
|
};
|
|
5088
|
-
return /* @__PURE__ */ (0,
|
|
5131
|
+
return /* @__PURE__ */ (0, import_jsx_runtime333.jsxs)(
|
|
5089
5132
|
"label",
|
|
5090
5133
|
{
|
|
5091
5134
|
className: clsx_default(
|
|
@@ -5096,18 +5139,18 @@ var Radio = (props) => {
|
|
|
5096
5139
|
className
|
|
5097
5140
|
),
|
|
5098
5141
|
children: [
|
|
5099
|
-
/* @__PURE__ */ (0,
|
|
5100
|
-
/* @__PURE__ */ (0,
|
|
5142
|
+
/* @__PURE__ */ (0, import_jsx_runtime333.jsx)("input", { ...rest, ...inputProps, checked: localChecked, type: "radio" }),
|
|
5143
|
+
/* @__PURE__ */ (0, import_jsx_runtime333.jsx)(
|
|
5101
5144
|
"div",
|
|
5102
5145
|
{
|
|
5103
5146
|
className: clsx_default(
|
|
5104
5147
|
"circle",
|
|
5105
5148
|
localChecked ? "checked" : void 0
|
|
5106
5149
|
),
|
|
5107
|
-
children: localChecked && /* @__PURE__ */ (0,
|
|
5150
|
+
children: localChecked && /* @__PURE__ */ (0, import_jsx_runtime333.jsx)("div", { className: "inner-circle" })
|
|
5108
5151
|
}
|
|
5109
5152
|
),
|
|
5110
|
-
label && /* @__PURE__ */ (0,
|
|
5153
|
+
label && /* @__PURE__ */ (0, import_jsx_runtime333.jsx)("span", { children: label })
|
|
5111
5154
|
]
|
|
5112
5155
|
}
|
|
5113
5156
|
);
|
|
@@ -5116,28 +5159,28 @@ Radio.displayName = "Radio";
|
|
|
5116
5159
|
var Radio_default = Radio;
|
|
5117
5160
|
|
|
5118
5161
|
// src/components/Radio/RadioGroup.tsx
|
|
5119
|
-
var
|
|
5162
|
+
var import_jsx_runtime334 = require("react/jsx-runtime");
|
|
5120
5163
|
var RadioGroup = (props) => {
|
|
5121
5164
|
const { children, ...rest } = props;
|
|
5122
|
-
return /* @__PURE__ */ (0,
|
|
5165
|
+
return /* @__PURE__ */ (0, import_jsx_runtime334.jsx)(import_jsx_runtime334.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime334.jsx)(RadioGroupContext_default.Provider, { value: rest, children }) });
|
|
5123
5166
|
};
|
|
5124
5167
|
RadioGroup.displayName = "RadioGroup";
|
|
5125
5168
|
var RadioGroup_default = RadioGroup;
|
|
5126
5169
|
|
|
5127
5170
|
// src/components/Select/Select.tsx
|
|
5128
|
-
var
|
|
5171
|
+
var import_react32 = __toESM(require("react"), 1);
|
|
5129
5172
|
|
|
5130
5173
|
// src/components/Select/context.ts
|
|
5131
|
-
var
|
|
5132
|
-
var SelectContext =
|
|
5174
|
+
var import_react30 = __toESM(require("react"), 1);
|
|
5175
|
+
var SelectContext = import_react30.default.createContext(null);
|
|
5133
5176
|
var context_default = SelectContext;
|
|
5134
5177
|
|
|
5135
5178
|
// src/components/Select/SelectItem.tsx
|
|
5136
|
-
var
|
|
5137
|
-
var
|
|
5179
|
+
var import_react31 = __toESM(require("react"), 1);
|
|
5180
|
+
var import_jsx_runtime335 = require("react/jsx-runtime");
|
|
5138
5181
|
var SelectItem = (props) => {
|
|
5139
5182
|
const { children, value, onClick, disabled = false } = props;
|
|
5140
|
-
const ctx =
|
|
5183
|
+
const ctx = import_react31.default.useContext(context_default);
|
|
5141
5184
|
const handleClick = (e) => {
|
|
5142
5185
|
e.preventDefault();
|
|
5143
5186
|
e.stopPropagation();
|
|
@@ -5147,7 +5190,7 @@ var SelectItem = (props) => {
|
|
|
5147
5190
|
onClick?.();
|
|
5148
5191
|
};
|
|
5149
5192
|
const isSelected = value !== void 0 ? ctx?.selectedValue === value : ctx?.selectedLabel === children;
|
|
5150
|
-
return /* @__PURE__ */ (0,
|
|
5193
|
+
return /* @__PURE__ */ (0, import_jsx_runtime335.jsx)(
|
|
5151
5194
|
"div",
|
|
5152
5195
|
{
|
|
5153
5196
|
className: clsx_default("select-item", disabled && "disabled", isSelected && "is-selected"),
|
|
@@ -5168,7 +5211,7 @@ SelectItem.displayName = "Select.Item";
|
|
|
5168
5211
|
var SelectItem_default = SelectItem;
|
|
5169
5212
|
|
|
5170
5213
|
// src/components/Select/Select.tsx
|
|
5171
|
-
var
|
|
5214
|
+
var import_jsx_runtime336 = require("react/jsx-runtime");
|
|
5172
5215
|
var ANIMATION_DURATION_MS3 = 200;
|
|
5173
5216
|
var SelectRoot = (props) => {
|
|
5174
5217
|
const {
|
|
@@ -5180,28 +5223,28 @@ var SelectRoot = (props) => {
|
|
|
5180
5223
|
error = false,
|
|
5181
5224
|
size = "md"
|
|
5182
5225
|
} = props;
|
|
5183
|
-
const itemChildren =
|
|
5184
|
-
(child) =>
|
|
5226
|
+
const itemChildren = import_react32.default.Children.toArray(children).filter(
|
|
5227
|
+
(child) => import_react32.default.isValidElement(child) && child.type === SelectItem_default
|
|
5185
5228
|
);
|
|
5186
5229
|
const isControlled = valueProp !== void 0;
|
|
5187
|
-
const [isOpen, setOpen] =
|
|
5188
|
-
const [uncontrolledLabel, setUncontrolledLabel] =
|
|
5189
|
-
const [uncontrolledValue, setUncontrolledValue] =
|
|
5190
|
-
const controlledLabel =
|
|
5230
|
+
const [isOpen, setOpen] = import_react32.default.useState(false);
|
|
5231
|
+
const [uncontrolledLabel, setUncontrolledLabel] = import_react32.default.useState(null);
|
|
5232
|
+
const [uncontrolledValue, setUncontrolledValue] = import_react32.default.useState(void 0);
|
|
5233
|
+
const controlledLabel = import_react32.default.useMemo(() => {
|
|
5191
5234
|
if (!isControlled) return null;
|
|
5192
5235
|
const match = itemChildren.find((child) => child.props.value === valueProp);
|
|
5193
5236
|
return match ? match.props.children : null;
|
|
5194
5237
|
}, [isControlled, valueProp, itemChildren]);
|
|
5195
5238
|
const selectedLabel = isControlled ? controlledLabel : uncontrolledLabel;
|
|
5196
5239
|
const selectedValue = isControlled ? valueProp : uncontrolledValue;
|
|
5197
|
-
const triggerRef =
|
|
5198
|
-
const contentRef =
|
|
5199
|
-
const [mounted, setMounted] =
|
|
5200
|
-
const [visible, setVisible] =
|
|
5201
|
-
|
|
5240
|
+
const triggerRef = import_react32.default.useRef(null);
|
|
5241
|
+
const contentRef = import_react32.default.useRef(null);
|
|
5242
|
+
const [mounted, setMounted] = import_react32.default.useState(false);
|
|
5243
|
+
const [visible, setVisible] = import_react32.default.useState(false);
|
|
5244
|
+
import_react32.default.useEffect(() => {
|
|
5202
5245
|
if (disabled && isOpen) setOpen(false);
|
|
5203
5246
|
}, [disabled, isOpen]);
|
|
5204
|
-
|
|
5247
|
+
import_react32.default.useEffect(() => {
|
|
5205
5248
|
if (isOpen) {
|
|
5206
5249
|
setMounted(true);
|
|
5207
5250
|
const t2 = setTimeout(() => setVisible(true), 1);
|
|
@@ -5211,12 +5254,12 @@ var SelectRoot = (props) => {
|
|
|
5211
5254
|
const t = setTimeout(() => setMounted(false), ANIMATION_DURATION_MS3);
|
|
5212
5255
|
return () => clearTimeout(t);
|
|
5213
5256
|
}, [isOpen]);
|
|
5214
|
-
const open =
|
|
5215
|
-
const close =
|
|
5216
|
-
const toggle =
|
|
5257
|
+
const open = import_react32.default.useCallback(() => setOpen(true), []);
|
|
5258
|
+
const close = import_react32.default.useCallback(() => setOpen(false), []);
|
|
5259
|
+
const toggle = import_react32.default.useCallback(() => setOpen((prev) => !prev), []);
|
|
5217
5260
|
useClickOutside_default([contentRef, triggerRef], close, isOpen);
|
|
5218
5261
|
const position = useAutoPosition_default(triggerRef, contentRef, mounted);
|
|
5219
|
-
const setSelected =
|
|
5262
|
+
const setSelected = import_react32.default.useCallback(
|
|
5220
5263
|
(label, itemValue) => {
|
|
5221
5264
|
if (!isControlled) {
|
|
5222
5265
|
setUncontrolledLabel(label);
|
|
@@ -5226,7 +5269,7 @@ var SelectRoot = (props) => {
|
|
|
5226
5269
|
},
|
|
5227
5270
|
[isControlled, onChange]
|
|
5228
5271
|
);
|
|
5229
|
-
const ctxValue =
|
|
5272
|
+
const ctxValue = import_react32.default.useMemo(
|
|
5230
5273
|
() => ({
|
|
5231
5274
|
isOpen,
|
|
5232
5275
|
mounted,
|
|
@@ -5248,7 +5291,7 @@ var SelectRoot = (props) => {
|
|
|
5248
5291
|
if (disabled) return;
|
|
5249
5292
|
toggle();
|
|
5250
5293
|
};
|
|
5251
|
-
return /* @__PURE__ */ (0,
|
|
5294
|
+
return /* @__PURE__ */ (0, import_jsx_runtime336.jsx)(context_default.Provider, { value: ctxValue, children: /* @__PURE__ */ (0, import_jsx_runtime336.jsxs)(
|
|
5252
5295
|
"div",
|
|
5253
5296
|
{
|
|
5254
5297
|
className: clsx_default(
|
|
@@ -5259,7 +5302,7 @@ var SelectRoot = (props) => {
|
|
|
5259
5302
|
mounted && "is-open"
|
|
5260
5303
|
),
|
|
5261
5304
|
children: [
|
|
5262
|
-
/* @__PURE__ */ (0,
|
|
5305
|
+
/* @__PURE__ */ (0, import_jsx_runtime336.jsxs)(
|
|
5263
5306
|
"div",
|
|
5264
5307
|
{
|
|
5265
5308
|
ref: triggerRef,
|
|
@@ -5283,7 +5326,7 @@ var SelectRoot = (props) => {
|
|
|
5283
5326
|
}
|
|
5284
5327
|
},
|
|
5285
5328
|
children: [
|
|
5286
|
-
/* @__PURE__ */ (0,
|
|
5329
|
+
/* @__PURE__ */ (0, import_jsx_runtime336.jsx)(
|
|
5287
5330
|
"span",
|
|
5288
5331
|
{
|
|
5289
5332
|
className: clsx_default(
|
|
@@ -5293,25 +5336,25 @@ var SelectRoot = (props) => {
|
|
|
5293
5336
|
children: selectedLabel ?? placeholder
|
|
5294
5337
|
}
|
|
5295
5338
|
),
|
|
5296
|
-
/* @__PURE__ */ (0,
|
|
5339
|
+
/* @__PURE__ */ (0, import_jsx_runtime336.jsx)(
|
|
5297
5340
|
"span",
|
|
5298
5341
|
{
|
|
5299
5342
|
className: clsx_default("select-trigger-icon", isOpen && "open"),
|
|
5300
5343
|
"aria-hidden": true,
|
|
5301
|
-
children: /* @__PURE__ */ (0,
|
|
5344
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime336.jsx)(ChevronDownIcon_default, {})
|
|
5302
5345
|
}
|
|
5303
5346
|
)
|
|
5304
5347
|
]
|
|
5305
5348
|
}
|
|
5306
5349
|
),
|
|
5307
|
-
mounted && /* @__PURE__ */ (0,
|
|
5350
|
+
mounted && /* @__PURE__ */ (0, import_jsx_runtime336.jsx)(Portal_default, { children: /* @__PURE__ */ (0, import_jsx_runtime336.jsx)(
|
|
5308
5351
|
"div",
|
|
5309
5352
|
{
|
|
5310
5353
|
className: clsx_default("lib-xplat-select-content", size, position.direction, stateClass),
|
|
5311
5354
|
ref: contentRef,
|
|
5312
5355
|
style: { ...position.position, width: triggerRef.current?.offsetWidth },
|
|
5313
5356
|
role: "listbox",
|
|
5314
|
-
children: /* @__PURE__ */ (0,
|
|
5357
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime336.jsx)(context_default.Provider, { value: ctxValue, children: itemChildren })
|
|
5315
5358
|
}
|
|
5316
5359
|
) })
|
|
5317
5360
|
]
|
|
@@ -5325,7 +5368,7 @@ var Select = Object.assign(SelectRoot, {
|
|
|
5325
5368
|
var Select_default = Select;
|
|
5326
5369
|
|
|
5327
5370
|
// src/components/Skeleton/Skeleton.tsx
|
|
5328
|
-
var
|
|
5371
|
+
var import_jsx_runtime337 = require("react/jsx-runtime");
|
|
5329
5372
|
var SIZE_MAP = {
|
|
5330
5373
|
xs: "var(--spacing-size-1)",
|
|
5331
5374
|
sm: "var(--spacing-size-2)",
|
|
@@ -5341,7 +5384,7 @@ var Skeleton = (props) => {
|
|
|
5341
5384
|
...width != null && { width: SIZE_MAP[width] },
|
|
5342
5385
|
...height != null && { height: SIZE_MAP[height] }
|
|
5343
5386
|
};
|
|
5344
|
-
return /* @__PURE__ */ (0,
|
|
5387
|
+
return /* @__PURE__ */ (0, import_jsx_runtime337.jsx)(
|
|
5345
5388
|
"div",
|
|
5346
5389
|
{
|
|
5347
5390
|
className: clsx_default("lib-xplat-skeleton", variant),
|
|
@@ -5354,20 +5397,20 @@ Skeleton.displayName = "Skeleton";
|
|
|
5354
5397
|
var Skeleton_default = Skeleton;
|
|
5355
5398
|
|
|
5356
5399
|
// src/components/Spinner/Spinner.tsx
|
|
5357
|
-
var
|
|
5400
|
+
var import_jsx_runtime338 = require("react/jsx-runtime");
|
|
5358
5401
|
var Spinner = (props) => {
|
|
5359
5402
|
const {
|
|
5360
5403
|
size = "md",
|
|
5361
5404
|
type = "brand"
|
|
5362
5405
|
} = props;
|
|
5363
|
-
return /* @__PURE__ */ (0,
|
|
5406
|
+
return /* @__PURE__ */ (0, import_jsx_runtime338.jsx)(
|
|
5364
5407
|
"div",
|
|
5365
5408
|
{
|
|
5366
5409
|
className: clsx_default("lib-xplat-spinner", size, type),
|
|
5367
5410
|
role: "status",
|
|
5368
5411
|
"aria-label": "\uB85C\uB529 \uC911",
|
|
5369
|
-
children: /* @__PURE__ */ (0,
|
|
5370
|
-
/* @__PURE__ */ (0,
|
|
5412
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime338.jsxs)("svg", { viewBox: "0 0 24 24", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: [
|
|
5413
|
+
/* @__PURE__ */ (0, import_jsx_runtime338.jsx)(
|
|
5371
5414
|
"circle",
|
|
5372
5415
|
{
|
|
5373
5416
|
className: "track",
|
|
@@ -5377,7 +5420,7 @@ var Spinner = (props) => {
|
|
|
5377
5420
|
strokeWidth: "3"
|
|
5378
5421
|
}
|
|
5379
5422
|
),
|
|
5380
|
-
/* @__PURE__ */ (0,
|
|
5423
|
+
/* @__PURE__ */ (0, import_jsx_runtime338.jsx)(
|
|
5381
5424
|
"circle",
|
|
5382
5425
|
{
|
|
5383
5426
|
className: "indicator",
|
|
@@ -5396,20 +5439,20 @@ Spinner.displayName = "Spinner";
|
|
|
5396
5439
|
var Spinner_default = Spinner;
|
|
5397
5440
|
|
|
5398
5441
|
// src/components/Steps/Steps.tsx
|
|
5399
|
-
var
|
|
5442
|
+
var import_jsx_runtime339 = require("react/jsx-runtime");
|
|
5400
5443
|
var Steps = (props) => {
|
|
5401
5444
|
const {
|
|
5402
5445
|
items,
|
|
5403
5446
|
current,
|
|
5404
5447
|
type = "brand"
|
|
5405
5448
|
} = props;
|
|
5406
|
-
return /* @__PURE__ */ (0,
|
|
5449
|
+
return /* @__PURE__ */ (0, import_jsx_runtime339.jsx)("div", { className: clsx_default("lib-xplat-steps", type), children: items.map((item, index) => {
|
|
5407
5450
|
const status = index < current ? "completed" : index === current ? "active" : "pending";
|
|
5408
|
-
return /* @__PURE__ */ (0,
|
|
5409
|
-
/* @__PURE__ */ (0,
|
|
5410
|
-
/* @__PURE__ */ (0,
|
|
5411
|
-
/* @__PURE__ */ (0,
|
|
5412
|
-
item.description && /* @__PURE__ */ (0,
|
|
5451
|
+
return /* @__PURE__ */ (0, import_jsx_runtime339.jsxs)("div", { className: clsx_default("step-item", status), children: [
|
|
5452
|
+
/* @__PURE__ */ (0, import_jsx_runtime339.jsx)("div", { className: "step-circle", children: status === "completed" ? /* @__PURE__ */ (0, import_jsx_runtime339.jsx)(CheckIcon_default, {}) : /* @__PURE__ */ (0, import_jsx_runtime339.jsx)("span", { children: index + 1 }) }),
|
|
5453
|
+
/* @__PURE__ */ (0, import_jsx_runtime339.jsxs)("div", { className: "step-content", children: [
|
|
5454
|
+
/* @__PURE__ */ (0, import_jsx_runtime339.jsx)("span", { className: "step-title", children: item.title }),
|
|
5455
|
+
item.description && /* @__PURE__ */ (0, import_jsx_runtime339.jsx)("span", { className: "step-description", children: item.description })
|
|
5413
5456
|
] })
|
|
5414
5457
|
] }, index);
|
|
5415
5458
|
}) });
|
|
@@ -5418,8 +5461,8 @@ Steps.displayName = "Steps";
|
|
|
5418
5461
|
var Steps_default = Steps;
|
|
5419
5462
|
|
|
5420
5463
|
// src/components/Swiper/Swiper.tsx
|
|
5421
|
-
var
|
|
5422
|
-
var
|
|
5464
|
+
var import_react33 = __toESM(require("react"), 1);
|
|
5465
|
+
var import_jsx_runtime340 = require("react/jsx-runtime");
|
|
5423
5466
|
var Swiper = (props) => {
|
|
5424
5467
|
const {
|
|
5425
5468
|
auto = false,
|
|
@@ -5443,26 +5486,26 @@ var Swiper = (props) => {
|
|
|
5443
5486
|
const maxIndex = Math.max(0, totalSlides - viewItemCount);
|
|
5444
5487
|
const useLoop = loop && canSlide;
|
|
5445
5488
|
const cloneCount = useLoop ? totalSlides : 0;
|
|
5446
|
-
const extendedItems =
|
|
5489
|
+
const extendedItems = import_react33.default.useMemo(() => {
|
|
5447
5490
|
if (!useLoop) return items;
|
|
5448
5491
|
return [...items, ...items, ...items];
|
|
5449
5492
|
}, [items, useLoop]);
|
|
5450
5493
|
const initialIdx = Math.max(0, Math.min(indexProp ?? 0, maxIndex));
|
|
5451
|
-
const [innerIndex, setInnerIndex] =
|
|
5494
|
+
const [innerIndex, setInnerIndex] = import_react33.default.useState(
|
|
5452
5495
|
useLoop ? cloneCount + initialIdx : initialIdx
|
|
5453
5496
|
);
|
|
5454
|
-
const [isDragging, setIsDragging] =
|
|
5455
|
-
const [dragOffset, setDragOffset] =
|
|
5456
|
-
const [animated, setAnimated] =
|
|
5457
|
-
const [containerWidth, setContainerWidth] =
|
|
5458
|
-
const containerRef =
|
|
5459
|
-
const startXRef =
|
|
5460
|
-
const startTimeRef =
|
|
5461
|
-
const autoplayTimerRef =
|
|
5462
|
-
const resumeTimeoutRef =
|
|
5463
|
-
const [paused, setPaused] =
|
|
5464
|
-
const initializedRef =
|
|
5465
|
-
|
|
5497
|
+
const [isDragging, setIsDragging] = import_react33.default.useState(false);
|
|
5498
|
+
const [dragOffset, setDragOffset] = import_react33.default.useState(0);
|
|
5499
|
+
const [animated, setAnimated] = import_react33.default.useState(false);
|
|
5500
|
+
const [containerWidth, setContainerWidth] = import_react33.default.useState(0);
|
|
5501
|
+
const containerRef = import_react33.default.useRef(null);
|
|
5502
|
+
const startXRef = import_react33.default.useRef(0);
|
|
5503
|
+
const startTimeRef = import_react33.default.useRef(0);
|
|
5504
|
+
const autoplayTimerRef = import_react33.default.useRef(null);
|
|
5505
|
+
const resumeTimeoutRef = import_react33.default.useRef(null);
|
|
5506
|
+
const [paused, setPaused] = import_react33.default.useState(false);
|
|
5507
|
+
const initializedRef = import_react33.default.useRef(false);
|
|
5508
|
+
import_react33.default.useEffect(() => {
|
|
5466
5509
|
const el = containerRef.current;
|
|
5467
5510
|
if (!el) return;
|
|
5468
5511
|
const ro = new ResizeObserver((entries) => {
|
|
@@ -5485,7 +5528,7 @@ var Swiper = (props) => {
|
|
|
5485
5528
|
return ((inner - cloneCount) % totalSlides + totalSlides) % totalSlides;
|
|
5486
5529
|
};
|
|
5487
5530
|
const realIndex = getRealIndex(innerIndex);
|
|
5488
|
-
const moveToInner =
|
|
5531
|
+
const moveToInner = import_react33.default.useCallback(
|
|
5489
5532
|
(idx, withAnim = true) => {
|
|
5490
5533
|
if (!useLoop) {
|
|
5491
5534
|
setAnimated(withAnim);
|
|
@@ -5513,7 +5556,7 @@ var Swiper = (props) => {
|
|
|
5513
5556
|
},
|
|
5514
5557
|
[useLoop, cloneCount, totalSlides]
|
|
5515
5558
|
);
|
|
5516
|
-
const handleTransitionEnd =
|
|
5559
|
+
const handleTransitionEnd = import_react33.default.useCallback(() => {
|
|
5517
5560
|
if (!useLoop) return;
|
|
5518
5561
|
const real = getRealIndex(innerIndex);
|
|
5519
5562
|
const canonical = cloneCount + real;
|
|
@@ -5523,7 +5566,7 @@ var Swiper = (props) => {
|
|
|
5523
5566
|
}
|
|
5524
5567
|
onChange?.(Math.min(real, maxIndex));
|
|
5525
5568
|
}, [useLoop, innerIndex, cloneCount, totalSlides, maxIndex, onChange]);
|
|
5526
|
-
const slideTo =
|
|
5569
|
+
const slideTo = import_react33.default.useCallback(
|
|
5527
5570
|
(logicalIndex) => {
|
|
5528
5571
|
if (!canSlide) return;
|
|
5529
5572
|
const clamped = useLoop ? logicalIndex : Math.max(0, Math.min(logicalIndex, maxIndex));
|
|
@@ -5533,7 +5576,7 @@ var Swiper = (props) => {
|
|
|
5533
5576
|
},
|
|
5534
5577
|
[canSlide, useLoop, cloneCount, maxIndex, onChange, moveToInner]
|
|
5535
5578
|
);
|
|
5536
|
-
const slideNext =
|
|
5579
|
+
const slideNext = import_react33.default.useCallback(() => {
|
|
5537
5580
|
if (!canSlide) return;
|
|
5538
5581
|
const nextInner = innerIndex + slideBy;
|
|
5539
5582
|
if (useLoop) {
|
|
@@ -5542,7 +5585,7 @@ var Swiper = (props) => {
|
|
|
5542
5585
|
moveToInner(Math.min(nextInner, maxIndex), true);
|
|
5543
5586
|
}
|
|
5544
5587
|
}, [canSlide, useLoop, innerIndex, slideBy, maxIndex, moveToInner]);
|
|
5545
|
-
const slidePrev =
|
|
5588
|
+
const slidePrev = import_react33.default.useCallback(() => {
|
|
5546
5589
|
if (!canSlide) return;
|
|
5547
5590
|
const prevInner = innerIndex - slideBy;
|
|
5548
5591
|
if (useLoop) {
|
|
@@ -5551,7 +5594,7 @@ var Swiper = (props) => {
|
|
|
5551
5594
|
moveToInner(Math.max(prevInner, 0), true);
|
|
5552
5595
|
}
|
|
5553
5596
|
}, [canSlide, useLoop, innerIndex, slideBy, moveToInner]);
|
|
5554
|
-
|
|
5597
|
+
import_react33.default.useEffect(() => {
|
|
5555
5598
|
if (indexProp === void 0) return;
|
|
5556
5599
|
const clamped = Math.max(0, Math.min(indexProp, maxIndex));
|
|
5557
5600
|
const target = useLoop ? cloneCount + clamped : clamped;
|
|
@@ -5559,12 +5602,12 @@ var Swiper = (props) => {
|
|
|
5559
5602
|
moveToInner(target, true);
|
|
5560
5603
|
}
|
|
5561
5604
|
}, [indexProp]);
|
|
5562
|
-
|
|
5605
|
+
import_react33.default.useImperativeHandle(swiperRef, () => ({
|
|
5563
5606
|
slidePrev,
|
|
5564
5607
|
slideNext,
|
|
5565
5608
|
slideTo
|
|
5566
5609
|
}));
|
|
5567
|
-
|
|
5610
|
+
import_react33.default.useEffect(() => {
|
|
5568
5611
|
if (!auto || !canSlide || paused) return;
|
|
5569
5612
|
autoplayTimerRef.current = setInterval(slideNext, autoplayDelay);
|
|
5570
5613
|
return () => {
|
|
@@ -5590,7 +5633,7 @@ var Swiper = (props) => {
|
|
|
5590
5633
|
resumeTimeoutRef.current = null;
|
|
5591
5634
|
}, pauseOnInteraction);
|
|
5592
5635
|
};
|
|
5593
|
-
|
|
5636
|
+
import_react33.default.useEffect(() => {
|
|
5594
5637
|
return () => {
|
|
5595
5638
|
if (resumeTimeoutRef.current) clearTimeout(resumeTimeoutRef.current);
|
|
5596
5639
|
};
|
|
@@ -5608,7 +5651,7 @@ var Swiper = (props) => {
|
|
|
5608
5651
|
startXRef.current = getClientX(e);
|
|
5609
5652
|
startTimeRef.current = Date.now();
|
|
5610
5653
|
};
|
|
5611
|
-
|
|
5654
|
+
import_react33.default.useEffect(() => {
|
|
5612
5655
|
if (!isDragging) return;
|
|
5613
5656
|
const handleMove = (e) => {
|
|
5614
5657
|
setDragOffset(getClientX(e) - startXRef.current);
|
|
@@ -5647,8 +5690,8 @@ var Swiper = (props) => {
|
|
|
5647
5690
|
}, [isDragging, dragOffset, innerIndex, useLoop, maxIndex, slideStep, moveToInner]);
|
|
5648
5691
|
const slideWidthPercent = 100 / viewItemCount;
|
|
5649
5692
|
const gapAdjust = spaceBetween * (viewItemCount - 1) / viewItemCount;
|
|
5650
|
-
const slideElements =
|
|
5651
|
-
() => extendedItems.map((item, idx) => /* @__PURE__ */ (0,
|
|
5693
|
+
const slideElements = import_react33.default.useMemo(
|
|
5694
|
+
() => extendedItems.map((item, idx) => /* @__PURE__ */ (0, import_jsx_runtime340.jsx)(
|
|
5652
5695
|
"div",
|
|
5653
5696
|
{
|
|
5654
5697
|
className: "lib-xplat-swiper__slide",
|
|
@@ -5667,15 +5710,15 @@ var Swiper = (props) => {
|
|
|
5667
5710
|
Math.floor(realIndex / slideBy),
|
|
5668
5711
|
totalSteps - 1
|
|
5669
5712
|
);
|
|
5670
|
-
return /* @__PURE__ */ (0,
|
|
5671
|
-
/* @__PURE__ */ (0,
|
|
5713
|
+
return /* @__PURE__ */ (0, import_jsx_runtime340.jsxs)("div", { className: "lib-xplat-swiper", ref: containerRef, children: [
|
|
5714
|
+
/* @__PURE__ */ (0, import_jsx_runtime340.jsx)(
|
|
5672
5715
|
"div",
|
|
5673
5716
|
{
|
|
5674
5717
|
className: "lib-xplat-swiper__viewport",
|
|
5675
5718
|
onMouseDown: handleDragStart,
|
|
5676
5719
|
onTouchStart: handleDragStart,
|
|
5677
5720
|
onDragStart: (e) => e.preventDefault(),
|
|
5678
|
-
children: /* @__PURE__ */ (0,
|
|
5721
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime340.jsx)(
|
|
5679
5722
|
"div",
|
|
5680
5723
|
{
|
|
5681
5724
|
className: clsx_default(
|
|
@@ -5693,7 +5736,7 @@ var Swiper = (props) => {
|
|
|
5693
5736
|
)
|
|
5694
5737
|
}
|
|
5695
5738
|
),
|
|
5696
|
-
showProgress && canSlide && /* @__PURE__ */ (0,
|
|
5739
|
+
showProgress && canSlide && /* @__PURE__ */ (0, import_jsx_runtime340.jsx)("div", { className: "lib-xplat-swiper__progress", children: /* @__PURE__ */ (0, import_jsx_runtime340.jsx)("div", { className: "lib-xplat-swiper__progress-track", children: /* @__PURE__ */ (0, import_jsx_runtime340.jsx)(
|
|
5697
5740
|
"span",
|
|
5698
5741
|
{
|
|
5699
5742
|
className: "lib-xplat-swiper__progress-fill",
|
|
@@ -5703,7 +5746,7 @@ var Swiper = (props) => {
|
|
|
5703
5746
|
}
|
|
5704
5747
|
}
|
|
5705
5748
|
) }) }),
|
|
5706
|
-
canSlide && /* @__PURE__ */ (0,
|
|
5749
|
+
canSlide && /* @__PURE__ */ (0, import_jsx_runtime340.jsx)("div", { className: "lib-xplat-swiper__dots", children: Array.from({ length: totalSteps }, (_, i) => /* @__PURE__ */ (0, import_jsx_runtime340.jsx)(
|
|
5707
5750
|
"button",
|
|
5708
5751
|
{
|
|
5709
5752
|
className: clsx_default(
|
|
@@ -5721,8 +5764,8 @@ Swiper.displayName = "Swiper";
|
|
|
5721
5764
|
var Swiper_default = Swiper;
|
|
5722
5765
|
|
|
5723
5766
|
// src/components/Switch/Switch.tsx
|
|
5724
|
-
var
|
|
5725
|
-
var
|
|
5767
|
+
var import_react34 = __toESM(require("react"), 1);
|
|
5768
|
+
var import_jsx_runtime341 = require("react/jsx-runtime");
|
|
5726
5769
|
var KNOB_TRANSITION_MS = 250;
|
|
5727
5770
|
var Switch = (props) => {
|
|
5728
5771
|
const {
|
|
@@ -5732,9 +5775,9 @@ var Switch = (props) => {
|
|
|
5732
5775
|
disabled,
|
|
5733
5776
|
onChange
|
|
5734
5777
|
} = props;
|
|
5735
|
-
const [isAnimating, setIsAnimating] =
|
|
5736
|
-
const timeoutRef =
|
|
5737
|
-
|
|
5778
|
+
const [isAnimating, setIsAnimating] = import_react34.default.useState(false);
|
|
5779
|
+
const timeoutRef = import_react34.default.useRef(null);
|
|
5780
|
+
import_react34.default.useEffect(() => {
|
|
5738
5781
|
return () => {
|
|
5739
5782
|
if (timeoutRef.current) clearTimeout(timeoutRef.current);
|
|
5740
5783
|
};
|
|
@@ -5749,7 +5792,7 @@ var Switch = (props) => {
|
|
|
5749
5792
|
timeoutRef.current = null;
|
|
5750
5793
|
}, KNOB_TRANSITION_MS);
|
|
5751
5794
|
};
|
|
5752
|
-
return /* @__PURE__ */ (0,
|
|
5795
|
+
return /* @__PURE__ */ (0, import_jsx_runtime341.jsx)(
|
|
5753
5796
|
"div",
|
|
5754
5797
|
{
|
|
5755
5798
|
className: clsx_default(
|
|
@@ -5762,7 +5805,7 @@ var Switch = (props) => {
|
|
|
5762
5805
|
),
|
|
5763
5806
|
onClick: handleClick,
|
|
5764
5807
|
"aria-disabled": disabled || isAnimating,
|
|
5765
|
-
children: /* @__PURE__ */ (0,
|
|
5808
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime341.jsx)("div", { className: clsx_default("knob", value ? "checked" : void 0) })
|
|
5766
5809
|
}
|
|
5767
5810
|
);
|
|
5768
5811
|
};
|
|
@@ -5770,17 +5813,17 @@ Switch.displayName = "Switch";
|
|
|
5770
5813
|
var Switch_default = Switch;
|
|
5771
5814
|
|
|
5772
5815
|
// src/components/Table/TableContext.tsx
|
|
5773
|
-
var
|
|
5774
|
-
var TableContext =
|
|
5816
|
+
var import_react35 = __toESM(require("react"), 1);
|
|
5817
|
+
var TableContext = import_react35.default.createContext(null);
|
|
5775
5818
|
var useTableContext = () => {
|
|
5776
|
-
const ctx =
|
|
5819
|
+
const ctx = import_react35.default.useContext(TableContext);
|
|
5777
5820
|
if (!ctx) throw new Error("Table components must be used inside <Table>");
|
|
5778
5821
|
return ctx;
|
|
5779
5822
|
};
|
|
5780
5823
|
var TableContext_default = TableContext;
|
|
5781
5824
|
|
|
5782
5825
|
// src/components/Table/Table.tsx
|
|
5783
|
-
var
|
|
5826
|
+
var import_jsx_runtime342 = require("react/jsx-runtime");
|
|
5784
5827
|
var Table = (props) => {
|
|
5785
5828
|
const {
|
|
5786
5829
|
children,
|
|
@@ -5790,7 +5833,7 @@ var Table = (props) => {
|
|
|
5790
5833
|
headerSticky = false,
|
|
5791
5834
|
stickyShadow = true
|
|
5792
5835
|
} = props;
|
|
5793
|
-
return /* @__PURE__ */ (0,
|
|
5836
|
+
return /* @__PURE__ */ (0, import_jsx_runtime342.jsx)("div", { className: `lib-xplat-table-wrapper ${size}`, children: /* @__PURE__ */ (0, import_jsx_runtime342.jsx)(
|
|
5794
5837
|
TableContext_default.Provider,
|
|
5795
5838
|
{
|
|
5796
5839
|
value: {
|
|
@@ -5799,7 +5842,7 @@ var Table = (props) => {
|
|
|
5799
5842
|
headerSticky,
|
|
5800
5843
|
stickyShadow
|
|
5801
5844
|
},
|
|
5802
|
-
children: /* @__PURE__ */ (0,
|
|
5845
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime342.jsx)("table", { className: "lib-xplat-table", children })
|
|
5803
5846
|
}
|
|
5804
5847
|
) });
|
|
5805
5848
|
};
|
|
@@ -5807,41 +5850,41 @@ Table.displayName = "Table";
|
|
|
5807
5850
|
var Table_default = Table;
|
|
5808
5851
|
|
|
5809
5852
|
// src/components/Table/TableBody.tsx
|
|
5810
|
-
var
|
|
5853
|
+
var import_jsx_runtime343 = require("react/jsx-runtime");
|
|
5811
5854
|
var TableBody = (props) => {
|
|
5812
5855
|
const { children } = props;
|
|
5813
|
-
return /* @__PURE__ */ (0,
|
|
5856
|
+
return /* @__PURE__ */ (0, import_jsx_runtime343.jsx)("tbody", { children });
|
|
5814
5857
|
};
|
|
5815
5858
|
TableBody.displayName = "TableBody";
|
|
5816
5859
|
var TableBody_default = TableBody;
|
|
5817
5860
|
|
|
5818
5861
|
// src/components/Table/TableCell.tsx
|
|
5819
|
-
var
|
|
5862
|
+
var import_react38 = __toESM(require("react"), 1);
|
|
5820
5863
|
|
|
5821
5864
|
// src/components/Table/TableHeadContext.tsx
|
|
5822
|
-
var
|
|
5823
|
-
var TableHeadContext =
|
|
5865
|
+
var import_react36 = __toESM(require("react"), 1);
|
|
5866
|
+
var TableHeadContext = import_react36.default.createContext(
|
|
5824
5867
|
null
|
|
5825
5868
|
);
|
|
5826
5869
|
var useTableHeadContext = () => {
|
|
5827
|
-
const ctx =
|
|
5870
|
+
const ctx = import_react36.default.useContext(TableHeadContext);
|
|
5828
5871
|
return ctx;
|
|
5829
5872
|
};
|
|
5830
5873
|
var TableHeadContext_default = TableHeadContext;
|
|
5831
5874
|
|
|
5832
5875
|
// src/components/Table/TableRowContext.tsx
|
|
5833
|
-
var
|
|
5834
|
-
var TableRowContext =
|
|
5876
|
+
var import_react37 = __toESM(require("react"), 1);
|
|
5877
|
+
var TableRowContext = import_react37.default.createContext(null);
|
|
5835
5878
|
var useTableRowContext = () => {
|
|
5836
|
-
const ctx =
|
|
5879
|
+
const ctx = import_react37.default.useContext(TableRowContext);
|
|
5837
5880
|
if (!ctx) throw new Error("Table components must be used inside <Table>");
|
|
5838
5881
|
return ctx;
|
|
5839
5882
|
};
|
|
5840
5883
|
var TableRowContext_default = TableRowContext;
|
|
5841
5884
|
|
|
5842
5885
|
// src/components/Table/TableCell.tsx
|
|
5843
|
-
var
|
|
5844
|
-
var TableCell =
|
|
5886
|
+
var import_jsx_runtime344 = require("react/jsx-runtime");
|
|
5887
|
+
var TableCell = import_react38.default.memo((props) => {
|
|
5845
5888
|
const {
|
|
5846
5889
|
children,
|
|
5847
5890
|
align = "center",
|
|
@@ -5853,9 +5896,9 @@ var TableCell = import_react37.default.memo((props) => {
|
|
|
5853
5896
|
const { registerStickyCell, stickyCells } = useTableRowContext();
|
|
5854
5897
|
const { stickyShadow } = useTableContext();
|
|
5855
5898
|
const headContext = useTableHeadContext();
|
|
5856
|
-
const [left, setLeft] =
|
|
5857
|
-
const cellRef =
|
|
5858
|
-
const calculateLeft =
|
|
5899
|
+
const [left, setLeft] = import_react38.default.useState(0);
|
|
5900
|
+
const cellRef = import_react38.default.useRef(null);
|
|
5901
|
+
const calculateLeft = import_react38.default.useCallback(() => {
|
|
5859
5902
|
if (!cellRef.current) return 0;
|
|
5860
5903
|
let totalLeft = 0;
|
|
5861
5904
|
for (const ref of stickyCells) {
|
|
@@ -5864,7 +5907,7 @@ var TableCell = import_react37.default.memo((props) => {
|
|
|
5864
5907
|
}
|
|
5865
5908
|
return totalLeft;
|
|
5866
5909
|
}, [stickyCells]);
|
|
5867
|
-
|
|
5910
|
+
import_react38.default.useEffect(() => {
|
|
5868
5911
|
if (!isSticky || !cellRef.current) return;
|
|
5869
5912
|
registerStickyCell(cellRef);
|
|
5870
5913
|
setLeft(calculateLeft());
|
|
@@ -5882,7 +5925,7 @@ var TableCell = import_react37.default.memo((props) => {
|
|
|
5882
5925
|
const CellTag = cellRef.current?.tagName === "TH" ? "th" : "td";
|
|
5883
5926
|
const isLastSticky = isSticky && stickyCells[stickyCells.length - 1] === cellRef;
|
|
5884
5927
|
const enableHover = headContext && headContext.cellHover;
|
|
5885
|
-
return /* @__PURE__ */ (0,
|
|
5928
|
+
return /* @__PURE__ */ (0, import_jsx_runtime344.jsx)(
|
|
5886
5929
|
CellTag,
|
|
5887
5930
|
{
|
|
5888
5931
|
ref: cellRef,
|
|
@@ -5907,21 +5950,21 @@ TableCell.displayName = "TableCell";
|
|
|
5907
5950
|
var TableCell_default = TableCell;
|
|
5908
5951
|
|
|
5909
5952
|
// src/components/Table/TableHead.tsx
|
|
5910
|
-
var
|
|
5953
|
+
var import_jsx_runtime345 = require("react/jsx-runtime");
|
|
5911
5954
|
var TableHead = ({
|
|
5912
5955
|
children,
|
|
5913
5956
|
cellHover = false
|
|
5914
5957
|
}) => {
|
|
5915
5958
|
const { headerSticky } = useTableContext();
|
|
5916
|
-
return /* @__PURE__ */ (0,
|
|
5959
|
+
return /* @__PURE__ */ (0, import_jsx_runtime345.jsx)(TableHeadContext_default.Provider, { value: { cellHover }, children: /* @__PURE__ */ (0, import_jsx_runtime345.jsx)("thead", { className: clsx_default(headerSticky ? "table-sticky" : null), children }) });
|
|
5917
5960
|
};
|
|
5918
5961
|
TableHead.displayName = "TableHead";
|
|
5919
5962
|
var TableHead_default = TableHead;
|
|
5920
5963
|
|
|
5921
5964
|
// src/components/Table/TableRow.tsx
|
|
5922
|
-
var
|
|
5923
|
-
var
|
|
5924
|
-
var TableRow =
|
|
5965
|
+
var import_react39 = __toESM(require("react"), 1);
|
|
5966
|
+
var import_jsx_runtime346 = require("react/jsx-runtime");
|
|
5967
|
+
var TableRow = import_react39.default.memo((props) => {
|
|
5925
5968
|
const {
|
|
5926
5969
|
children,
|
|
5927
5970
|
type = "secondary",
|
|
@@ -5930,14 +5973,14 @@ var TableRow = import_react38.default.memo((props) => {
|
|
|
5930
5973
|
onClick
|
|
5931
5974
|
} = props;
|
|
5932
5975
|
const { rowBorderUse } = useTableContext();
|
|
5933
|
-
const [stickyCells, setStickyCells] =
|
|
5976
|
+
const [stickyCells, setStickyCells] = import_react39.default.useState([]);
|
|
5934
5977
|
const registerStickyCell = (ref) => {
|
|
5935
5978
|
setStickyCells((prev) => {
|
|
5936
5979
|
if (prev.includes(ref)) return prev;
|
|
5937
5980
|
return [...prev, ref];
|
|
5938
5981
|
});
|
|
5939
5982
|
};
|
|
5940
|
-
return /* @__PURE__ */ (0,
|
|
5983
|
+
return /* @__PURE__ */ (0, import_jsx_runtime346.jsx)(TableRowContext_default.Provider, { value: { stickyCells, registerStickyCell }, children: /* @__PURE__ */ (0, import_jsx_runtime346.jsx)(
|
|
5941
5984
|
"tr",
|
|
5942
5985
|
{
|
|
5943
5986
|
className: clsx_default(
|
|
@@ -5961,7 +6004,7 @@ TableRow.displayName = "TableRow";
|
|
|
5961
6004
|
var TableRow_default = TableRow;
|
|
5962
6005
|
|
|
5963
6006
|
// src/components/Tag/Tag.tsx
|
|
5964
|
-
var
|
|
6007
|
+
var import_jsx_runtime347 = require("react/jsx-runtime");
|
|
5965
6008
|
var Tag = (props) => {
|
|
5966
6009
|
const {
|
|
5967
6010
|
children,
|
|
@@ -5971,7 +6014,7 @@ var Tag = (props) => {
|
|
|
5971
6014
|
disabled = false,
|
|
5972
6015
|
colorIndex
|
|
5973
6016
|
} = props;
|
|
5974
|
-
return /* @__PURE__ */ (0,
|
|
6017
|
+
return /* @__PURE__ */ (0, import_jsx_runtime347.jsxs)(
|
|
5975
6018
|
"span",
|
|
5976
6019
|
{
|
|
5977
6020
|
className: clsx_default(
|
|
@@ -5982,8 +6025,8 @@ var Tag = (props) => {
|
|
|
5982
6025
|
disabled && "disabled"
|
|
5983
6026
|
),
|
|
5984
6027
|
children: [
|
|
5985
|
-
/* @__PURE__ */ (0,
|
|
5986
|
-
onClose && /* @__PURE__ */ (0,
|
|
6028
|
+
/* @__PURE__ */ (0, import_jsx_runtime347.jsx)("span", { className: "tag-label", children }),
|
|
6029
|
+
onClose && /* @__PURE__ */ (0, import_jsx_runtime347.jsx)("button", { className: "tag-close", onClick: onClose, "aria-label": "\uC0AD\uC81C", disabled, children: /* @__PURE__ */ (0, import_jsx_runtime347.jsx)(XIcon_default, {}) })
|
|
5987
6030
|
]
|
|
5988
6031
|
}
|
|
5989
6032
|
);
|
|
@@ -5992,55 +6035,27 @@ Tag.displayName = "Tag";
|
|
|
5992
6035
|
var Tag_default = Tag;
|
|
5993
6036
|
|
|
5994
6037
|
// src/components/TextArea/TextArea.tsx
|
|
5995
|
-
var
|
|
5996
|
-
var
|
|
5997
|
-
var TextArea =
|
|
6038
|
+
var import_react40 = __toESM(require("react"), 1);
|
|
6039
|
+
var import_jsx_runtime348 = require("react/jsx-runtime");
|
|
6040
|
+
var TextArea = import_react40.default.forwardRef(
|
|
5998
6041
|
(props, ref) => {
|
|
5999
|
-
const {
|
|
6000
|
-
|
|
6001
|
-
|
|
6002
|
-
|
|
6003
|
-
|
|
6004
|
-
|
|
6005
|
-
|
|
6006
|
-
|
|
6007
|
-
|
|
6008
|
-
|
|
6009
|
-
};
|
|
6010
|
-
const handleOnChange = (e) => {
|
|
6011
|
-
const val = e.target.value;
|
|
6012
|
-
if (onChange) {
|
|
6013
|
-
const event = {
|
|
6014
|
-
...e,
|
|
6015
|
-
target: { value: val }
|
|
6016
|
-
};
|
|
6017
|
-
onChange(event);
|
|
6018
|
-
}
|
|
6019
|
-
};
|
|
6020
|
-
import_react39.default.useEffect(() => {
|
|
6021
|
-
const el = localRef.current;
|
|
6022
|
-
if (!el) return;
|
|
6023
|
-
el.style.height = "0px";
|
|
6024
|
-
const nextHeight = Math.min(el.scrollHeight, 400);
|
|
6025
|
-
el.style.height = `${nextHeight}px`;
|
|
6026
|
-
}, [value]);
|
|
6027
|
-
return /* @__PURE__ */ (0, import_jsx_runtime347.jsx)("div", { className: clsx_default("lib-xplat-textarea-wrapper", className), children: /* @__PURE__ */ (0, import_jsx_runtime347.jsx)(
|
|
6028
|
-
"div",
|
|
6042
|
+
const {
|
|
6043
|
+
className,
|
|
6044
|
+
size = "md",
|
|
6045
|
+
resize = "vertical",
|
|
6046
|
+
rows = 3,
|
|
6047
|
+
disabled,
|
|
6048
|
+
...textareaProps
|
|
6049
|
+
} = props;
|
|
6050
|
+
return /* @__PURE__ */ (0, import_jsx_runtime348.jsx)("div", { className: clsx_default("lib-xplat-textarea-wrap", className), children: /* @__PURE__ */ (0, import_jsx_runtime348.jsx)(
|
|
6051
|
+
"textarea",
|
|
6029
6052
|
{
|
|
6030
|
-
|
|
6031
|
-
|
|
6032
|
-
|
|
6033
|
-
|
|
6034
|
-
|
|
6035
|
-
|
|
6036
|
-
{
|
|
6037
|
-
...textareaProps,
|
|
6038
|
-
ref: setRefs,
|
|
6039
|
-
disabled,
|
|
6040
|
-
value,
|
|
6041
|
-
onChange: handleOnChange
|
|
6042
|
-
}
|
|
6043
|
-
)
|
|
6053
|
+
...textareaProps,
|
|
6054
|
+
ref,
|
|
6055
|
+
rows,
|
|
6056
|
+
disabled,
|
|
6057
|
+
className: clsx_default("lib-xplat-textarea", size, disabled && "disabled"),
|
|
6058
|
+
style: { resize }
|
|
6044
6059
|
}
|
|
6045
6060
|
) });
|
|
6046
6061
|
}
|
|
@@ -6049,25 +6064,25 @@ TextArea.displayName = "TextArea";
|
|
|
6049
6064
|
var TextArea_default = TextArea;
|
|
6050
6065
|
|
|
6051
6066
|
// src/components/Toast/Toast.tsx
|
|
6052
|
-
var
|
|
6067
|
+
var import_react41 = __toESM(require("react"), 1);
|
|
6053
6068
|
var import_react_dom4 = require("react-dom");
|
|
6054
|
-
var
|
|
6055
|
-
var ToastContext =
|
|
6069
|
+
var import_jsx_runtime349 = require("react/jsx-runtime");
|
|
6070
|
+
var ToastContext = import_react41.default.createContext(null);
|
|
6056
6071
|
var useToast = () => {
|
|
6057
|
-
const ctx =
|
|
6072
|
+
const ctx = import_react41.default.useContext(ToastContext);
|
|
6058
6073
|
if (!ctx) throw new Error("useToast must be used within ToastProvider");
|
|
6059
6074
|
return ctx;
|
|
6060
6075
|
};
|
|
6061
6076
|
var EXIT_DURATION = 300;
|
|
6062
6077
|
var ToastItemComponent = ({ item, isExiting, onClose }) => {
|
|
6063
|
-
const ref =
|
|
6064
|
-
const [height, setHeight] =
|
|
6065
|
-
|
|
6078
|
+
const ref = import_react41.default.useRef(null);
|
|
6079
|
+
const [height, setHeight] = import_react41.default.useState(void 0);
|
|
6080
|
+
import_react41.default.useEffect(() => {
|
|
6066
6081
|
if (ref.current && !isExiting) {
|
|
6067
6082
|
setHeight(ref.current.offsetHeight);
|
|
6068
6083
|
}
|
|
6069
6084
|
}, [isExiting]);
|
|
6070
|
-
return /* @__PURE__ */ (0,
|
|
6085
|
+
return /* @__PURE__ */ (0, import_jsx_runtime349.jsx)(
|
|
6071
6086
|
"div",
|
|
6072
6087
|
{
|
|
6073
6088
|
className: clsx_default("lib-xplat-toast-wrapper", { exit: isExiting }),
|
|
@@ -6075,15 +6090,15 @@ var ToastItemComponent = ({ item, isExiting, onClose }) => {
|
|
|
6075
6090
|
maxHeight: isExiting ? 0 : height ?? "none",
|
|
6076
6091
|
marginBottom: isExiting ? 0 : void 0
|
|
6077
6092
|
},
|
|
6078
|
-
children: /* @__PURE__ */ (0,
|
|
6093
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime349.jsxs)(
|
|
6079
6094
|
"div",
|
|
6080
6095
|
{
|
|
6081
6096
|
ref,
|
|
6082
6097
|
className: clsx_default("lib-xplat-toast", item.type, { exit: isExiting }),
|
|
6083
6098
|
role: "alert",
|
|
6084
6099
|
children: [
|
|
6085
|
-
/* @__PURE__ */ (0,
|
|
6086
|
-
/* @__PURE__ */ (0,
|
|
6100
|
+
/* @__PURE__ */ (0, import_jsx_runtime349.jsx)("span", { className: "message", children: item.message }),
|
|
6101
|
+
/* @__PURE__ */ (0, import_jsx_runtime349.jsx)("button", { className: "close-btn", onClick: onClose, "aria-label": "\uB2EB\uAE30", children: "\xD7" })
|
|
6087
6102
|
]
|
|
6088
6103
|
}
|
|
6089
6104
|
)
|
|
@@ -6094,13 +6109,13 @@ var ToastProvider = ({
|
|
|
6094
6109
|
children,
|
|
6095
6110
|
position = "top-right"
|
|
6096
6111
|
}) => {
|
|
6097
|
-
const [toasts, setToasts] =
|
|
6098
|
-
const [removing, setRemoving] =
|
|
6099
|
-
const [mounted, setMounted] =
|
|
6100
|
-
|
|
6112
|
+
const [toasts, setToasts] = import_react41.default.useState([]);
|
|
6113
|
+
const [removing, setRemoving] = import_react41.default.useState(/* @__PURE__ */ new Set());
|
|
6114
|
+
const [mounted, setMounted] = import_react41.default.useState(false);
|
|
6115
|
+
import_react41.default.useEffect(() => {
|
|
6101
6116
|
setMounted(true);
|
|
6102
6117
|
}, []);
|
|
6103
|
-
const remove =
|
|
6118
|
+
const remove = import_react41.default.useCallback((id) => {
|
|
6104
6119
|
setRemoving((prev) => new Set(prev).add(id));
|
|
6105
6120
|
setTimeout(() => {
|
|
6106
6121
|
setToasts((prev) => prev.filter((t) => t.id !== id));
|
|
@@ -6111,7 +6126,7 @@ var ToastProvider = ({
|
|
|
6111
6126
|
});
|
|
6112
6127
|
}, EXIT_DURATION);
|
|
6113
6128
|
}, []);
|
|
6114
|
-
const toast =
|
|
6129
|
+
const toast = import_react41.default.useCallback(
|
|
6115
6130
|
(type, message, duration = 3e3) => {
|
|
6116
6131
|
const id = `${Date.now()}-${Math.random()}`;
|
|
6117
6132
|
setToasts((prev) => [...prev, { id, type, message }]);
|
|
@@ -6121,10 +6136,10 @@ var ToastProvider = ({
|
|
|
6121
6136
|
},
|
|
6122
6137
|
[remove]
|
|
6123
6138
|
);
|
|
6124
|
-
return /* @__PURE__ */ (0,
|
|
6139
|
+
return /* @__PURE__ */ (0, import_jsx_runtime349.jsxs)(ToastContext.Provider, { value: { toast }, children: [
|
|
6125
6140
|
children,
|
|
6126
6141
|
mounted && (0, import_react_dom4.createPortal)(
|
|
6127
|
-
/* @__PURE__ */ (0,
|
|
6142
|
+
/* @__PURE__ */ (0, import_jsx_runtime349.jsx)("div", { className: clsx_default("lib-xplat-toast-container", position), children: toasts.map((t) => /* @__PURE__ */ (0, import_jsx_runtime349.jsx)(
|
|
6128
6143
|
ToastItemComponent,
|
|
6129
6144
|
{
|
|
6130
6145
|
item: t,
|
|
@@ -6140,8 +6155,8 @@ var ToastProvider = ({
|
|
|
6140
6155
|
ToastProvider.displayName = "ToastProvider";
|
|
6141
6156
|
|
|
6142
6157
|
// src/components/Tooltip/Tooltip.tsx
|
|
6143
|
-
var
|
|
6144
|
-
var
|
|
6158
|
+
var import_react42 = __toESM(require("react"), 1);
|
|
6159
|
+
var import_jsx_runtime350 = require("react/jsx-runtime");
|
|
6145
6160
|
var OFFSET = 12;
|
|
6146
6161
|
var SHOW_DELAY = 300;
|
|
6147
6162
|
var Tooltip = (props) => {
|
|
@@ -6152,12 +6167,12 @@ var Tooltip = (props) => {
|
|
|
6152
6167
|
children,
|
|
6153
6168
|
disabled = false
|
|
6154
6169
|
} = props;
|
|
6155
|
-
const triggerRef =
|
|
6156
|
-
const tooltipRef =
|
|
6157
|
-
const [visible, setVisible] =
|
|
6158
|
-
const [pos, setPos] =
|
|
6159
|
-
const delayTimer =
|
|
6160
|
-
const calculatePos =
|
|
6170
|
+
const triggerRef = import_react42.default.useRef(null);
|
|
6171
|
+
const tooltipRef = import_react42.default.useRef(null);
|
|
6172
|
+
const [visible, setVisible] = import_react42.default.useState(false);
|
|
6173
|
+
const [pos, setPos] = import_react42.default.useState({ left: 0, top: 0 });
|
|
6174
|
+
const delayTimer = import_react42.default.useRef(0);
|
|
6175
|
+
const calculatePos = import_react42.default.useCallback((clientX, clientY) => {
|
|
6161
6176
|
const el = tooltipRef.current;
|
|
6162
6177
|
if (!el) return;
|
|
6163
6178
|
const w = el.offsetWidth;
|
|
@@ -6170,38 +6185,38 @@ var Tooltip = (props) => {
|
|
|
6170
6185
|
if (left < 8) left = 8;
|
|
6171
6186
|
setPos({ left, top });
|
|
6172
6187
|
}, []);
|
|
6173
|
-
const handleMouseEnter =
|
|
6188
|
+
const handleMouseEnter = import_react42.default.useCallback(() => {
|
|
6174
6189
|
if (disabled) return;
|
|
6175
6190
|
delayTimer.current = window.setTimeout(() => {
|
|
6176
6191
|
setVisible(true);
|
|
6177
6192
|
}, SHOW_DELAY);
|
|
6178
6193
|
}, [disabled]);
|
|
6179
|
-
const handleMouseMove =
|
|
6194
|
+
const handleMouseMove = import_react42.default.useCallback((e) => {
|
|
6180
6195
|
if (!visible) return;
|
|
6181
6196
|
calculatePos(e.clientX, e.clientY);
|
|
6182
6197
|
}, [visible, calculatePos]);
|
|
6183
|
-
const handleMouseLeave =
|
|
6198
|
+
const handleMouseLeave = import_react42.default.useCallback(() => {
|
|
6184
6199
|
window.clearTimeout(delayTimer.current);
|
|
6185
6200
|
setVisible(false);
|
|
6186
6201
|
}, []);
|
|
6187
|
-
const handleClick =
|
|
6202
|
+
const handleClick = import_react42.default.useCallback(() => {
|
|
6188
6203
|
window.clearTimeout(delayTimer.current);
|
|
6189
6204
|
setVisible(false);
|
|
6190
6205
|
}, []);
|
|
6191
|
-
const handleFocus =
|
|
6206
|
+
const handleFocus = import_react42.default.useCallback(() => {
|
|
6192
6207
|
if (disabled) return;
|
|
6193
6208
|
setVisible(true);
|
|
6194
6209
|
}, [disabled]);
|
|
6195
|
-
const handleBlur =
|
|
6210
|
+
const handleBlur = import_react42.default.useCallback(() => {
|
|
6196
6211
|
setVisible(false);
|
|
6197
6212
|
}, []);
|
|
6198
|
-
|
|
6213
|
+
import_react42.default.useLayoutEffect(() => {
|
|
6199
6214
|
if (!visible || !triggerRef.current) return;
|
|
6200
6215
|
const rect = triggerRef.current.getBoundingClientRect();
|
|
6201
6216
|
calculatePos(rect.right, rect.top);
|
|
6202
6217
|
}, [visible, calculatePos]);
|
|
6203
|
-
if (!title && !description) return /* @__PURE__ */ (0,
|
|
6204
|
-
return /* @__PURE__ */ (0,
|
|
6218
|
+
if (!title && !description) return /* @__PURE__ */ (0, import_jsx_runtime350.jsx)(import_jsx_runtime350.Fragment, { children });
|
|
6219
|
+
return /* @__PURE__ */ (0, import_jsx_runtime350.jsxs)(
|
|
6205
6220
|
"div",
|
|
6206
6221
|
{
|
|
6207
6222
|
ref: triggerRef,
|
|
@@ -6214,15 +6229,15 @@ var Tooltip = (props) => {
|
|
|
6214
6229
|
onBlur: handleBlur,
|
|
6215
6230
|
children: [
|
|
6216
6231
|
children,
|
|
6217
|
-
visible && /* @__PURE__ */ (0,
|
|
6232
|
+
visible && /* @__PURE__ */ (0, import_jsx_runtime350.jsx)(Portal_default, { children: /* @__PURE__ */ (0, import_jsx_runtime350.jsxs)(
|
|
6218
6233
|
"div",
|
|
6219
6234
|
{
|
|
6220
6235
|
ref: tooltipRef,
|
|
6221
6236
|
className: clsx_default("lib-xplat-tooltip", type),
|
|
6222
6237
|
style: { position: "fixed", left: pos.left, top: pos.top },
|
|
6223
6238
|
children: [
|
|
6224
|
-
title && /* @__PURE__ */ (0,
|
|
6225
|
-
description && /* @__PURE__ */ (0,
|
|
6239
|
+
title && /* @__PURE__ */ (0, import_jsx_runtime350.jsx)("div", { className: "tooltip-title", children: title }),
|
|
6240
|
+
description && /* @__PURE__ */ (0, import_jsx_runtime350.jsx)("div", { className: "tooltip-desc", children: description })
|
|
6226
6241
|
]
|
|
6227
6242
|
}
|
|
6228
6243
|
) })
|
|
@@ -6234,11 +6249,11 @@ Tooltip.displayName = "Tooltip";
|
|
|
6234
6249
|
var Tooltip_default = Tooltip;
|
|
6235
6250
|
|
|
6236
6251
|
// src/components/Video/Video.tsx
|
|
6237
|
-
var
|
|
6238
|
-
var
|
|
6239
|
-
var PipIcon = () => /* @__PURE__ */ (0,
|
|
6240
|
-
/* @__PURE__ */ (0,
|
|
6241
|
-
/* @__PURE__ */ (0,
|
|
6252
|
+
var import_react43 = __toESM(require("react"), 1);
|
|
6253
|
+
var import_jsx_runtime351 = require("react/jsx-runtime");
|
|
6254
|
+
var PipIcon = () => /* @__PURE__ */ (0, import_jsx_runtime351.jsxs)("svg", { viewBox: "0 0 24 24", width: "1em", height: "1em", fill: "none", stroke: "currentColor", strokeWidth: "2", strokeLinecap: "round", strokeLinejoin: "round", "aria-hidden": "true", children: [
|
|
6255
|
+
/* @__PURE__ */ (0, import_jsx_runtime351.jsx)("rect", { x: "3", y: "5", width: "18", height: "14", rx: "2" }),
|
|
6256
|
+
/* @__PURE__ */ (0, import_jsx_runtime351.jsx)("rect", { x: "12", y: "11", width: "7", height: "6", rx: "1", fill: "currentColor" })
|
|
6242
6257
|
] });
|
|
6243
6258
|
var formatTime = (sec) => {
|
|
6244
6259
|
if (!Number.isFinite(sec) || sec < 0) return "0:00";
|
|
@@ -6246,7 +6261,7 @@ var formatTime = (sec) => {
|
|
|
6246
6261
|
const s = Math.floor(sec % 60);
|
|
6247
6262
|
return `${m}:${s.toString().padStart(2, "0")}`;
|
|
6248
6263
|
};
|
|
6249
|
-
var Video =
|
|
6264
|
+
var Video = import_react43.default.forwardRef((props, ref) => {
|
|
6250
6265
|
const {
|
|
6251
6266
|
src,
|
|
6252
6267
|
poster,
|
|
@@ -6270,21 +6285,21 @@ var Video = import_react42.default.forwardRef((props, ref) => {
|
|
|
6270
6285
|
children,
|
|
6271
6286
|
...rest
|
|
6272
6287
|
} = props;
|
|
6273
|
-
const containerRef =
|
|
6274
|
-
const videoRef =
|
|
6275
|
-
const [isPlaying, setIsPlaying] =
|
|
6276
|
-
const [isLoaded, setIsLoaded] =
|
|
6277
|
-
const [currentTime, setCurrentTime] =
|
|
6278
|
-
const [duration, setDuration] =
|
|
6279
|
-
const [buffered, setBuffered] =
|
|
6280
|
-
const [volume, setVolume] =
|
|
6281
|
-
const [isMuted, setIsMuted] =
|
|
6282
|
-
const [isFullscreen, setIsFullscreen] =
|
|
6283
|
-
const [playbackRate, setPlaybackRate] =
|
|
6284
|
-
const [rateMenuOpen, setRateMenuOpen] =
|
|
6285
|
-
const [captionsOn, setCaptionsOn] =
|
|
6286
|
-
const [isPip, setIsPip] =
|
|
6287
|
-
const setRefs =
|
|
6288
|
+
const containerRef = import_react43.default.useRef(null);
|
|
6289
|
+
const videoRef = import_react43.default.useRef(null);
|
|
6290
|
+
const [isPlaying, setIsPlaying] = import_react43.default.useState(Boolean(autoPlay));
|
|
6291
|
+
const [isLoaded, setIsLoaded] = import_react43.default.useState(false);
|
|
6292
|
+
const [currentTime, setCurrentTime] = import_react43.default.useState(0);
|
|
6293
|
+
const [duration, setDuration] = import_react43.default.useState(0);
|
|
6294
|
+
const [buffered, setBuffered] = import_react43.default.useState(0);
|
|
6295
|
+
const [volume, setVolume] = import_react43.default.useState(1);
|
|
6296
|
+
const [isMuted, setIsMuted] = import_react43.default.useState(Boolean(muted));
|
|
6297
|
+
const [isFullscreen, setIsFullscreen] = import_react43.default.useState(false);
|
|
6298
|
+
const [playbackRate, setPlaybackRate] = import_react43.default.useState(1);
|
|
6299
|
+
const [rateMenuOpen, setRateMenuOpen] = import_react43.default.useState(false);
|
|
6300
|
+
const [captionsOn, setCaptionsOn] = import_react43.default.useState(false);
|
|
6301
|
+
const [isPip, setIsPip] = import_react43.default.useState(false);
|
|
6302
|
+
const setRefs = import_react43.default.useCallback(
|
|
6288
6303
|
(el) => {
|
|
6289
6304
|
videoRef.current = el;
|
|
6290
6305
|
if (typeof ref === "function") ref(el);
|
|
@@ -6292,14 +6307,14 @@ var Video = import_react42.default.forwardRef((props, ref) => {
|
|
|
6292
6307
|
},
|
|
6293
6308
|
[ref]
|
|
6294
6309
|
);
|
|
6295
|
-
|
|
6310
|
+
import_react43.default.useEffect(() => {
|
|
6296
6311
|
const onFsChange = () => {
|
|
6297
6312
|
setIsFullscreen(document.fullscreenElement === containerRef.current);
|
|
6298
6313
|
};
|
|
6299
6314
|
document.addEventListener("fullscreenchange", onFsChange);
|
|
6300
6315
|
return () => document.removeEventListener("fullscreenchange", onFsChange);
|
|
6301
6316
|
}, []);
|
|
6302
|
-
|
|
6317
|
+
import_react43.default.useEffect(() => {
|
|
6303
6318
|
const v = videoRef.current;
|
|
6304
6319
|
if (!v) return;
|
|
6305
6320
|
const onEnter = () => setIsPip(true);
|
|
@@ -6413,13 +6428,13 @@ var Video = import_react42.default.forwardRef((props, ref) => {
|
|
|
6413
6428
|
const volumePct = (isMuted ? 0 : volume) * 100;
|
|
6414
6429
|
const VolumeGlyph = isMuted || volume === 0 ? VolumeXIcon_default : volume < 0.5 ? VolumeIcon_default : Volume2Icon_default;
|
|
6415
6430
|
const pipSupported = typeof document !== "undefined" && "pictureInPictureEnabled" in document && document.pictureInPictureEnabled;
|
|
6416
|
-
return /* @__PURE__ */ (0,
|
|
6431
|
+
return /* @__PURE__ */ (0, import_jsx_runtime351.jsxs)(
|
|
6417
6432
|
"div",
|
|
6418
6433
|
{
|
|
6419
6434
|
ref: containerRef,
|
|
6420
6435
|
className: clsx_default("lib-xplat-video", showControls && "has-controls"),
|
|
6421
6436
|
children: [
|
|
6422
|
-
/* @__PURE__ */ (0,
|
|
6437
|
+
/* @__PURE__ */ (0, import_jsx_runtime351.jsx)(
|
|
6423
6438
|
"video",
|
|
6424
6439
|
{
|
|
6425
6440
|
ref: setRefs,
|
|
@@ -6440,7 +6455,7 @@ var Video = import_react42.default.forwardRef((props, ref) => {
|
|
|
6440
6455
|
children
|
|
6441
6456
|
}
|
|
6442
6457
|
),
|
|
6443
|
-
showCenterPlay && /* @__PURE__ */ (0,
|
|
6458
|
+
showCenterPlay && /* @__PURE__ */ (0, import_jsx_runtime351.jsx)(
|
|
6444
6459
|
"button",
|
|
6445
6460
|
{
|
|
6446
6461
|
type: "button",
|
|
@@ -6452,11 +6467,11 @@ var Video = import_react42.default.forwardRef((props, ref) => {
|
|
|
6452
6467
|
onClick: togglePlay,
|
|
6453
6468
|
"aria-label": isPlaying ? "\uC77C\uC2DC\uC815\uC9C0" : "\uC7AC\uC0DD",
|
|
6454
6469
|
tabIndex: -1,
|
|
6455
|
-
children: /* @__PURE__ */ (0,
|
|
6470
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime351.jsx)("span", { className: "center-play-icon", children: /* @__PURE__ */ (0, import_jsx_runtime351.jsx)(PlayCircleIcon_default, {}) })
|
|
6456
6471
|
}
|
|
6457
6472
|
),
|
|
6458
|
-
showControls && /* @__PURE__ */ (0,
|
|
6459
|
-
/* @__PURE__ */ (0,
|
|
6473
|
+
showControls && /* @__PURE__ */ (0, import_jsx_runtime351.jsxs)("div", { className: "controls", onClick: (e) => e.stopPropagation(), children: [
|
|
6474
|
+
/* @__PURE__ */ (0, import_jsx_runtime351.jsx)(
|
|
6460
6475
|
"input",
|
|
6461
6476
|
{
|
|
6462
6477
|
type: "range",
|
|
@@ -6473,29 +6488,29 @@ var Video = import_react42.default.forwardRef((props, ref) => {
|
|
|
6473
6488
|
}
|
|
6474
6489
|
}
|
|
6475
6490
|
),
|
|
6476
|
-
/* @__PURE__ */ (0,
|
|
6477
|
-
/* @__PURE__ */ (0,
|
|
6491
|
+
/* @__PURE__ */ (0, import_jsx_runtime351.jsxs)("div", { className: "controls-row", children: [
|
|
6492
|
+
/* @__PURE__ */ (0, import_jsx_runtime351.jsx)(
|
|
6478
6493
|
"button",
|
|
6479
6494
|
{
|
|
6480
6495
|
type: "button",
|
|
6481
6496
|
className: "control-btn",
|
|
6482
6497
|
onClick: togglePlay,
|
|
6483
6498
|
"aria-label": isPlaying ? "\uC77C\uC2DC\uC815\uC9C0" : "\uC7AC\uC0DD",
|
|
6484
|
-
children: isPlaying ? /* @__PURE__ */ (0,
|
|
6499
|
+
children: isPlaying ? /* @__PURE__ */ (0, import_jsx_runtime351.jsx)(PauseIcon_default, {}) : /* @__PURE__ */ (0, import_jsx_runtime351.jsx)(PlayIcon_default, {})
|
|
6485
6500
|
}
|
|
6486
6501
|
),
|
|
6487
|
-
/* @__PURE__ */ (0,
|
|
6488
|
-
/* @__PURE__ */ (0,
|
|
6502
|
+
/* @__PURE__ */ (0, import_jsx_runtime351.jsxs)("div", { className: "volume-group", children: [
|
|
6503
|
+
/* @__PURE__ */ (0, import_jsx_runtime351.jsx)(
|
|
6489
6504
|
"button",
|
|
6490
6505
|
{
|
|
6491
6506
|
type: "button",
|
|
6492
6507
|
className: "control-btn",
|
|
6493
6508
|
onClick: toggleMute,
|
|
6494
6509
|
"aria-label": isMuted ? "\uC74C\uC18C\uAC70 \uD574\uC81C" : "\uC74C\uC18C\uAC70",
|
|
6495
|
-
children: /* @__PURE__ */ (0,
|
|
6510
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime351.jsx)(VolumeGlyph, {})
|
|
6496
6511
|
}
|
|
6497
6512
|
),
|
|
6498
|
-
/* @__PURE__ */ (0,
|
|
6513
|
+
/* @__PURE__ */ (0, import_jsx_runtime351.jsx)(
|
|
6499
6514
|
"input",
|
|
6500
6515
|
{
|
|
6501
6516
|
type: "range",
|
|
@@ -6510,14 +6525,14 @@ var Video = import_react42.default.forwardRef((props, ref) => {
|
|
|
6510
6525
|
}
|
|
6511
6526
|
)
|
|
6512
6527
|
] }),
|
|
6513
|
-
/* @__PURE__ */ (0,
|
|
6528
|
+
/* @__PURE__ */ (0, import_jsx_runtime351.jsxs)("span", { className: "time", children: [
|
|
6514
6529
|
formatTime(currentTime),
|
|
6515
6530
|
" / ",
|
|
6516
6531
|
formatTime(duration)
|
|
6517
6532
|
] }),
|
|
6518
|
-
/* @__PURE__ */ (0,
|
|
6519
|
-
playbackRates && playbackRates.length > 0 && /* @__PURE__ */ (0,
|
|
6520
|
-
/* @__PURE__ */ (0,
|
|
6533
|
+
/* @__PURE__ */ (0, import_jsx_runtime351.jsx)("div", { className: "controls-spacer" }),
|
|
6534
|
+
playbackRates && playbackRates.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime351.jsxs)("div", { className: clsx_default("rate-group", rateMenuOpen && "is-open"), children: [
|
|
6535
|
+
/* @__PURE__ */ (0, import_jsx_runtime351.jsxs)(
|
|
6521
6536
|
"button",
|
|
6522
6537
|
{
|
|
6523
6538
|
type: "button",
|
|
@@ -6531,7 +6546,7 @@ var Video = import_react42.default.forwardRef((props, ref) => {
|
|
|
6531
6546
|
]
|
|
6532
6547
|
}
|
|
6533
6548
|
),
|
|
6534
|
-
rateMenuOpen && /* @__PURE__ */ (0,
|
|
6549
|
+
rateMenuOpen && /* @__PURE__ */ (0, import_jsx_runtime351.jsx)("ul", { className: "rate-menu", role: "menu", children: playbackRates.map((r2) => /* @__PURE__ */ (0, import_jsx_runtime351.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime351.jsxs)(
|
|
6535
6550
|
"button",
|
|
6536
6551
|
{
|
|
6537
6552
|
type: "button",
|
|
@@ -6545,7 +6560,7 @@ var Video = import_react42.default.forwardRef((props, ref) => {
|
|
|
6545
6560
|
}
|
|
6546
6561
|
) }, r2)) })
|
|
6547
6562
|
] }),
|
|
6548
|
-
showCaptions && /* @__PURE__ */ (0,
|
|
6563
|
+
showCaptions && /* @__PURE__ */ (0, import_jsx_runtime351.jsx)(
|
|
6549
6564
|
"button",
|
|
6550
6565
|
{
|
|
6551
6566
|
type: "button",
|
|
@@ -6553,37 +6568,37 @@ var Video = import_react42.default.forwardRef((props, ref) => {
|
|
|
6553
6568
|
onClick: toggleCaptions,
|
|
6554
6569
|
"aria-label": captionsOn ? "\uC790\uB9C9 \uB044\uAE30" : "\uC790\uB9C9 \uCF1C\uAE30",
|
|
6555
6570
|
"aria-pressed": captionsOn,
|
|
6556
|
-
children: /* @__PURE__ */ (0,
|
|
6571
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime351.jsx)(TypeIcon_default, {})
|
|
6557
6572
|
}
|
|
6558
6573
|
),
|
|
6559
|
-
showPip && pipSupported && /* @__PURE__ */ (0,
|
|
6574
|
+
showPip && pipSupported && /* @__PURE__ */ (0, import_jsx_runtime351.jsx)(
|
|
6560
6575
|
"button",
|
|
6561
6576
|
{
|
|
6562
6577
|
type: "button",
|
|
6563
6578
|
className: clsx_default("control-btn", isPip && "is-active"),
|
|
6564
6579
|
onClick: togglePip,
|
|
6565
6580
|
"aria-label": isPip ? "PIP \uC885\uB8CC" : "PIP",
|
|
6566
|
-
children: /* @__PURE__ */ (0,
|
|
6581
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime351.jsx)(PipIcon, {})
|
|
6567
6582
|
}
|
|
6568
6583
|
),
|
|
6569
|
-
showDownload && /* @__PURE__ */ (0,
|
|
6584
|
+
showDownload && /* @__PURE__ */ (0, import_jsx_runtime351.jsx)(
|
|
6570
6585
|
"a",
|
|
6571
6586
|
{
|
|
6572
6587
|
className: "control-btn",
|
|
6573
6588
|
href: src,
|
|
6574
6589
|
download: downloadFileName ?? true,
|
|
6575
6590
|
"aria-label": "\uB2E4\uC6B4\uB85C\uB4DC",
|
|
6576
|
-
children: /* @__PURE__ */ (0,
|
|
6591
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime351.jsx)(DownloadIcon_default, {})
|
|
6577
6592
|
}
|
|
6578
6593
|
),
|
|
6579
|
-
/* @__PURE__ */ (0,
|
|
6594
|
+
/* @__PURE__ */ (0, import_jsx_runtime351.jsx)(
|
|
6580
6595
|
"button",
|
|
6581
6596
|
{
|
|
6582
6597
|
type: "button",
|
|
6583
6598
|
className: "control-btn",
|
|
6584
6599
|
onClick: toggleFullscreen,
|
|
6585
6600
|
"aria-label": isFullscreen ? "\uC804\uCCB4\uD654\uBA74 \uC885\uB8CC" : "\uC804\uCCB4\uD654\uBA74",
|
|
6586
|
-
children: isFullscreen ? /* @__PURE__ */ (0,
|
|
6601
|
+
children: isFullscreen ? /* @__PURE__ */ (0, import_jsx_runtime351.jsx)(MinimizeIcon_default, {}) : /* @__PURE__ */ (0, import_jsx_runtime351.jsx)(MaximizeIcon_default, {})
|
|
6587
6602
|
}
|
|
6588
6603
|
)
|
|
6589
6604
|
] })
|
|
@@ -6598,6 +6613,7 @@ var Video_default = Video;
|
|
|
6598
6613
|
0 && (module.exports = {
|
|
6599
6614
|
Accordion,
|
|
6600
6615
|
Alert,
|
|
6616
|
+
AutoResizeTextArea,
|
|
6601
6617
|
Avatar,
|
|
6602
6618
|
Badge,
|
|
6603
6619
|
Box,
|