pds-dev-kit-web 2.2.202 → 2.2.204

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.
Files changed (53) hide show
  1. package/dist/index.d.ts +2 -2
  2. package/dist/index.js +3 -2
  3. package/dist/src/common/services/i18n/resources/en.json +36 -0
  4. package/dist/src/common/services/i18n/resources/es.json +36 -0
  5. package/dist/src/common/services/i18n/resources/fil.json +36 -0
  6. package/dist/src/common/services/i18n/resources/index.d.ts +252 -0
  7. package/dist/src/common/services/i18n/resources/ja.json +36 -0
  8. package/dist/src/common/services/i18n/resources/ko.json +36 -0
  9. package/dist/src/common/services/i18n/resources/zh-cn.json +36 -0
  10. package/dist/src/common/services/i18n/resources/zh-tw.json +36 -0
  11. package/dist/src/common/utils/dateHelper.d.ts +3 -0
  12. package/dist/src/common/utils/dateHelper.js +37 -0
  13. package/dist/src/core/pricing/policy.js +1 -1
  14. package/dist/src/desktop/components/Calendar/AllDaySchedulesSection.d.ts +12 -0
  15. package/dist/src/desktop/components/Calendar/AllDaySchedulesSection.js +134 -0
  16. package/dist/src/desktop/components/Calendar/Calendar.d.ts +4 -0
  17. package/dist/src/desktop/components/Calendar/Calendar.js +399 -0
  18. package/dist/src/desktop/components/Calendar/CalendarContext.d.ts +51 -0
  19. package/dist/src/desktop/components/Calendar/CalendarContext.js +76 -0
  20. package/dist/src/desktop/components/Calendar/CurrentTimeIndicator.d.ts +7 -0
  21. package/dist/src/desktop/components/Calendar/CurrentTimeIndicator.js +48 -0
  22. package/dist/src/desktop/components/Calendar/DailyView.d.ts +2 -0
  23. package/dist/src/desktop/components/Calendar/DailyView.js +91 -0
  24. package/dist/src/desktop/components/Calendar/MonthlyView.d.ts +28 -0
  25. package/dist/src/desktop/components/Calendar/MonthlyView.js +381 -0
  26. package/dist/src/desktop/components/Calendar/MultiWeekSchedulesLayer.d.ts +21 -0
  27. package/dist/src/desktop/components/Calendar/MultiWeekSchedulesLayer.js +204 -0
  28. package/dist/src/desktop/components/Calendar/ScheduleItem.d.ts +25 -0
  29. package/dist/src/desktop/components/Calendar/ScheduleItem.js +56 -0
  30. package/dist/src/desktop/components/Calendar/TimeBasedScheduleItem.d.ts +12 -0
  31. package/dist/src/desktop/components/Calendar/TimeBasedScheduleItem.js +184 -0
  32. package/dist/src/desktop/components/Calendar/WeeklyView.d.ts +6 -0
  33. package/dist/src/desktop/components/Calendar/WeeklyView.js +114 -0
  34. package/dist/src/desktop/components/Calendar/YearlyView.d.ts +13 -0
  35. package/dist/src/desktop/components/Calendar/YearlyView.js +76 -0
  36. package/dist/src/desktop/components/Calendar/calendarUtils.d.ts +24 -0
  37. package/dist/src/desktop/components/Calendar/calendarUtils.js +87 -0
  38. package/dist/src/desktop/components/Calendar/constants.d.ts +1 -0
  39. package/dist/src/desktop/components/Calendar/constants.js +31 -0
  40. package/dist/src/desktop/components/Calendar/index.d.ts +14 -0
  41. package/dist/src/desktop/components/Calendar/index.js +42 -0
  42. package/dist/src/desktop/components/Calendar/timeFormatUtils.d.ts +16 -0
  43. package/dist/src/desktop/components/Calendar/timeFormatUtils.js +45 -0
  44. package/dist/src/desktop/components/Calendar/types.d.ts +61 -0
  45. package/dist/src/desktop/components/Calendar/types.js +2 -0
  46. package/dist/src/desktop/components/PriceTextField/PriceTextField.js +4 -3
  47. package/dist/src/desktop/components/index.d.ts +2 -1
  48. package/dist/src/desktop/components/index.js +3 -1
  49. package/dist/src/desktop/index.d.ts +1 -1
  50. package/dist/src/desktop/index.js +2 -1
  51. package/dist/src/mobile/components/PriceTextField/PriceTextField.js +4 -3
  52. package/package.json +1 -1
  53. package/release-note.md +2 -2
@@ -10,4 +10,7 @@ export declare class DateHelper {
10
10
  static addMonths(date: Date, diff: number): Date;
11
11
  static addDays(date: Date, diff: number): Date;
12
12
  static getCalendarDates(monthDate: Date, startOfWeek: 'sunday' | 'monday'): Date[];
13
+ static endOfMonth(date: Date): Date;
14
+ static getCalendarDatesForCalendar(monthDate: Date, startOfWeek: 'sunday' | 'monday'): Date[];
15
+ static getDatesInRange(startDate: Date, endDate: Date): Date[];
13
16
  }
@@ -82,6 +82,43 @@ var DateHelper = /** @class */ (function () {
82
82
  var calendarStart = this.addDays(start, -offset);
83
83
  return Array.from({ length: 42 }, function (_, i) { return _this.addDays(calendarStart, i); });
84
84
  };
85
+ /*
86
+ * 월의 마지막 날짜 반환
87
+ */
88
+ DateHelper.endOfMonth = function (date) {
89
+ return new Date(date.getFullYear(), date.getMonth() + 1, 0);
90
+ };
91
+ /*
92
+ * 일반 캘린더처럼 현재 달의 날짜만 표시하고, 필요한 경우에만 이전/다음 달의 날짜를 포함
93
+ */
94
+ DateHelper.getCalendarDatesForCalendar = function (monthDate, startOfWeek) {
95
+ var start = this.startOfMonth(monthDate);
96
+ var end = this.endOfMonth(monthDate);
97
+ var startIndex = startOfWeek === 'monday' ? 1 : 0;
98
+ // 시작 날짜의 요일 조정
99
+ var startOffset = (start.getDay() - startIndex + 7) % 7;
100
+ var calendarStart = this.addDays(start, -startOffset);
101
+ // 마지막 날짜의 요일 조정
102
+ var endOffset = (6 - end.getDay() + startIndex) % 7;
103
+ var calendarEnd = this.addDays(end, endOffset);
104
+ // 전체 날짜 배열 생성
105
+ var dates = [];
106
+ var currentDate = new Date(calendarStart);
107
+ while (currentDate <= calendarEnd) {
108
+ dates.push(new Date(currentDate));
109
+ currentDate = this.addDays(currentDate, 1);
110
+ }
111
+ return dates;
112
+ };
113
+ DateHelper.getDatesInRange = function (startDate, endDate) {
114
+ var dates = [];
115
+ var currentDate = new Date(startDate);
116
+ while (currentDate <= endDate) {
117
+ dates.push(new Date(currentDate));
118
+ currentDate.setDate(currentDate.getDate() + 1);
119
+ }
120
+ return dates;
121
+ };
85
122
  return DateHelper;
86
123
  }());
87
124
  exports.DateHelper = DateHelper;
@@ -30,7 +30,7 @@ exports.DEFAULT_CURRENCY_PRICE_POLICIES = (_a = {},
30
30
  currency: types_1.CURRENCY_MAP[types_1.CurrencyCode.USD],
31
31
  minPayment: { amount: 5, currency: types_1.CurrencyCode.USD },
32
32
  maxPayment: { amount: 10000.0, currency: types_1.CurrencyCode.USD },
33
- paymentUnit: 1
33
+ paymentUnit: 0.01
34
34
  },
35
35
  _a[types_1.CurrencyCode.JPY] = {
36
36
  currency: types_1.CURRENCY_MAP[types_1.CurrencyCode.JPY],
@@ -0,0 +1,12 @@
1
+ import type { Schedule, displayAllDayScheduleMode } from './types';
2
+ import type React from 'react';
3
+ interface AllDaySchedulesSectionProps {
4
+ calendarDates: Date[];
5
+ displayAllDayScheduleMode?: displayAllDayScheduleMode;
6
+ getSchedulesForDate: (date: Date) => Schedule[];
7
+ handleDateDragOver: (date: Date, e: React.DragEvent) => void;
8
+ handleDateDragLeave: () => void;
9
+ handleDateDrop: (date: Date, e: React.DragEvent) => void;
10
+ }
11
+ export declare const AllDaySchedulesSection: React.FC<AllDaySchedulesSectionProps>;
12
+ export {};
@@ -0,0 +1,134 @@
1
+ "use strict";
2
+ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
3
+ if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
4
+ return cooked;
5
+ };
6
+ var __assign = (this && this.__assign) || function () {
7
+ __assign = Object.assign || function(t) {
8
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
9
+ s = arguments[i];
10
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
11
+ t[p] = s[p];
12
+ }
13
+ return t;
14
+ };
15
+ return __assign.apply(this, arguments);
16
+ };
17
+ var __importDefault = (this && this.__importDefault) || function (mod) {
18
+ return (mod && mod.__esModule) ? mod : { "default": mod };
19
+ };
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ exports.AllDaySchedulesSection = void 0;
22
+ var jsx_runtime_1 = require("react/jsx-runtime");
23
+ var react_1 = require("react");
24
+ var react_i18next_1 = require("react-i18next");
25
+ var styled_components_1 = __importDefault(require("styled-components"));
26
+ var TextLabel_1 = require("../TextLabel");
27
+ var CalendarContext_1 = require("./CalendarContext");
28
+ var calendarUtils_1 = require("./calendarUtils");
29
+ var AllDaySchedulesSection = function (_a) {
30
+ var calendarDates = _a.calendarDates, _b = _a.displayAllDayScheduleMode, displayAllDayScheduleMode = _b === void 0 ? 'use' : _b, getSchedulesForDate = _a.getSchedulesForDate, handleDateDragOver = _a.handleDateDragOver, handleDateDragLeave = _a.handleDateDragLeave, handleDateDrop = _a.handleDateDrop;
31
+ var t = (0, react_i18next_1.useTranslation)().t;
32
+ var renderScheduleItem = (0, CalendarContext_1.useCalendarContext)().renderScheduleItem;
33
+ // 다중 날짜 종일 이벤트 계산
34
+ var multiDayAllDaySchedules = (0, react_1.useMemo)(function () {
35
+ var allSchedules = new Map();
36
+ var multiDaySchedules = [];
37
+ // 모든 종일 이벤트 수집
38
+ calendarDates.forEach(function (date) {
39
+ var schedulesForDate = getSchedulesForDate(date);
40
+ schedulesForDate.forEach(function (schedule) {
41
+ if (!(0, calendarUtils_1.calculateIsAllDay)(new Date(schedule.startDate), new Date(schedule.endDate))) {
42
+ return;
43
+ }
44
+ var scheduleStart = new Date(schedule.startDate);
45
+ var scheduleEnd = new Date(schedule.endDate);
46
+ scheduleStart.setHours(0, 0, 0, 0);
47
+ scheduleEnd.setHours(0, 0, 0, 0);
48
+ // 단일 날짜 종일 이벤트는 제외
49
+ if (scheduleStart.getTime() === scheduleEnd.getTime()) {
50
+ return;
51
+ }
52
+ allSchedules.set(schedule.id, schedule);
53
+ });
54
+ });
55
+ // 주간 뷰의 시작/끝 날짜 계산
56
+ var weekStart = new Date(calendarDates[0]);
57
+ var weekEnd = new Date(calendarDates[calendarDates.length - 1]);
58
+ weekStart.setHours(0, 0, 0, 0);
59
+ weekEnd.setHours(0, 0, 0, 0);
60
+ // 다중 날짜 이벤트의 위치 계산
61
+ var scheduleIndexCounter = 0;
62
+ allSchedules.forEach(function (schedule) {
63
+ var scheduleStart = new Date(schedule.startDate);
64
+ var scheduleEnd = new Date(schedule.endDate);
65
+ scheduleStart.setHours(0, 0, 0, 0);
66
+ scheduleEnd.setHours(0, 0, 0, 0);
67
+ // 이벤트가 현재 주와 교차하지 않으면 건너뛰기
68
+ var isIntersecting = !(scheduleEnd.getTime() < weekStart.getTime() || scheduleStart.getTime() > weekEnd.getTime());
69
+ if (!isIntersecting) {
70
+ return;
71
+ }
72
+ // 표시할 실제 시작/끝 날짜 계산 (주간 뷰 범위 내로 제한)
73
+ var displayStart = new Date(Math.max(scheduleStart.getTime(), weekStart.getTime()));
74
+ var displayEnd = new Date(Math.min(scheduleEnd.getTime(), weekEnd.getTime()));
75
+ // 시작과 끝 컬럼 찾기
76
+ var startIndex = calendarDates.findIndex(function (date) {
77
+ var d = new Date(date);
78
+ d.setHours(0, 0, 0, 0);
79
+ return d.getTime() === displayStart.getTime();
80
+ });
81
+ var endIndex = calendarDates.findIndex(function (date) {
82
+ var d = new Date(date);
83
+ d.setHours(0, 0, 0, 0);
84
+ return d.getTime() === displayEnd.getTime();
85
+ });
86
+ if (startIndex === -1 || endIndex === -1) {
87
+ return;
88
+ }
89
+ var startCol = startIndex + 2; // 라벨 컬럼(1) + 0-based 인덱스 보정
90
+ var endCol = endIndex + 2;
91
+ multiDaySchedules.push({
92
+ schedule: schedule,
93
+ startCol: startCol,
94
+ endCol: endCol,
95
+ scheduleIndex: scheduleIndexCounter
96
+ });
97
+ scheduleIndexCounter += 1;
98
+ });
99
+ return multiDaySchedules;
100
+ }, [calendarDates, getSchedulesForDate]);
101
+ if (displayAllDayScheduleMode === 'none') {
102
+ return null;
103
+ }
104
+ return ((0, jsx_runtime_1.jsxs)(S_WeeklyAllDaySection, __assign({ "$rowCount": Math.max(1, multiDayAllDaySchedules.length) }, { children: [(0, jsx_runtime_1.jsx)(S_AllDayLabel, { children: (0, jsx_runtime_1.jsx)(TextLabel_1.TextLabel, { styleTheme: "caption1Regular", colorTheme: "sysTextTertiary", text: t('calendar_all_day') }) }), (0, jsx_runtime_1.jsx)(S_WeeklyAllDayGrid, { children: calendarDates.map(function (date, index) {
105
+ // 단일 날짜 종일 이벤트만 표시
106
+ var singleDayAllDaySchedules = getSchedulesForDate(date).filter(function (schedule) {
107
+ var isAllDay = (0, calendarUtils_1.calculateIsAllDay)(new Date(schedule.startDate), new Date(schedule.endDate));
108
+ if (!isAllDay)
109
+ return false;
110
+ var scheduleStart = new Date(schedule.startDate);
111
+ var scheduleEnd = new Date(schedule.endDate);
112
+ scheduleStart.setHours(0, 0, 0, 0);
113
+ scheduleEnd.setHours(0, 0, 0, 0);
114
+ // 단일 날짜 종일 이벤트만 포함
115
+ return scheduleStart.getTime() === scheduleEnd.getTime();
116
+ });
117
+ return ((0, jsx_runtime_1.jsx)(S_WeeklyAllDayCell, __assign({ onDragOver: function (e) { return handleDateDragOver(date, e); }, onDragLeave: handleDateDragLeave, onDrop: function (e) { return handleDateDrop(date, e); } }, { children: singleDayAllDaySchedules.map(function (schedule) { return renderScheduleItem(schedule); }) }), index));
118
+ }) }), multiDayAllDaySchedules.map(function (_a) {
119
+ var schedule = _a.schedule, startCol = _a.startCol, endCol = _a.endCol, scheduleIndex = _a.scheduleIndex;
120
+ return ((0, jsx_runtime_1.jsx)(S_MultiDayAllDaySchedule, __assign({ "$startCol": startCol, "$endCol": endCol, "$scheduleIndex": scheduleIndex }, { children: renderScheduleItem(schedule) }), "multi-".concat(schedule.id)));
121
+ })] })));
122
+ };
123
+ exports.AllDaySchedulesSection = AllDaySchedulesSection;
124
+ var S_WeeklyAllDaySection = styled_components_1.default.div(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n border-bottom: 1px solid ", ";\n display: grid;\n grid-template-columns: 80px repeat(7, 1fr);\n grid-template-rows: repeat(", ", 24px);\n min-height: 40px;\n position: relative;\n"], ["\n border-bottom: 1px solid ", ";\n display: grid;\n grid-template-columns: 80px repeat(7, 1fr);\n grid-template-rows: repeat(", ", 24px);\n min-height: 40px;\n position: relative;\n"])), function (_a) {
125
+ var theme = _a.theme;
126
+ return theme.ui_cpnt_divider;
127
+ }, function (props) { return props.$rowCount; });
128
+ var S_AllDayLabel = styled_components_1.default.div(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n align-items: center;\n display: flex;\n justify-content: center;\n padding: 8px;\n"], ["\n align-items: center;\n display: flex;\n justify-content: center;\n padding: 8px;\n"])));
129
+ var S_WeeklyAllDayGrid = styled_components_1.default.div(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n display: contents;\n"], ["\n display: contents;\n"])));
130
+ var S_WeeklyAllDayCell = styled_components_1.default.div(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n align-items: center;\n display: flex;\n gap: 2px;\n padding: 4px;\n"], ["\n align-items: center;\n display: flex;\n gap: 2px;\n padding: 4px;\n"])));
131
+ var S_MultiDayAllDaySchedule = styled_components_1.default.div(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n grid-area: ", ";\n margin: 2px;\n position: relative;\n z-index: 10;\n"], ["\n grid-area: ", ";\n margin: 2px;\n position: relative;\n z-index: 10;\n"])), function (props) {
132
+ return "".concat(1 + props.$scheduleIndex, " / ").concat(props.$startCol, " / ").concat(2 + props.$scheduleIndex, " / ").concat(props.$endCol + 1);
133
+ });
134
+ var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5;
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import type { CalendarProps } from './types';
3
+ declare const Calendar: React.FC<CalendarProps>;
4
+ export default Calendar;
@@ -0,0 +1,399 @@
1
+ "use strict";
2
+ var __makeTemplateObject = (this && this.__makeTemplateObject) || function (cooked, raw) {
3
+ if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
4
+ return cooked;
5
+ };
6
+ var __assign = (this && this.__assign) || function () {
7
+ __assign = Object.assign || function(t) {
8
+ for (var s, i = 1, n = arguments.length; i < n; i++) {
9
+ s = arguments[i];
10
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
11
+ t[p] = s[p];
12
+ }
13
+ return t;
14
+ };
15
+ return __assign.apply(this, arguments);
16
+ };
17
+ var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {
18
+ if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
19
+ if (ar || !(i in from)) {
20
+ if (!ar) ar = Array.prototype.slice.call(from, 0, i);
21
+ ar[i] = from[i];
22
+ }
23
+ }
24
+ return to.concat(ar || Array.prototype.slice.call(from));
25
+ };
26
+ var __importDefault = (this && this.__importDefault) || function (mod) {
27
+ return (mod && mod.__esModule) ? mod : { "default": mod };
28
+ };
29
+ Object.defineProperty(exports, "__esModule", { value: true });
30
+ var jsx_runtime_1 = require("react/jsx-runtime");
31
+ var react_1 = require("react");
32
+ var react_i18next_1 = require("react-i18next");
33
+ var dateHelper_1 = require("../../../common/utils/dateHelper");
34
+ var styled_components_1 = __importDefault(require("styled-components"));
35
+ var Dropdown_1 = require("../Dropdown");
36
+ var IconButton_1 = require("../IconButton");
37
+ var TextButton_1 = require("../TextButton");
38
+ var TextLabel_1 = require("../TextLabel");
39
+ var CalendarContext_1 = require("./CalendarContext");
40
+ var calendarUtils_1 = require("./calendarUtils");
41
+ var DailyView_1 = require("./DailyView");
42
+ var MonthlyView_1 = require("./MonthlyView");
43
+ var WeeklyView_1 = require("./WeeklyView");
44
+ var YearlyView_1 = require("./YearlyView");
45
+ var Calendar = function (_a) {
46
+ var _b;
47
+ var _c = _a.defaultViewType, defaultViewType = _c === void 0 ? 'MONTHLY' : _c, _d = _a.viewTypes, viewTypes = _d === void 0 ? ['MONTHLY', 'WEEKLY', 'DAILY', 'YEARLY'] : _d, _e = _a.displayAllDayScheduleMode, displayAllDayScheduleMode = _e === void 0 ? 'none' : _e, _f = _a.startOfWeek, startOfWeek = _f === void 0 ? 'sunday' : _f, _g = _a.todayBtnMode, todayBtnMode = _g === void 0 ? 'use' : _g, _h = _a.schedules, schedules = _h === void 0 ? [] : _h, config = _a.config, onActionDispatch = _a.onActionDispatch;
48
+ // 다국어 키를 CalendarViewType으로 매핑하는 함수
49
+ var mapI18nKeyToViewType = function (key) {
50
+ switch (key) {
51
+ case 'str_fm_month':
52
+ return 'MONTHLY';
53
+ case 'str_fm_week':
54
+ return 'WEEKLY';
55
+ case 'str_fm_day':
56
+ return 'DAILY';
57
+ case 'str_fm_year':
58
+ return 'YEARLY';
59
+ default:
60
+ return key;
61
+ }
62
+ };
63
+ // 다국어 키를 받아서 내부적으로 매핑
64
+ var actualDefaultViewType = mapI18nKeyToViewType(defaultViewType);
65
+ var actualViewTypes = viewTypes.map(mapI18nKeyToViewType);
66
+ var t = (0, react_i18next_1.useTranslation)().t;
67
+ var _j = (0, react_1.useState)(actualDefaultViewType), currentViewType = _j[0], setCurrentViewType = _j[1];
68
+ var _k = (0, react_1.useState)(new Date()), selectedDate = _k[0], setSelectedDate = _k[1];
69
+ var _l = (0, react_1.useState)(null), dragStartDate = _l[0], setDragStartDate = _l[1];
70
+ var _m = (0, react_1.useState)(null), dragEndDate = _m[0], setDragEndDate = _m[1];
71
+ var _o = (0, react_1.useState)(false), isDragging = _o[0], setIsDragging = _o[1];
72
+ var _p = (0, react_1.useState)(null), draggedSchedule = _p[0], setDraggedSchedule = _p[1];
73
+ var _q = (0, react_1.useState)(null), isDragOverDate = _q[0], setIsDragOverDate = _q[1];
74
+ var _r = (0, react_1.useState)([]), selectedSchedules = _r[0], setSelectedSchedules = _r[1];
75
+ var _s = (0, react_1.useState)([]), selectedDates = _s[0], setSelectedDates = _s[1];
76
+ var _t = (0, react_1.useState)(null), lastSelectedDate = _t[0], setLastSelectedDate = _t[1];
77
+ // 오늘 날짜인지 확인
78
+ var today = new Date();
79
+ var isToday = function (date) { return dateHelper_1.DateHelper.isSameDay(date, today); };
80
+ var isDraggable = !!((_b = config === null || config === void 0 ? void 0 : config.SCHEDULE) === null || _b === void 0 ? void 0 : _b.DRAG);
81
+ // 과거 날짜인지 확인
82
+ var isPastDate = (0, react_1.useCallback)(function (date) { return dateHelper_1.DateHelper.isBefore(date, today) && !dateHelper_1.DateHelper.isSameDay(date, today); }, [today]);
83
+ // 뷰 타입에 따른 시작일과 종료일 계산
84
+ var _u = (0, calendarUtils_1.calculateDateRange)(currentViewType, selectedDate), startDate = _u.startDate, endDate = _u.endDate;
85
+ // 뷰 타입 변경 처리
86
+ var handleViewTypeChange = (0, react_1.useCallback)(function (option) {
87
+ var newViewType = option.value;
88
+ setCurrentViewType(newViewType);
89
+ // 새로운 뷰 타입 기준으로 startDate와 endDate 계산
90
+ var _a = (0, calendarUtils_1.calculateDateRange)(newViewType, selectedDate), newStartDate = _a.startDate, newEndDate = _a.endDate;
91
+ onActionDispatch === null || onActionDispatch === void 0 ? void 0 : onActionDispatch({
92
+ type: 'CALENDAR_TYPE_CHANGE',
93
+ payload: {
94
+ type: newViewType,
95
+ startDate: (0, calendarUtils_1.toUTC)(newStartDate),
96
+ endDate: (0, calendarUtils_1.toUTC)(newEndDate)
97
+ }
98
+ });
99
+ }, [selectedDate, onActionDispatch, calendarUtils_1.calculateDateRange]);
100
+ // "오늘" 버튼 클릭 이벤트
101
+ var handleTodayClick = (0, react_1.useCallback)(function () {
102
+ setSelectedDate(today);
103
+ // 오늘 날짜 기준으로 startDate와 endDate 계산
104
+ var _a = (0, calendarUtils_1.calculateDateRange)(currentViewType, today), newStartDate = _a.startDate, newEndDate = _a.endDate;
105
+ onActionDispatch === null || onActionDispatch === void 0 ? void 0 : onActionDispatch({
106
+ type: 'TODAY_BUTTON_CLICK',
107
+ payload: {
108
+ startDate: (0, calendarUtils_1.toUTC)(newStartDate),
109
+ endDate: (0, calendarUtils_1.toUTC)(newEndDate)
110
+ }
111
+ });
112
+ }, [today, currentViewType, onActionDispatch, calendarUtils_1.calculateDateRange]);
113
+ // 이전/다음 이동 함수
114
+ var navigateDate = (0, react_1.useCallback)(function (direction) {
115
+ var increment = direction === 'next' ? 1 : -1;
116
+ var getNewDateByViewType = function (viewType) {
117
+ switch (viewType) {
118
+ case 'DAILY':
119
+ return dateHelper_1.DateHelper.addDays(selectedDate, increment);
120
+ case 'WEEKLY':
121
+ return dateHelper_1.DateHelper.addDays(selectedDate, increment * 7);
122
+ case 'MONTHLY':
123
+ return dateHelper_1.DateHelper.addMonths(selectedDate, increment);
124
+ case 'YEARLY':
125
+ return new Date(selectedDate.getFullYear() + increment, selectedDate.getMonth(), selectedDate.getDate());
126
+ default:
127
+ return selectedDate;
128
+ }
129
+ };
130
+ var newDate = getNewDateByViewType(currentViewType);
131
+ setSelectedDate(newDate);
132
+ // 새로운 날짜 기준으로 startDate와 endDate 계산
133
+ var _a = (0, calendarUtils_1.calculateDateRange)(currentViewType, newDate), newStartDate = _a.startDate, newEndDate = _a.endDate;
134
+ onActionDispatch === null || onActionDispatch === void 0 ? void 0 : onActionDispatch({
135
+ type: direction === 'prev' ? 'PREV_BUTTON_CLICK' : 'NEXT_BUTTON_CLICK',
136
+ payload: {
137
+ startDate: (0, calendarUtils_1.toUTC)(newStartDate),
138
+ endDate: (0, calendarUtils_1.toUTC)(newEndDate)
139
+ }
140
+ });
141
+ }, [selectedDate, currentViewType, onActionDispatch, calendarUtils_1.calculateDateRange]);
142
+ // 특정 날짜의 이벤트 가져오기
143
+ var getSchedulesForDate = (0, react_1.useCallback)(function (date) {
144
+ return schedules.filter(function (schedule) {
145
+ var scheduleStart = new Date(schedule.startDate);
146
+ var scheduleEnd = new Date(schedule.endDate);
147
+ var targetDate = new Date(date);
148
+ // 정확한 날짜 비교를 위해 시간을 일 시작으로 설정
149
+ scheduleStart.setHours(0, 0, 0, 0);
150
+ scheduleEnd.setHours(23, 59, 59, 999);
151
+ targetDate.setHours(0, 0, 0, 0);
152
+ // 대상 날짜가 이벤트 날짜 범위 내에 있는지 확인
153
+ return targetDate >= scheduleStart && targetDate <= scheduleEnd;
154
+ });
155
+ }, [schedules]);
156
+ // 날짜 클릭 이벤트 (일반 클릭, shift 클릭 둘다 포함)
157
+ var handleDateClick = (0, react_1.useCallback)(function (date, e) {
158
+ var _a, _b, _c, _d, _e, _f;
159
+ var isShiftClick = ((_a = config === null || config === void 0 ? void 0 : config.DATE) === null || _a === void 0 ? void 0 : _a.CLICK_WITH_SHIFT_KEY_DOWN) && (e === null || e === void 0 ? void 0 : e.shiftKey);
160
+ var isNormalClick = ((_b = config === null || config === void 0 ? void 0 : config.DATE) === null || _b === void 0 ? void 0 : _b.CLICK) && !(e === null || e === void 0 ? void 0 : e.shiftKey);
161
+ var getDateKey = function (d) { return "".concat(d.getFullYear(), "-").concat(d.getMonth(), "-").concat(d.getDate()); };
162
+ var clickedDateKey = getDateKey(date);
163
+ // shift 클릭 처리
164
+ if (isShiftClick) {
165
+ var newSelectedDates = selectedDates.some(function (d) { return getDateKey(d) === clickedDateKey; })
166
+ ? selectedDates.filter(function (d) { return getDateKey(d) !== clickedDateKey; })
167
+ : __spreadArray(__spreadArray([], selectedDates, true), [date], false);
168
+ setSelectedDates(newSelectedDates);
169
+ setLastSelectedDate(date);
170
+ (_d = (_c = config === null || config === void 0 ? void 0 : config.DATE) === null || _c === void 0 ? void 0 : _c.CLICK_WITH_SHIFT_KEY_DOWN) === null || _d === void 0 ? void 0 : _d.call(_c, {
171
+ action: 'CLICK_WITH_SHIFT_KEY_DOWN',
172
+ target: 'DATE',
173
+ dates: newSelectedDates,
174
+ startDate: (0, calendarUtils_1.toUTC)(startDate),
175
+ endDate: (0, calendarUtils_1.toUTC)(endDate)
176
+ });
177
+ }
178
+ setSelectedDate(date);
179
+ // 일반 클릭 처리
180
+ if (isNormalClick) {
181
+ (_f = (_e = config === null || config === void 0 ? void 0 : config.DATE) === null || _e === void 0 ? void 0 : _e.CLICK) === null || _f === void 0 ? void 0 : _f.call(_e, {
182
+ action: 'CLICK',
183
+ target: 'DATE',
184
+ date: date,
185
+ startDate: (0, calendarUtils_1.toUTC)(startDate),
186
+ endDate: (0, calendarUtils_1.toUTC)(endDate)
187
+ });
188
+ }
189
+ }, [isPastDate, config, lastSelectedDate, selectedDates, startDate, endDate]);
190
+ // 날짜 범위 선택을 위한 마우스 이벤트 처리
191
+ var handleMouseUp = (0, react_1.useCallback)(function () {
192
+ setIsDragging(false);
193
+ setDragStartDate(null);
194
+ setDragEndDate(null);
195
+ }, [isDragging, dragStartDate, dragEndDate]);
196
+ // 이벤트 드래그 핸들러
197
+ var handleScheduleDragStart = (0, react_1.useCallback)(function (schedule, e) {
198
+ setDraggedSchedule(schedule);
199
+ e.dataTransfer.effectAllowed = 'move';
200
+ e.dataTransfer.setData('text/plain', schedule.id.toString());
201
+ // 더 정확한 드롭 계산을 위한 오프셋 정보 저장
202
+ var scheduleStartDate = new Date(schedule.startDate);
203
+ scheduleStartDate.setHours(0, 0, 0, 0);
204
+ // 원본 이벤트 시작 시간을 dataTransfer에 저장
205
+ e.dataTransfer.setData('scheduleStartTime', scheduleStartDate.getTime().toString());
206
+ }, []);
207
+ // 이벤트 드래그 종료 이벤트
208
+ var handleScheduleDragEnd = (0, react_1.useCallback)(function () {
209
+ setDraggedSchedule(null);
210
+ setIsDragOverDate(null);
211
+ }, []);
212
+ // 날짜 드래그 오버 이벤트
213
+ var handleDateDragOver = (0, react_1.useCallback)(function (date, e) {
214
+ if (!draggedSchedule) {
215
+ return;
216
+ }
217
+ e.preventDefault();
218
+ e.dataTransfer.dropEffect = 'move';
219
+ setIsDragOverDate(date);
220
+ }, [draggedSchedule]);
221
+ // 날짜 드래그 떼기
222
+ var handleDateDragLeave = (0, react_1.useCallback)(function () {
223
+ setIsDragOverDate(null);
224
+ }, []);
225
+ // 삭제 키 이벤트 처리
226
+ var handleKeyDown = (0, react_1.useCallback)(function (e) {
227
+ var _a, _b, _c;
228
+ if (e.key === 'Backspace' &&
229
+ selectedSchedules.length > 0 &&
230
+ ((_a = config === null || config === void 0 ? void 0 : config.SCHEDULE) === null || _a === void 0 ? void 0 : _a.DELETE_KEY_DOWN)) {
231
+ (_c = (_b = config === null || config === void 0 ? void 0 : config.SCHEDULE) === null || _b === void 0 ? void 0 : _b.DELETE_KEY_DOWN) === null || _c === void 0 ? void 0 : _c.call(_b, {
232
+ action: 'DELETE_KEY_DOWN',
233
+ target: 'SCHEDULE',
234
+ schedules: selectedSchedules,
235
+ startDate: (0, calendarUtils_1.toUTC)(startDate),
236
+ endDate: (0, calendarUtils_1.toUTC)(endDate)
237
+ });
238
+ setSelectedSchedules([]);
239
+ }
240
+ }, [config, selectedSchedules]);
241
+ // 날짜 드래그 놓기
242
+ var handleDateDrop = (0, react_1.useCallback)(function (date, e) {
243
+ var _a, _b, _c;
244
+ e.preventDefault();
245
+ if (!draggedSchedule) {
246
+ return;
247
+ }
248
+ if (!((_a = config === null || config === void 0 ? void 0 : config.SCHEDULE) === null || _a === void 0 ? void 0 : _a.DRAG)) {
249
+ return;
250
+ }
251
+ var originalStartDate = new Date(draggedSchedule.startDate);
252
+ var originalEndDate = new Date(draggedSchedule.endDate);
253
+ var duration = originalEndDate.getTime() - originalStartDate.getTime();
254
+ var getAdjustedStartDate = function () {
255
+ var baseDate = new Date(date);
256
+ if (currentViewType === 'MONTHLY') {
257
+ var target = e.target;
258
+ var gridContainer = target.closest('[data-calendar-grid]');
259
+ if (gridContainer) {
260
+ var gridRect = gridContainer.getBoundingClientRect();
261
+ var cellWidth = gridRect.width / 7;
262
+ var clickedColumn = Math.floor((e.clientX - gridRect.left) / cellWidth);
263
+ var dropDayOfWeek = baseDate.getDay();
264
+ var columnOffset = clickedColumn - dropDayOfWeek;
265
+ var actualDropDate = new Date(baseDate);
266
+ actualDropDate.setDate(baseDate.getDate() + columnOffset);
267
+ actualDropDate.setHours(originalStartDate.getHours(), originalStartDate.getMinutes(), 0, 0);
268
+ return actualDropDate;
269
+ }
270
+ }
271
+ // 공통 처리 (WEEKLY, DAILY, fallback)
272
+ baseDate.setHours(originalStartDate.getHours(), originalStartDate.getMinutes(), 0, 0);
273
+ return baseDate;
274
+ };
275
+ var newStartDate = getAdjustedStartDate();
276
+ var newEndDate = new Date(newStartDate.getTime() + duration);
277
+ var updatedSchedule = __assign(__assign({}, draggedSchedule), { startDate: newStartDate, endDate: newEndDate });
278
+ (_c = (_b = config === null || config === void 0 ? void 0 : config.SCHEDULE) === null || _b === void 0 ? void 0 : _b.DRAG) === null || _c === void 0 ? void 0 : _c.call(_b, {
279
+ action: 'DRAG',
280
+ target: 'SCHEDULE',
281
+ schedule: updatedSchedule,
282
+ startDate: (0, calendarUtils_1.toUTC)(startDate),
283
+ endDate: (0, calendarUtils_1.toUTC)(endDate)
284
+ });
285
+ setIsDragOverDate(null);
286
+ }, [draggedSchedule, config, currentViewType]);
287
+ var defaultDayTexts = (0, react_1.useMemo)(function () { return [
288
+ t('str_3893'),
289
+ t('str_3887'),
290
+ t('str_3888'),
291
+ t('str_3889'),
292
+ t('str_3890'),
293
+ t('str_3891'),
294
+ t('str_3892') // 토 - 6
295
+ ]; }, [t]);
296
+ // 날짜의 실제 요일에 따른 요일 텍스트 가져오기
297
+ var getDayTextByDate = function (date) {
298
+ return defaultDayTexts[date.getDay()];
299
+ };
300
+ // 뷰 타입을 위한 드롭다운 옵션 생성
301
+ var viewTypeOptions = (0, react_1.useMemo)(function () {
302
+ var viewTypeTextMap = {
303
+ MONTHLY: t('str_fm_month'),
304
+ WEEKLY: t('str_fm_week'),
305
+ DAILY: t('str_fm_day'),
306
+ YEARLY: t('str_fm_year')
307
+ };
308
+ return actualViewTypes.map(function (viewType) { return ({
309
+ text: viewTypeTextMap[viewType] || viewType,
310
+ value: viewType
311
+ }); });
312
+ }, [actualViewTypes, t]);
313
+ // 특정 월의 캘린더 날짜 생성 (연간 보기용)
314
+ var getMonthDates = (0, react_1.useCallback)(function (year, month) {
315
+ var monthDate = new Date(year, month, 1);
316
+ return dateHelper_1.DateHelper.getCalendarDates(monthDate, startOfWeek);
317
+ }, [startOfWeek]);
318
+ // 스케줄 클릭 (일반 클릭, shift 클릭 둘다 포함)
319
+ var handleScheduleClick = function (schedule, e) {
320
+ var _a, _b, _c, _d, _e, _f;
321
+ var isShiftClick = ((_a = config === null || config === void 0 ? void 0 : config.SCHEDULE) === null || _a === void 0 ? void 0 : _a.CLICK_WITH_SHIFT_KEY_DOWN) && (e === null || e === void 0 ? void 0 : e.shiftKey);
322
+ var isNormalClick = ((_b = config === null || config === void 0 ? void 0 : config.SCHEDULE) === null || _b === void 0 ? void 0 : _b.CLICK) && !(e === null || e === void 0 ? void 0 : e.shiftKey);
323
+ var isSelected = selectedSchedules.some(function (s) { return s.id === (schedule === null || schedule === void 0 ? void 0 : schedule.id); });
324
+ if (isShiftClick) {
325
+ var newSelectedSchedules = isSelected
326
+ ? selectedSchedules.filter(function (s) { return s.id !== (schedule === null || schedule === void 0 ? void 0 : schedule.id); })
327
+ : __spreadArray(__spreadArray([], selectedSchedules, true), [schedule], false).filter(function (s) { return s !== undefined; });
328
+ setSelectedSchedules(newSelectedSchedules);
329
+ (_d = (_c = config === null || config === void 0 ? void 0 : config.SCHEDULE) === null || _c === void 0 ? void 0 : _c.CLICK_WITH_SHIFT_KEY_DOWN) === null || _d === void 0 ? void 0 : _d.call(_c, {
330
+ action: 'CLICK_WITH_SHIFT_KEY_DOWN',
331
+ target: 'SCHEDULE',
332
+ schedules: newSelectedSchedules,
333
+ startDate: (0, calendarUtils_1.toUTC)(startDate),
334
+ endDate: (0, calendarUtils_1.toUTC)(endDate)
335
+ });
336
+ return;
337
+ }
338
+ if (isNormalClick) {
339
+ // 일반 클릭 시 해당 스케줄만 선택
340
+ setSelectedSchedules([schedule]);
341
+ (_f = (_e = config === null || config === void 0 ? void 0 : config.SCHEDULE) === null || _e === void 0 ? void 0 : _e.CLICK) === null || _f === void 0 ? void 0 : _f.call(_e, {
342
+ action: 'CLICK',
343
+ target: 'SCHEDULE',
344
+ schedule: schedule,
345
+ startDate: (0, calendarUtils_1.toUTC)(startDate),
346
+ endDate: (0, calendarUtils_1.toUTC)(endDate)
347
+ });
348
+ return;
349
+ }
350
+ };
351
+ // 주간 뷰로 전환하는 핸들러
352
+ var handleSwitchToWeeklyView = (0, react_1.useCallback)(function (date) {
353
+ setCurrentViewType('WEEKLY');
354
+ setSelectedDate(date);
355
+ // 주간 뷰로 전환할 때의 startDate와 endDate 계산
356
+ var _a = (0, calendarUtils_1.calculateDateRange)('WEEKLY', date), newStartDate = _a.startDate, newEndDate = _a.endDate;
357
+ onActionDispatch === null || onActionDispatch === void 0 ? void 0 : onActionDispatch({
358
+ type: 'CALENDAR_TYPE_CHANGE',
359
+ payload: {
360
+ type: 'WEEKLY',
361
+ startDate: (0, calendarUtils_1.toUTC)(newStartDate),
362
+ endDate: (0, calendarUtils_1.toUTC)(newEndDate)
363
+ }
364
+ });
365
+ }, [onActionDispatch, calendarUtils_1.calculateDateRange]);
366
+ // 뷰 타입에 따른 캘린더 콘텐츠 렌더링
367
+ var renderCalendarContent = function () {
368
+ switch (currentViewType) {
369
+ case 'MONTHLY':
370
+ return ((0, jsx_runtime_1.jsx)(MonthlyView_1.MonthlyView, { getDayTextByDate: getDayTextByDate, startOfWeek: startOfWeek, selectedDate: selectedDate, selectedDates: selectedDates, dragStartDate: dragStartDate, selectedSchedules: selectedSchedules, dragEndDate: dragEndDate, isDragOverDate: isDragOverDate, schedules: schedules, getSchedulesForDate: getSchedulesForDate, isToday: isToday, isPastDate: isPastDate, handleDateClick: handleDateClick, handleScheduleClick: handleScheduleClick, handleMouseUp: handleMouseUp, handleDateDragOver: handleDateDragOver, handleDateDragLeave: handleDateDragLeave, handleDateDrop: handleDateDrop, handleScheduleDragStart: handleScheduleDragStart, handleScheduleDragEnd: handleScheduleDragEnd, isDraggable: isDraggable, onSwitchToWeeklyView: handleSwitchToWeeklyView }));
371
+ case 'WEEKLY':
372
+ return (0, jsx_runtime_1.jsx)(WeeklyView_1.WeeklyView, { startOfWeek: startOfWeek });
373
+ case 'DAILY':
374
+ return (0, jsx_runtime_1.jsx)(DailyView_1.DailyView, {});
375
+ case 'YEARLY':
376
+ return ((0, jsx_runtime_1.jsx)(YearlyView_1.YearlyView, { selectedDate: selectedDate, getMonthDates: getMonthDates, getDayTextByDate: getDayTextByDate, startOfWeek: startOfWeek, isToday: isToday, handleDateClick: handleDateClick, getSchedulesForDate: getSchedulesForDate }));
377
+ default:
378
+ return null;
379
+ }
380
+ };
381
+ return ((0, jsx_runtime_1.jsx)(CalendarContext_1.CalendarProvider
382
+ // 스케줄 관련
383
+ , __assign({
384
+ // 스케줄 관련
385
+ selectedSchedules: selectedSchedules, isDraggable: isDraggable, handleScheduleClick: handleScheduleClick, handleScheduleDragStart: handleScheduleDragStart, handleScheduleDragEnd: handleScheduleDragEnd,
386
+ // 날짜 관련
387
+ handleDateClick: handleDateClick, handleDateDragOver: handleDateDragOver, handleDateDragLeave: handleDateDragLeave, handleDateDrop: handleDateDrop,
388
+ // 유틸리티 함수
389
+ getSchedulesForDate: getSchedulesForDate, isToday: isToday, isPastDate: isPastDate, getDayTextByDate: getDayTextByDate,
390
+ // 상태값
391
+ isDragOverDate: isDragOverDate, selectedDate: selectedDate, displayAllDayScheduleMode: displayAllDayScheduleMode }, { children: (0, jsx_runtime_1.jsxs)(S_CalendarContainer, __assign({ "x-pds-name": "Calendar", "x-pds-element-type": "component", "x-pds-device-type": "desktop", onKeyDown: handleKeyDown, tabIndex: 0 }, { children: [(0, jsx_runtime_1.jsxs)(S_CalendarHeader, { children: [(0, jsx_runtime_1.jsx)(TextLabel_1.TextLabel, { styleTheme: "headingBold", textAlign: "center", text: (0, calendarUtils_1.getHeaderText)(currentViewType, selectedDate, t) }), (0, jsx_runtime_1.jsxs)(S_LeftContainer, { children: [(0, jsx_runtime_1.jsx)(S_NavigationButton, __assign({ onClick: function () { return navigateDate('prev'); } }, { children: (0, jsx_runtime_1.jsx)(IconButton_1.IconButton, { iconName: "ic_arrow_left", baseSize: "small", iconSize: 16, baseColorKey: "ui_cpnt_button_fill_base_transparent", iconColorKey: "ui_cpnt_icon_sys_grey_01" }) })), todayBtnMode === 'use' && ((0, jsx_runtime_1.jsx)(TextButton_1.TextButton, { text: t('str_calendar_today'), size: "small", colorTheme: "grey_01", onClick: handleTodayClick })), (0, jsx_runtime_1.jsx)(S_NavigationButton, __assign({ onClick: function () { return navigateDate('next'); } }, { children: (0, jsx_runtime_1.jsx)(IconButton_1.IconButton, { iconName: "ic_arrow_right", baseSize: "small", iconSize: 16, baseColorKey: "ui_cpnt_button_fill_base_transparent", iconColorKey: "ui_cpnt_icon_sys_grey_01" }) })), (0, jsx_runtime_1.jsx)(Dropdown_1.Dropdown, { size: "small", valueArray: viewTypeOptions, value: viewTypeOptions.find(function (option) { return option.value === currentViewType; }), onChange: handleViewTypeChange, customWidth: "120px" })] })] }), (0, jsx_runtime_1.jsx)(S_CalendarContent, { children: renderCalendarContent() })] })) })));
392
+ };
393
+ var S_CalendarContainer = styled_components_1.default.div(templateObject_1 || (templateObject_1 = __makeTemplateObject(["\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 400px;\n outline: 0px;\n overflow: hidden;\n width: 100%;\n"], ["\n display: flex;\n flex-direction: column;\n height: 100%;\n min-height: 400px;\n outline: 0px;\n overflow: hidden;\n width: 100%;\n"])));
394
+ var S_CalendarHeader = styled_components_1.default.div(templateObject_2 || (templateObject_2 = __makeTemplateObject(["\n align-items: center;\n display: flex;\n gap: 16px;\n padding: 0px 0px 8px 0px;\n"], ["\n align-items: center;\n display: flex;\n gap: 16px;\n padding: 0px 0px 8px 0px;\n"])));
395
+ var S_NavigationButton = styled_components_1.default.button(templateObject_3 || (templateObject_3 = __makeTemplateObject(["\n align-items: center;\n background: none;\n border: none;\n cursor: pointer;\n display: flex;\n height: 32px;\n justify-content: center;\n width: 32px;\n"], ["\n align-items: center;\n background: none;\n border: none;\n cursor: pointer;\n display: flex;\n height: 32px;\n justify-content: center;\n width: 32px;\n"])));
396
+ var S_LeftContainer = styled_components_1.default.div(templateObject_4 || (templateObject_4 = __makeTemplateObject(["\n align-items: center;\n display: flex;\n gap: 8px;\n margin-left: auto;\n"], ["\n align-items: center;\n display: flex;\n gap: 8px;\n margin-left: auto;\n"])));
397
+ var S_CalendarContent = styled_components_1.default.div(templateObject_5 || (templateObject_5 = __makeTemplateObject(["\n flex: 1;\n overflow: auto;\n"], ["\n flex: 1;\n overflow: auto;\n"])));
398
+ exports.default = Calendar;
399
+ var templateObject_1, templateObject_2, templateObject_3, templateObject_4, templateObject_5;