@beweco/aurora-ui 0.6.48 → 0.6.50
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/index.cjs.js
CHANGED
|
@@ -6965,13 +6965,13 @@ var DayMonthPicker = function (_a) {
|
|
|
6965
6965
|
}
|
|
6966
6966
|
onChange({ type: "dayMonthRange", dayMonth: null, dayMonthRange: null });
|
|
6967
6967
|
};
|
|
6968
|
-
var handleSingleChange = function (date) {
|
|
6968
|
+
var handleSingleChange = React.useCallback(function (date) {
|
|
6969
6969
|
onChange({
|
|
6970
6970
|
type: "dayMonth",
|
|
6971
6971
|
dayMonth: date,
|
|
6972
6972
|
dayMonthRange: null,
|
|
6973
6973
|
});
|
|
6974
|
-
};
|
|
6974
|
+
}, [onChange]);
|
|
6975
6975
|
var handleRangeChange = function (range) {
|
|
6976
6976
|
onChange({
|
|
6977
6977
|
type: "dayMonthRange",
|
|
@@ -6983,34 +6983,50 @@ var DayMonthPicker = function (_a) {
|
|
|
6983
6983
|
var pickerValue = (value === null || value === void 0 ? void 0 : value.type) === "dayMonth" ? value.dayMonth : null;
|
|
6984
6984
|
var rangeValue = (value === null || value === void 0 ? void 0 : value.type) === "dayMonthRange" ? value.dayMonthRange : null;
|
|
6985
6985
|
var containerRef = React.useRef(null);
|
|
6986
|
-
//
|
|
6987
|
-
//
|
|
6988
|
-
//
|
|
6989
|
-
//
|
|
6990
|
-
//
|
|
6991
|
-
//
|
|
6986
|
+
// When the user types day+month manually, React Aria auto-moves focus to the sr-only
|
|
6987
|
+
// year segment. We detect this via native focusin (which fires for every segment-to-segment
|
|
6988
|
+
// focus move, unlike React Aria's onFocus). Instead of dispatching synthetic KeyboardEvents
|
|
6989
|
+
// (fragile — depends on React Aria's internal "ready" state), we read aria-valuenow from
|
|
6990
|
+
// the day/month segments after a microtask tick (so React has flushed segment renders) and
|
|
6991
|
+
// call handleSingleChange directly with a CalendarDate using the current year.
|
|
6992
6992
|
React.useEffect(function () {
|
|
6993
6993
|
var container = containerRef.current;
|
|
6994
6994
|
if (!container)
|
|
6995
6995
|
return;
|
|
6996
6996
|
var handleFocusIn = function (e) {
|
|
6997
|
-
var _a, _b;
|
|
6998
6997
|
var target = e.target;
|
|
6999
6998
|
if ((target === null || target === void 0 ? void 0 : target.getAttribute("data-type")) !== "year")
|
|
7000
6999
|
return;
|
|
7001
|
-
|
|
7002
|
-
|
|
7003
|
-
|
|
7004
|
-
|
|
7005
|
-
|
|
7006
|
-
|
|
7007
|
-
var
|
|
7008
|
-
|
|
7009
|
-
|
|
7000
|
+
if (target.getAttribute("aria-valuenow"))
|
|
7001
|
+
return; // year already set, controlled picker
|
|
7002
|
+
// Defer one tick so React finishes rendering the segment values from the last keydown
|
|
7003
|
+
setTimeout(function () {
|
|
7004
|
+
var dayEl = container.querySelector('[data-type="day"]');
|
|
7005
|
+
var monthEl = container.querySelector('[data-type="month"]');
|
|
7006
|
+
var yearEl = container.querySelector('[data-type="year"]');
|
|
7007
|
+
var dayVal = dayEl === null || dayEl === void 0 ? void 0 : dayEl.getAttribute("aria-valuenow");
|
|
7008
|
+
var monthVal = monthEl === null || monthEl === void 0 ? void 0 : monthEl.getAttribute("aria-valuenow");
|
|
7009
|
+
// If year is now set (user typed it or calendar selection), don't override
|
|
7010
|
+
if (yearEl === null || yearEl === void 0 ? void 0 : yearEl.getAttribute("aria-valuenow"))
|
|
7011
|
+
return;
|
|
7012
|
+
if (!dayVal || !monthVal)
|
|
7013
|
+
return;
|
|
7014
|
+
var day = parseInt(dayVal, 10);
|
|
7015
|
+
var month = parseInt(monthVal, 10);
|
|
7016
|
+
var year = $14e0f24ef4ac5c92$export$d0bdf45af03a6ea3($14e0f24ef4ac5c92$export$aa8b41735afcabd2()).year;
|
|
7017
|
+
if (isNaN(day) || isNaN(month))
|
|
7018
|
+
return;
|
|
7019
|
+
try {
|
|
7020
|
+
handleSingleChange(new $35ea8db9cb2ccb90$export$99faa760c7908e4f(year, month, day));
|
|
7021
|
+
}
|
|
7022
|
+
catch (_a) {
|
|
7023
|
+
// CalendarDate throws for invalid combos (e.g. Feb 30), ignore
|
|
7024
|
+
}
|
|
7025
|
+
}, 0);
|
|
7010
7026
|
};
|
|
7011
7027
|
container.addEventListener("focusin", handleFocusIn);
|
|
7012
7028
|
return function () { return container.removeEventListener("focusin", handleFocusIn); };
|
|
7013
|
-
}, []);
|
|
7029
|
+
}, [handleSingleChange]);
|
|
7014
7030
|
return (jsxRuntime.jsxs("div", { ref: containerRef, className: "w-full flex flex-wrap xs:gap-5 justify-between items-center", children: [jsxRuntime.jsxs(react.RadioGroup, { color: "primary", orientation: "horizontal", size: "sm", value: mode, onValueChange: handleModeChange, children: [jsxRuntime.jsx(react.Radio, { value: "single", children: t.dayMonthSingleOption }), jsxRuntime.jsx(react.Radio, { value: "range", children: t.dayMonthRangeOption })] }), mode === "single" ? (pickerValue ? (jsxRuntime.jsx(DatePicker, { value: pickerValue, onChange: handleSingleChange, "aria-label": t.dayMonthAriaLabel, endContent: jsxRuntime.jsx(IconComponent, { icon: "solar:calendar-outline" }), className: "w-full md:w-auto md:max-w-40 ".concat(NO_YEAR_CLASS) }, "dmp-c")) : (jsxRuntime.jsx(DatePicker, { placeholderValue: currentYearDate, onChange: handleSingleChange, "aria-label": t.dayMonthAriaLabel, endContent: jsxRuntime.jsx(IconComponent, { icon: "solar:calendar-outline" }), className: "w-full md:w-auto md:max-w-40 ".concat(NO_YEAR_CLASS) }, "dmp-u"))) : (rangeValue ? (jsxRuntime.jsx(DateRangePicker, { value: rangeValue, onChange: handleRangeChange, "aria-label": t.dayMonthRangeAriaLabel, endContent: jsxRuntime.jsx(IconComponent, { icon: "solar:calendar-outline" }), className: "w-full md:w-auto md:max-w-xs ".concat(NO_YEAR_CLASS) }, "dmpr-c")) : (jsxRuntime.jsx(DateRangePicker, { placeholderValue: currentYearDate, onChange: handleRangeChange, "aria-label": t.dayMonthRangeAriaLabel, endContent: jsxRuntime.jsx(IconComponent, { icon: "solar:calendar-outline" }), className: "w-full md:w-auto md:max-w-xs ".concat(NO_YEAR_CLASS) }, "dmpr-u")))] }));
|
|
7015
7031
|
};
|
|
7016
7032
|
|
|
@@ -7490,14 +7506,21 @@ var NumberFilter = function (_a) {
|
|
|
7490
7506
|
var DrawerFilters = function (_a) {
|
|
7491
7507
|
var isOpen = _a.isOpen, onOpenChange = _a.onOpenChange, config = _a.config, onApplyFilters = _a.onApplyFilters, onClearFilters = _a.onClearFilters, onCancel = _a.onCancel, className = _a.className, translations = _a.translations, initialValues = _a.initialValues;
|
|
7492
7508
|
var _b = React.useState(initialValues !== null && initialValues !== void 0 ? initialValues : {}), filterValues = _b[0], setFilterValues = _b[1];
|
|
7493
|
-
//
|
|
7494
|
-
//
|
|
7495
|
-
//
|
|
7509
|
+
// Tracks the last confirmed (applied) state. When the drawer reopens we restore this
|
|
7510
|
+
// so the user sees what was last applied — not just the raw initialValues (which the
|
|
7511
|
+
// parent can't easily reconstruct from the processed-string output of onApplyFilters).
|
|
7512
|
+
var confirmedValuesRef = React.useRef(initialValues !== null && initialValues !== void 0 ? initialValues : {});
|
|
7513
|
+
// Sync when the parent changes initialValues externally (e.g., full reset from outside).
|
|
7514
|
+
React.useEffect(function () {
|
|
7515
|
+
confirmedValuesRef.current = initialValues !== null && initialValues !== void 0 ? initialValues : {};
|
|
7516
|
+
setFilterValues(initialValues !== null && initialValues !== void 0 ? initialValues : {});
|
|
7517
|
+
}, [initialValues]);
|
|
7518
|
+
// Restore last confirmed state each time the drawer opens.
|
|
7496
7519
|
React.useEffect(function () {
|
|
7497
7520
|
if (isOpen) {
|
|
7498
|
-
setFilterValues(
|
|
7521
|
+
setFilterValues(confirmedValuesRef.current);
|
|
7499
7522
|
}
|
|
7500
|
-
}, [isOpen
|
|
7523
|
+
}, [isOpen]);
|
|
7501
7524
|
// Handle changes in individual filters
|
|
7502
7525
|
var handleFilterChange = React.useCallback(function (filterKey, value) {
|
|
7503
7526
|
setFilterValues(function (prev) {
|
|
@@ -7517,14 +7540,16 @@ var DrawerFilters = function (_a) {
|
|
|
7517
7540
|
onOpenChange(false);
|
|
7518
7541
|
}
|
|
7519
7542
|
}, [onOpenChange]);
|
|
7520
|
-
// Cancel and close drawer
|
|
7543
|
+
// Cancel and close drawer — revert in-progress changes to last confirmed state
|
|
7521
7544
|
var handleCancel = React.useCallback(function () {
|
|
7545
|
+
setFilterValues(confirmedValuesRef.current);
|
|
7522
7546
|
onCancel === null || onCancel === void 0 ? void 0 : onCancel();
|
|
7523
7547
|
onOpenChange(false);
|
|
7524
7548
|
}, [onCancel, onOpenChange]);
|
|
7525
7549
|
// Apply filters and process values
|
|
7526
7550
|
var handleApplyFilters = React.useCallback(function () {
|
|
7527
7551
|
var _a, _b;
|
|
7552
|
+
confirmedValuesRef.current = filterValues;
|
|
7528
7553
|
var processedFilters = {};
|
|
7529
7554
|
var _loop_1 = function (key, value) {
|
|
7530
7555
|
if (value === undefined || value === null) {
|
package/dist/index.esm.js
CHANGED
|
@@ -6966,13 +6966,13 @@ var DayMonthPicker = function (_a) {
|
|
|
6966
6966
|
}
|
|
6967
6967
|
onChange({ type: "dayMonthRange", dayMonth: null, dayMonthRange: null });
|
|
6968
6968
|
};
|
|
6969
|
-
var handleSingleChange = function (date) {
|
|
6969
|
+
var handleSingleChange = useCallback(function (date) {
|
|
6970
6970
|
onChange({
|
|
6971
6971
|
type: "dayMonth",
|
|
6972
6972
|
dayMonth: date,
|
|
6973
6973
|
dayMonthRange: null,
|
|
6974
6974
|
});
|
|
6975
|
-
};
|
|
6975
|
+
}, [onChange]);
|
|
6976
6976
|
var handleRangeChange = function (range) {
|
|
6977
6977
|
onChange({
|
|
6978
6978
|
type: "dayMonthRange",
|
|
@@ -6984,34 +6984,50 @@ var DayMonthPicker = function (_a) {
|
|
|
6984
6984
|
var pickerValue = (value === null || value === void 0 ? void 0 : value.type) === "dayMonth" ? value.dayMonth : null;
|
|
6985
6985
|
var rangeValue = (value === null || value === void 0 ? void 0 : value.type) === "dayMonthRange" ? value.dayMonthRange : null;
|
|
6986
6986
|
var containerRef = useRef(null);
|
|
6987
|
-
//
|
|
6988
|
-
//
|
|
6989
|
-
//
|
|
6990
|
-
//
|
|
6991
|
-
//
|
|
6992
|
-
//
|
|
6987
|
+
// When the user types day+month manually, React Aria auto-moves focus to the sr-only
|
|
6988
|
+
// year segment. We detect this via native focusin (which fires for every segment-to-segment
|
|
6989
|
+
// focus move, unlike React Aria's onFocus). Instead of dispatching synthetic KeyboardEvents
|
|
6990
|
+
// (fragile — depends on React Aria's internal "ready" state), we read aria-valuenow from
|
|
6991
|
+
// the day/month segments after a microtask tick (so React has flushed segment renders) and
|
|
6992
|
+
// call handleSingleChange directly with a CalendarDate using the current year.
|
|
6993
6993
|
useEffect(function () {
|
|
6994
6994
|
var container = containerRef.current;
|
|
6995
6995
|
if (!container)
|
|
6996
6996
|
return;
|
|
6997
6997
|
var handleFocusIn = function (e) {
|
|
6998
|
-
var _a, _b;
|
|
6999
6998
|
var target = e.target;
|
|
7000
6999
|
if ((target === null || target === void 0 ? void 0 : target.getAttribute("data-type")) !== "year")
|
|
7001
7000
|
return;
|
|
7002
|
-
|
|
7003
|
-
|
|
7004
|
-
|
|
7005
|
-
|
|
7006
|
-
|
|
7007
|
-
|
|
7008
|
-
var
|
|
7009
|
-
|
|
7010
|
-
|
|
7001
|
+
if (target.getAttribute("aria-valuenow"))
|
|
7002
|
+
return; // year already set, controlled picker
|
|
7003
|
+
// Defer one tick so React finishes rendering the segment values from the last keydown
|
|
7004
|
+
setTimeout(function () {
|
|
7005
|
+
var dayEl = container.querySelector('[data-type="day"]');
|
|
7006
|
+
var monthEl = container.querySelector('[data-type="month"]');
|
|
7007
|
+
var yearEl = container.querySelector('[data-type="year"]');
|
|
7008
|
+
var dayVal = dayEl === null || dayEl === void 0 ? void 0 : dayEl.getAttribute("aria-valuenow");
|
|
7009
|
+
var monthVal = monthEl === null || monthEl === void 0 ? void 0 : monthEl.getAttribute("aria-valuenow");
|
|
7010
|
+
// If year is now set (user typed it or calendar selection), don't override
|
|
7011
|
+
if (yearEl === null || yearEl === void 0 ? void 0 : yearEl.getAttribute("aria-valuenow"))
|
|
7012
|
+
return;
|
|
7013
|
+
if (!dayVal || !monthVal)
|
|
7014
|
+
return;
|
|
7015
|
+
var day = parseInt(dayVal, 10);
|
|
7016
|
+
var month = parseInt(monthVal, 10);
|
|
7017
|
+
var year = $14e0f24ef4ac5c92$export$d0bdf45af03a6ea3($14e0f24ef4ac5c92$export$aa8b41735afcabd2()).year;
|
|
7018
|
+
if (isNaN(day) || isNaN(month))
|
|
7019
|
+
return;
|
|
7020
|
+
try {
|
|
7021
|
+
handleSingleChange(new $35ea8db9cb2ccb90$export$99faa760c7908e4f(year, month, day));
|
|
7022
|
+
}
|
|
7023
|
+
catch (_a) {
|
|
7024
|
+
// CalendarDate throws for invalid combos (e.g. Feb 30), ignore
|
|
7025
|
+
}
|
|
7026
|
+
}, 0);
|
|
7011
7027
|
};
|
|
7012
7028
|
container.addEventListener("focusin", handleFocusIn);
|
|
7013
7029
|
return function () { return container.removeEventListener("focusin", handleFocusIn); };
|
|
7014
|
-
}, []);
|
|
7030
|
+
}, [handleSingleChange]);
|
|
7015
7031
|
return (jsxs("div", { ref: containerRef, className: "w-full flex flex-wrap xs:gap-5 justify-between items-center", children: [jsxs(RadioGroup, { color: "primary", orientation: "horizontal", size: "sm", value: mode, onValueChange: handleModeChange, children: [jsx(Radio, { value: "single", children: t.dayMonthSingleOption }), jsx(Radio, { value: "range", children: t.dayMonthRangeOption })] }), mode === "single" ? (pickerValue ? (jsx(DatePicker, { value: pickerValue, onChange: handleSingleChange, "aria-label": t.dayMonthAriaLabel, endContent: jsx(IconComponent, { icon: "solar:calendar-outline" }), className: "w-full md:w-auto md:max-w-40 ".concat(NO_YEAR_CLASS) }, "dmp-c")) : (jsx(DatePicker, { placeholderValue: currentYearDate, onChange: handleSingleChange, "aria-label": t.dayMonthAriaLabel, endContent: jsx(IconComponent, { icon: "solar:calendar-outline" }), className: "w-full md:w-auto md:max-w-40 ".concat(NO_YEAR_CLASS) }, "dmp-u"))) : (rangeValue ? (jsx(DateRangePicker, { value: rangeValue, onChange: handleRangeChange, "aria-label": t.dayMonthRangeAriaLabel, endContent: jsx(IconComponent, { icon: "solar:calendar-outline" }), className: "w-full md:w-auto md:max-w-xs ".concat(NO_YEAR_CLASS) }, "dmpr-c")) : (jsx(DateRangePicker, { placeholderValue: currentYearDate, onChange: handleRangeChange, "aria-label": t.dayMonthRangeAriaLabel, endContent: jsx(IconComponent, { icon: "solar:calendar-outline" }), className: "w-full md:w-auto md:max-w-xs ".concat(NO_YEAR_CLASS) }, "dmpr-u")))] }));
|
|
7016
7032
|
};
|
|
7017
7033
|
|
|
@@ -7491,14 +7507,21 @@ var NumberFilter = function (_a) {
|
|
|
7491
7507
|
var DrawerFilters = function (_a) {
|
|
7492
7508
|
var isOpen = _a.isOpen, onOpenChange = _a.onOpenChange, config = _a.config, onApplyFilters = _a.onApplyFilters, onClearFilters = _a.onClearFilters, onCancel = _a.onCancel, className = _a.className, translations = _a.translations, initialValues = _a.initialValues;
|
|
7493
7509
|
var _b = useState(initialValues !== null && initialValues !== void 0 ? initialValues : {}), filterValues = _b[0], setFilterValues = _b[1];
|
|
7494
|
-
//
|
|
7495
|
-
//
|
|
7496
|
-
//
|
|
7510
|
+
// Tracks the last confirmed (applied) state. When the drawer reopens we restore this
|
|
7511
|
+
// so the user sees what was last applied — not just the raw initialValues (which the
|
|
7512
|
+
// parent can't easily reconstruct from the processed-string output of onApplyFilters).
|
|
7513
|
+
var confirmedValuesRef = useRef(initialValues !== null && initialValues !== void 0 ? initialValues : {});
|
|
7514
|
+
// Sync when the parent changes initialValues externally (e.g., full reset from outside).
|
|
7515
|
+
useEffect(function () {
|
|
7516
|
+
confirmedValuesRef.current = initialValues !== null && initialValues !== void 0 ? initialValues : {};
|
|
7517
|
+
setFilterValues(initialValues !== null && initialValues !== void 0 ? initialValues : {});
|
|
7518
|
+
}, [initialValues]);
|
|
7519
|
+
// Restore last confirmed state each time the drawer opens.
|
|
7497
7520
|
useEffect(function () {
|
|
7498
7521
|
if (isOpen) {
|
|
7499
|
-
setFilterValues(
|
|
7522
|
+
setFilterValues(confirmedValuesRef.current);
|
|
7500
7523
|
}
|
|
7501
|
-
}, [isOpen
|
|
7524
|
+
}, [isOpen]);
|
|
7502
7525
|
// Handle changes in individual filters
|
|
7503
7526
|
var handleFilterChange = useCallback(function (filterKey, value) {
|
|
7504
7527
|
setFilterValues(function (prev) {
|
|
@@ -7518,14 +7541,16 @@ var DrawerFilters = function (_a) {
|
|
|
7518
7541
|
onOpenChange(false);
|
|
7519
7542
|
}
|
|
7520
7543
|
}, [onOpenChange]);
|
|
7521
|
-
// Cancel and close drawer
|
|
7544
|
+
// Cancel and close drawer — revert in-progress changes to last confirmed state
|
|
7522
7545
|
var handleCancel = useCallback(function () {
|
|
7546
|
+
setFilterValues(confirmedValuesRef.current);
|
|
7523
7547
|
onCancel === null || onCancel === void 0 ? void 0 : onCancel();
|
|
7524
7548
|
onOpenChange(false);
|
|
7525
7549
|
}, [onCancel, onOpenChange]);
|
|
7526
7550
|
// Apply filters and process values
|
|
7527
7551
|
var handleApplyFilters = useCallback(function () {
|
|
7528
7552
|
var _a, _b;
|
|
7553
|
+
confirmedValuesRef.current = filterValues;
|
|
7529
7554
|
var processedFilters = {};
|
|
7530
7555
|
var _loop_1 = function (key, value) {
|
|
7531
7556
|
if (value === undefined || value === null) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DrawerFilters.d.ts","sourceRoot":"","sources":["../../../../src/components/drawer-filters/DrawerFilters.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAEX,kBAAkB,EAOlB,MAAM,uBAAuB,CAAC;AAK/B;;;;;;;;;GASG;AACH,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,
|
|
1
|
+
{"version":3,"file":"DrawerFilters.d.ts","sourceRoot":"","sources":["../../../../src/components/drawer-filters/DrawerFilters.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAEX,kBAAkB,EAOlB,MAAM,uBAAuB,CAAC;AAK/B;;;;;;;;;GASG;AACH,eAAO,MAAM,aAAa,EAAE,KAAK,CAAC,EAAE,CAAC,kBAAkB,CAuNtD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DayMonthPicker.d.ts","sourceRoot":"","sources":["../../../../../src/components/drawer-filters/_internal/DayMonthPicker.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAKxE,UAAU,mBAAmB;IAC5B,IAAI,EAAE,UAAU,GAAG,eAAe,CAAC;IACnC,QAAQ,EAAE,SAAS,GAAG,IAAI,CAAC;IAC3B,aAAa,EAAE,UAAU,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;CAC5C;AAED,UAAU,mBAAmB;IAC5B,KAAK,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACnC,QAAQ,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAC/C,YAAY,CAAC,EAAE,yBAAyB,CAAC;CACzC;AAED,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,
|
|
1
|
+
{"version":3,"file":"DayMonthPicker.d.ts","sourceRoot":"","sources":["../../../../../src/components/drawer-filters/_internal/DayMonthPicker.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3D,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAE/B,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,wBAAwB,CAAC;AAKxE,UAAU,mBAAmB;IAC5B,IAAI,EAAE,UAAU,GAAG,eAAe,CAAC;IACnC,QAAQ,EAAE,SAAS,GAAG,IAAI,CAAC;IAC3B,aAAa,EAAE,UAAU,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;CAC5C;AAED,UAAU,mBAAmB;IAC5B,KAAK,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC;IACnC,QAAQ,EAAE,CAAC,KAAK,EAAE,mBAAmB,KAAK,IAAI,CAAC;IAC/C,YAAY,CAAC,EAAE,yBAAyB,CAAC;CACzC;AAED,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CA0JxD,CAAC"}
|