ublo-lib 1.47.45 → 1.47.46
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/es/common/components/date-picker/calendar.d.ts +2 -1
- package/es/common/components/date-picker/calendar.d.ts.map +1 -1
- package/es/common/components/date-picker/calendar.js +2 -4
- package/es/common/components/date-picker/context-lang.d.ts +6 -0
- package/es/common/components/date-picker/context-lang.d.ts.map +1 -0
- package/es/common/components/date-picker/context-lang.js +9 -0
- package/es/common/components/date-picker/date-item.d.ts +2 -1
- package/es/common/components/date-picker/date-item.d.ts.map +1 -1
- package/es/common/components/date-picker/date-item.js +1 -3
- package/es/common/components/date-picker/date-picker.d.ts +2 -1
- package/es/common/components/date-picker/date-picker.d.ts.map +1 -1
- package/es/common/components/date-picker/date-picker.js +6 -3
- package/es/common/components/date-picker/month.d.ts +2 -1
- package/es/common/components/date-picker/month.d.ts.map +1 -1
- package/es/common/components/date-picker/month.js +2 -4
- package/package.json +1 -1
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
export default function Calendar({ display, stayDates, min, max, onSubmit, availabilities, close, singleDate, submitOnSelectionEnd, disableConfirmModal, defaultSelecting, }: {
|
|
1
|
+
export default function Calendar({ display, lang, stayDates, min, max, onSubmit, availabilities, close, singleDate, submitOnSelectionEnd, disableConfirmModal, defaultSelecting, }: {
|
|
2
2
|
display: any;
|
|
3
|
+
lang: any;
|
|
3
4
|
stayDates?: any[];
|
|
4
5
|
min: any;
|
|
5
6
|
max: any;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../../../../src/common/components/date-picker/calendar.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../../../../src/common/components/date-picker/calendar.js"],"names":[],"mappings":"AAcA;;;;;;;;;;;;;4CAwQC"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import * as React from "react";
|
|
3
3
|
import classNames from "classnames";
|
|
4
|
-
import { useUbloContext } from "ublo/with-ublo";
|
|
5
4
|
import Dialog from "dt-design-system/es/dialog";
|
|
6
5
|
import Button from "dt-design-system/es/button";
|
|
7
6
|
import ChevronLeftIcon from "dt-design-system/es/icons/chevron-left";
|
|
@@ -13,9 +12,8 @@ import * as Messages from "./messages";
|
|
|
13
12
|
import * as Data from "./data";
|
|
14
13
|
import * as Utils from "./utils";
|
|
15
14
|
import styles from "./calendar.module.css";
|
|
16
|
-
export default function Calendar({ display, stayDates = [], min, max, onSubmit, availabilities, close, singleDate, submitOnSelectionEnd, disableConfirmModal, defaultSelecting, }) {
|
|
15
|
+
export default function Calendar({ display, lang, stayDates = [], min, max, onSubmit, availabilities, close, singleDate, submitOnSelectionEnd, disableConfirmModal, defaultSelecting, }) {
|
|
17
16
|
const date = min ? Utils.createGMTDate(min) : Utils.createGMTDate();
|
|
18
|
-
const { lang } = useUbloContext();
|
|
19
17
|
const [selectedDates, setSelectedDates] = React.useState(stayDates);
|
|
20
18
|
const firstRangeDate = selectedDates[0];
|
|
21
19
|
const selectedMonth = firstRangeDate
|
|
@@ -119,7 +117,7 @@ export default function Calendar({ display, stayDates = [], min, max, onSubmit,
|
|
|
119
117
|
[styles.calendarTouch]: hide2ndMonth,
|
|
120
118
|
[styles.calendarLoading]: isLoading,
|
|
121
119
|
});
|
|
122
|
-
return (_jsxs("div", { className: classes, "data-calendar": "", children: [!singleDate && (_jsx(Helper, { lang: lang, selecting: selecting, selectedDates: selectedDates, availabilities: availabilities, isLoading: isLoading, error: error })), _jsxs("div", { className: styles.months, children: [_jsxs("div", { className: styles.controls, "data-controls": "", children: [_jsx(Button, { variant: "transparent", className: styles.control, onClick: gotoPreviousMonth, disabled: isPast, children: _jsx(ChevronLeftIcon, {}) }), _jsx(Button, { variant: "transparent", className: styles.control, onClick: gotoNextMonth, children: _jsx(ChevronRightIcon, {}) })] }), _jsx(Month, { display: display, month: month, year: year, min: min, max: max, selecting: selecting, setSelecting: setSelecting, selectedDates: selectedDates, setSelectedDates: setSelectedDates, firstSelectedDate: firstSelectedDate, setFirstSelectedDate: setFirstSelectedDate, lastSelectedDate: lastSelectedDate, setLastSelectedDate: setLastSelectedDate, singleDate: singleDate, submitOnSelectionEnd: submitOnSelectionEnd, onSubmit: submit, stays: stays, matchingStays: matchingStays, allMatchingStaysEnd: allMatchingStaysEnd }), !hide2ndMonth && (_jsx(Month, { display: display, month: monthAlt, year: yearAlt, min: min, max: max, selecting: selecting, setSelecting: setSelecting, selectedDates: selectedDates, setSelectedDates: setSelectedDates, firstSelectedDate: firstSelectedDate, setFirstSelectedDate: setFirstSelectedDate, lastSelectedDate: lastSelectedDate, setLastSelectedDate: setLastSelectedDate, singleDate: singleDate, submitOnSelectionEnd: submitOnSelectionEnd, onSubmit: submit, stays: stays, matchingStays: matchingStays, allMatchingStaysEnd: allMatchingStaysEnd }))] }), _jsxs("div", { className: styles.buttons, children: [_jsx(Button, { variant: "transparent", className: styles.close, onClick: close, children: Messages.get(lang, "close") }), showReset && (_jsx(Button, { variant: "link", className: styles.reset, onClick: reset, children: Messages.get(lang, "reset") })), _jsxs(Button, { className: styles.submit, onClick: () => submit(selectedDates), disabled: !submitEnabled, children: [_jsx(CheckIcon, {}), Messages.get(lang, "submit")] })] }), _jsxs(Dialog, { isOpened: showPopup, className: styles.confirmDateChange, close: () => setShowPopup(false), children: [_jsx("div", { className: styles.confirmDateChangeTitle, children: Messages.get(lang, "warning-date-change-title") }), _jsx("div", { className: styles.confirmDateChangeMessage, children: Messages.get(lang, "warning-date-change-text") }), _jsxs("div", { className: styles.confirmDateChangeButtons, children: [_jsx("button", { className: classNames(styles.confirmDateChangeButton, styles.confirmDateChangeButtonCancel), onClick: () => setShowPopup(false), children: Messages.get(lang, "warning-date-change-cancel") }), _jsx("button", { className: classNames(styles.confirmDateChangeButton, styles.confirmDateChangeButtonConfirm), onClick: () => {
|
|
120
|
+
return (_jsxs("div", { className: classes, "data-calendar": "", children: [!singleDate && (_jsx(Helper, { lang: lang, selecting: selecting, selectedDates: selectedDates, availabilities: availabilities, isLoading: isLoading, error: error })), _jsxs("div", { className: styles.months, children: [_jsxs("div", { className: styles.controls, "data-controls": "", children: [_jsx(Button, { variant: "transparent", className: styles.control, onClick: gotoPreviousMonth, disabled: isPast, children: _jsx(ChevronLeftIcon, {}) }), _jsx(Button, { variant: "transparent", className: styles.control, onClick: gotoNextMonth, children: _jsx(ChevronRightIcon, {}) })] }), _jsx(Month, { display: display, lang: lang, month: month, year: year, min: min, max: max, selecting: selecting, setSelecting: setSelecting, selectedDates: selectedDates, setSelectedDates: setSelectedDates, firstSelectedDate: firstSelectedDate, setFirstSelectedDate: setFirstSelectedDate, lastSelectedDate: lastSelectedDate, setLastSelectedDate: setLastSelectedDate, singleDate: singleDate, submitOnSelectionEnd: submitOnSelectionEnd, onSubmit: submit, stays: stays, matchingStays: matchingStays, allMatchingStaysEnd: allMatchingStaysEnd }), !hide2ndMonth && (_jsx(Month, { display: display, month: monthAlt, year: yearAlt, min: min, max: max, selecting: selecting, setSelecting: setSelecting, selectedDates: selectedDates, setSelectedDates: setSelectedDates, firstSelectedDate: firstSelectedDate, setFirstSelectedDate: setFirstSelectedDate, lastSelectedDate: lastSelectedDate, setLastSelectedDate: setLastSelectedDate, singleDate: singleDate, submitOnSelectionEnd: submitOnSelectionEnd, onSubmit: submit, stays: stays, matchingStays: matchingStays, allMatchingStaysEnd: allMatchingStaysEnd }))] }), _jsxs("div", { className: styles.buttons, children: [_jsx(Button, { variant: "transparent", className: styles.close, onClick: close, children: Messages.get(lang, "close") }), showReset && (_jsx(Button, { variant: "link", className: styles.reset, onClick: reset, children: Messages.get(lang, "reset") })), _jsxs(Button, { className: styles.submit, onClick: () => submit(selectedDates), disabled: !submitEnabled, children: [_jsx(CheckIcon, {}), Messages.get(lang, "submit")] })] }), _jsxs(Dialog, { isOpened: showPopup, className: styles.confirmDateChange, close: () => setShowPopup(false), children: [_jsx("div", { className: styles.confirmDateChangeTitle, children: Messages.get(lang, "warning-date-change-title") }), _jsx("div", { className: styles.confirmDateChangeMessage, children: Messages.get(lang, "warning-date-change-text") }), _jsxs("div", { className: styles.confirmDateChangeButtons, children: [_jsx("button", { className: classNames(styles.confirmDateChangeButton, styles.confirmDateChangeButtonCancel), onClick: () => setShowPopup(false), children: Messages.get(lang, "warning-date-change-cancel") }), _jsx("button", { className: classNames(styles.confirmDateChangeButton, styles.confirmDateChangeButtonConfirm), onClick: () => {
|
|
123
121
|
window.sessionStorage.removeItem("cartId");
|
|
124
122
|
submit(selectedDates);
|
|
125
123
|
setShowPopup(false);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-lang.d.ts","sourceRoot":"","sources":["../../../../src/common/components/date-picker/context-lang.ts"],"names":[],"mappings":"AAGA,KAAK,KAAK,GAAG;IAEX,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACjC,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,EAAE,OAAO,EAAE,EAAE,KAAK,OAQrD"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
export default function DateItem({ date, index, month, year, min, max, selectedDates, setSelectedDates, setFirstSelectedDate, setLastSelectedDate, selecting, setSelecting, singleDate, submitOnSelectionEnd, onSubmit, stays, matchingStays, allMatchingStaysEnd, }: {
|
|
1
|
+
export default function DateItem({ date, lang, index, month, year, min, max, selectedDates, setSelectedDates, setFirstSelectedDate, setLastSelectedDate, selecting, setSelecting, singleDate, submitOnSelectionEnd, onSubmit, stays, matchingStays, allMatchingStaysEnd, }: {
|
|
2
2
|
date: any;
|
|
3
|
+
lang: any;
|
|
3
4
|
index: any;
|
|
4
5
|
month: any;
|
|
5
6
|
year: any;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date-item.d.ts","sourceRoot":"","sources":["../../../../src/common/components/date-picker/date-item.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"date-item.d.ts","sourceRoot":"","sources":["../../../../src/common/components/date-picker/date-item.js"],"names":[],"mappings":"AAQA;;;;;;;;;;;;;;;;;;;;4CAwLC"}
|
|
@@ -1,14 +1,12 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import * as React from "react";
|
|
3
3
|
import classNames from "classnames";
|
|
4
|
-
import { useUbloContext } from "ublo/with-ublo";
|
|
5
4
|
import Popover from "dt-design-system/es/popover";
|
|
6
5
|
import Button from "dt-design-system/es/button";
|
|
7
6
|
import * as Utils from "./utils";
|
|
8
7
|
import * as Messages from "./messages";
|
|
9
8
|
import styles from "./date-item.module.css";
|
|
10
|
-
export default function DateItem({ date, index, month, year, min, max, selectedDates, setSelectedDates, setFirstSelectedDate, setLastSelectedDate, selecting, setSelecting, singleDate, submitOnSelectionEnd, onSubmit, stays, matchingStays, allMatchingStaysEnd, }) {
|
|
11
|
-
const { lang } = useUbloContext();
|
|
9
|
+
export default function DateItem({ date, lang, index, month, year, min, max, selectedDates, setSelectedDates, setFirstSelectedDate, setLastSelectedDate, selecting, setSelecting, singleDate, submitOnSelectionEnd, onSubmit, stays, matchingStays, allMatchingStaysEnd, }) {
|
|
12
10
|
const today = Utils.createGMTDate();
|
|
13
11
|
const _date = React.useMemo(() => Utils.createGMTDate(date), [date]);
|
|
14
12
|
_date.setHours(0, 0, 0, 0);
|
|
@@ -3,6 +3,7 @@ import * as Utils from "./utils";
|
|
|
3
3
|
export { Data, Utils };
|
|
4
4
|
type Props = {
|
|
5
5
|
stayDates?: Date[];
|
|
6
|
+
lang?: string;
|
|
6
7
|
onSubmit: (dates: Date[]) => void;
|
|
7
8
|
close: () => void;
|
|
8
9
|
min?: string;
|
|
@@ -14,5 +15,5 @@ type Props = {
|
|
|
14
15
|
disableConfirmModal?: boolean;
|
|
15
16
|
defaultSelecting?: boolean;
|
|
16
17
|
};
|
|
17
|
-
export default function DatePicker({ stayDates, onSubmit, close, min, max, availabilities, popup, singleDate, submitOnSelectionEnd, disableConfirmModal, defaultSelecting, }: Props): import("react/jsx-runtime").JSX.Element;
|
|
18
|
+
export default function DatePicker({ stayDates, lang: langProps, onSubmit, close, min, max, availabilities, popup, singleDate, submitOnSelectionEnd, disableConfirmModal, defaultSelecting, }: Props): import("react/jsx-runtime").JSX.Element;
|
|
18
19
|
//# sourceMappingURL=date-picker.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"date-picker.d.ts","sourceRoot":"","sources":["../../../../src/common/components/date-picker/date-picker.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"date-picker.d.ts","sourceRoot":"","sources":["../../../../src/common/components/date-picker/date-picker.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,IAAI,MAAM,QAAQ,CAAC;AAC/B,OAAO,KAAK,KAAK,MAAM,SAAS,CAAC;AAKjC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AAEvB,KAAK,KAAK,GAAG;IACX,SAAS,CAAC,EAAE,IAAI,EAAE,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,IAAI,CAAC;IAClC,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,cAAc,CAAC,EAAE,GAAG,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEF,MAAM,CAAC,OAAO,UAAU,UAAU,CAAC,EACjC,SAAc,EACd,IAAI,EAAE,SAAS,EACf,QAAQ,EACR,KAAK,EACL,GAAG,EACH,GAAG,EACH,cAAc,EACd,KAAY,EACZ,UAAU,EACV,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,GACjB,EAAE,KAAK,2CA4CP"}
|
|
@@ -1,14 +1,17 @@
|
|
|
1
|
-
import { jsx as _jsx,
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import * as React from "react";
|
|
3
3
|
import classNames from "classnames";
|
|
4
|
+
import dynamic from "next/dynamic";
|
|
4
5
|
import useWindowSizes from "../../hooks/use-window-sizes";
|
|
5
6
|
import Calendar from "./calendar";
|
|
6
7
|
import * as Data from "./data";
|
|
7
8
|
import * as Utils from "./utils";
|
|
8
9
|
import styles from "./date-picker.module.css";
|
|
10
|
+
const ContextLang = dynamic(() => import("./context-lang"), { ssr: false });
|
|
9
11
|
export { Data, Utils };
|
|
10
|
-
export default function DatePicker({ stayDates = [], onSubmit, close, min, max, availabilities, popup = true, singleDate, submitOnSelectionEnd, disableConfirmModal, defaultSelecting, }) {
|
|
12
|
+
export default function DatePicker({ stayDates = [], lang: langProps, onSubmit, close, min, max, availabilities, popup = true, singleDate, submitOnSelectionEnd, disableConfirmModal, defaultSelecting, }) {
|
|
11
13
|
const [display, setDisplay] = React.useState();
|
|
14
|
+
const [lang, setLang] = React.useState(langProps);
|
|
12
15
|
const { width: windowWidth } = useWindowSizes();
|
|
13
16
|
React.useEffect(() => {
|
|
14
17
|
if (windowWidth <= Data.BREAKPOINTS.PHONE) {
|
|
@@ -26,5 +29,5 @@ export default function DatePicker({ stayDates = [], onSubmit, close, min, max,
|
|
|
26
29
|
const classes = classNames(styles.datePicker, {
|
|
27
30
|
[styles.datePickerPopup]: popup,
|
|
28
31
|
});
|
|
29
|
-
return (_jsxs(_Fragment, { children: [popup && _jsx("div", { className: styles.backdrop, onClick: close }),
|
|
32
|
+
return (_jsxs(_Fragment, { children: [popup && _jsx("div", { className: styles.backdrop, onClick: close }), _jsxs("div", { className: classes, children: [_jsx(Calendar, { display: display, stayDates: stayDates, min: min, max: max, onSubmit: onSubmit, singleDate: singleDate, submitOnSelectionEnd: submitOnSelectionEnd, availabilities: availabilities, disableConfirmModal: disableConfirmModal, close: close, defaultSelecting: defaultSelecting, lang: lang }), !lang && _jsx(ContextLang, { setLang: setLang })] })] }));
|
|
30
33
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
export default function Month({ display, month, year, min, max, selecting, setSelecting, selectedDates, setSelectedDates, setFirstSelectedDate, setLastSelectedDate, singleDate, submitOnSelectionEnd, onSubmit, stays, matchingStays, allMatchingStaysEnd, }: {
|
|
1
|
+
export default function Month({ display, lang, month, year, min, max, selecting, setSelecting, selectedDates, setSelectedDates, setFirstSelectedDate, setLastSelectedDate, singleDate, submitOnSelectionEnd, onSubmit, stays, matchingStays, allMatchingStaysEnd, }: {
|
|
2
2
|
display: any;
|
|
3
|
+
lang: any;
|
|
3
4
|
month: any;
|
|
4
5
|
year: any;
|
|
5
6
|
min: any;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"month.d.ts","sourceRoot":"","sources":["../../../../src/common/components/date-picker/month.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"month.d.ts","sourceRoot":"","sources":["../../../../src/common/components/date-picker/month.js"],"names":[],"mappings":"AAKA;;;;;;;;;;;;;;;;;;;4CAyEC"}
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
2
2
|
import * as React from "react";
|
|
3
|
-
import { useUbloContext } from "ublo/with-ublo";
|
|
4
3
|
import DateItem from "./date-item";
|
|
5
4
|
import * as Data from "./data";
|
|
6
5
|
import styles from "./month.module.css";
|
|
7
|
-
export default function Month({ display, month, year, min, max, selecting, setSelecting, selectedDates, setSelectedDates, setFirstSelectedDate, setLastSelectedDate, singleDate, submitOnSelectionEnd, onSubmit, stays, matchingStays, allMatchingStaysEnd, }) {
|
|
8
|
-
const { lang } = useUbloContext();
|
|
6
|
+
export default function Month({ display, lang, month, year, min, max, selecting, setSelecting, selectedDates, setSelectedDates, setFirstSelectedDate, setLastSelectedDate, singleDate, submitOnSelectionEnd, onSubmit, stays, matchingStays, allMatchingStaysEnd, }) {
|
|
9
7
|
const i18nMonths = Data.MONTHS[lang] || Data.MONTHS.en;
|
|
10
8
|
const monthName = i18nMonths[Object.keys(i18nMonths)[month - 1]];
|
|
11
9
|
const i18nWeekDays = Data.WEEK_DAYS[lang] || Data.WEEK_DAYS.en;
|
|
@@ -16,6 +14,6 @@ export default function Month({ display, month, year, min, max, selecting, setSe
|
|
|
16
14
|
return (_jsxs("div", { className: styles.month, "data-month": "", children: [_jsxs("div", { className: styles.title, children: [monthName, " ", year] }), _jsx("div", { className: styles.days, "data-days": "", children: days.map((day) => {
|
|
17
15
|
return (_jsx("div", { className: styles.day, children: i18nWeekDays[day] }, day));
|
|
18
16
|
}) }), _jsx("div", { className: styles.dates, children: calendarDates.map((date, i) => {
|
|
19
|
-
return (_jsx(DateItem, { index: i, display: display, date: date, month: month, year: year, min: min, max: max, selectedDates: selectedDates, setSelectedDates: setSelectedDates, setFirstSelectedDate: setFirstSelectedDate, setLastSelectedDate: setLastSelectedDate, selecting: selecting, setSelecting: setSelecting, singleDate: singleDate, submitOnSelectionEnd: submitOnSelectionEnd, onSubmit: onSubmit, stays: stays, matchingStays: matchingStays, allMatchingStaysEnd: allMatchingStaysEnd }, i));
|
|
17
|
+
return (_jsx(DateItem, { index: i, display: display, lang: lang, date: date, month: month, year: year, min: min, max: max, selectedDates: selectedDates, setSelectedDates: setSelectedDates, setFirstSelectedDate: setFirstSelectedDate, setLastSelectedDate: setLastSelectedDate, selecting: selecting, setSelecting: setSelecting, singleDate: singleDate, submitOnSelectionEnd: submitOnSelectionEnd, onSubmit: onSubmit, stays: stays, matchingStays: matchingStays, allMatchingStaysEnd: allMatchingStaysEnd }, i));
|
|
20
18
|
}) })] }));
|
|
21
19
|
}
|