@kalyx/core 0.2.0 → 0.3.0
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/README.md +76 -8
- package/dist/index.cjs +151 -20
- package/dist/index.d.cts +167 -75
- package/dist/index.d.ts +348 -9
- package/dist/index.js +538 -9
- package/package.json +20 -1
- package/dist/adapters/date-fns.d.ts +0 -16
- package/dist/adapters/date-fns.d.ts.map +0 -1
- package/dist/adapters/date-fns.js +0 -148
- package/dist/adapters/date-fns.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/types.d.ts +0 -106
- package/dist/types.d.ts.map +0 -1
- package/dist/types.js +0 -8
- package/dist/types.js.map +0 -1
- package/dist/utils/calendar.d.ts +0 -35
- package/dist/utils/calendar.d.ts.map +0 -1
- package/dist/utils/calendar.js +0 -141
- package/dist/utils/calendar.js.map +0 -1
- package/dist/utils/date.d.ts +0 -22
- package/dist/utils/date.d.ts.map +0 -1
- package/dist/utils/date.js +0 -66
- package/dist/utils/date.js.map +0 -1
- package/dist/utils/locale.d.ts +0 -33
- package/dist/utils/locale.d.ts.map +0 -1
- package/dist/utils/locale.js +0 -70
- package/dist/utils/locale.js.map +0 -1
- package/dist/utils/time.d.ts +0 -58
- package/dist/utils/time.d.ts.map +0 -1
- package/dist/utils/time.js +0 -127
- package/dist/utils/time.js.map +0 -1
|
@@ -1,148 +0,0 @@
|
|
|
1
|
-
import { parseISO, addDays as dfAddDays, addMonths as dfAddMonths, addYears as dfAddYears, isBefore as dfIsBefore, isAfter as dfIsAfter, isValid as dfIsValid, } from 'date-fns';
|
|
2
|
-
function toDate(iso) {
|
|
3
|
-
return parseISO(iso);
|
|
4
|
-
}
|
|
5
|
-
function toISO(date) {
|
|
6
|
-
return date.toISOString();
|
|
7
|
-
}
|
|
8
|
-
/** ISO 날짜 문자열 정규화: "YYYY-MM-DD" → "YYYY-MM-DDTHH:mm:ss.sssZ" */
|
|
9
|
-
function normalize(value) {
|
|
10
|
-
if (/^\d{4}-\d{2}-\d{2}$/.test(value)) {
|
|
11
|
-
return `${value}T00:00:00.000Z`;
|
|
12
|
-
}
|
|
13
|
-
return value;
|
|
14
|
-
}
|
|
15
|
-
/** UTC 기준으로 날짜의 자정을 반환한다 */
|
|
16
|
-
function utcStartOfDay(d) {
|
|
17
|
-
return new Date(Date.UTC(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate()));
|
|
18
|
-
}
|
|
19
|
-
/** UTC 기준으로 월의 첫 날 자정을 반환한다 */
|
|
20
|
-
function utcStartOfMonth(d) {
|
|
21
|
-
return new Date(Date.UTC(d.getUTCFullYear(), d.getUTCMonth(), 1));
|
|
22
|
-
}
|
|
23
|
-
/** UTC 기준으로 월의 마지막 날 23:59:59.999를 반환한다 */
|
|
24
|
-
function utcEndOfMonth(d) {
|
|
25
|
-
return new Date(Date.UTC(d.getUTCFullYear(), d.getUTCMonth() + 1, 0, 23, 59, 59, 999));
|
|
26
|
-
}
|
|
27
|
-
/** UTC 기준 주의 시작일 */
|
|
28
|
-
function utcStartOfWeek(d, weekStartsOn) {
|
|
29
|
-
const day = d.getUTCDay();
|
|
30
|
-
const diff = (day - weekStartsOn + 7) % 7;
|
|
31
|
-
return new Date(Date.UTC(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate() - diff));
|
|
32
|
-
}
|
|
33
|
-
/** UTC 기준 주의 마지막 날 */
|
|
34
|
-
function utcEndOfWeek(d, weekStartsOn) {
|
|
35
|
-
const start = utcStartOfWeek(d, weekStartsOn);
|
|
36
|
-
return new Date(Date.UTC(start.getUTCFullYear(), start.getUTCMonth(), start.getUTCDate() + 6, 23, 59, 59, 999));
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* date-fns 기반 DateAdapter 구현체.
|
|
40
|
-
* 모든 연산은 UTC 기준으로 동작하여 timezone 간섭을 방지한다.
|
|
41
|
-
*
|
|
42
|
-
* @example
|
|
43
|
-
* ```ts
|
|
44
|
-
* import { DateFnsAdapter } from '@kalyx/core';
|
|
45
|
-
*
|
|
46
|
-
* DateFnsAdapter.format('2026-01-15T00:00:00.000Z', 'yyyy-MM-dd'); // "2026-01-15"
|
|
47
|
-
* DateFnsAdapter.addDays('2026-01-15T00:00:00.000Z', 7); // "2026-01-22T..."
|
|
48
|
-
* DateFnsAdapter.isSameDay('2026-01-15T00:00:00.000Z', '2026-01-15T23:59:59.000Z'); // true
|
|
49
|
-
* ```
|
|
50
|
-
*/
|
|
51
|
-
export const DateFnsAdapter = {
|
|
52
|
-
parse(value) {
|
|
53
|
-
if (!value)
|
|
54
|
-
return '';
|
|
55
|
-
return normalize(value);
|
|
56
|
-
},
|
|
57
|
-
format(iso, formatStr) {
|
|
58
|
-
const d = toDate(iso);
|
|
59
|
-
// UTC 기반 포맷팅 (로컬 timezone 간섭 방지)
|
|
60
|
-
const tokens = {
|
|
61
|
-
yyyy: String(d.getUTCFullYear()),
|
|
62
|
-
MM: String(d.getUTCMonth() + 1).padStart(2, '0'),
|
|
63
|
-
dd: String(d.getUTCDate()).padStart(2, '0'),
|
|
64
|
-
HH: String(d.getUTCHours()).padStart(2, '0'),
|
|
65
|
-
mm: String(d.getUTCMinutes()).padStart(2, '0'),
|
|
66
|
-
ss: String(d.getUTCSeconds()).padStart(2, '0'),
|
|
67
|
-
M: String(d.getUTCMonth() + 1),
|
|
68
|
-
d: String(d.getUTCDate()),
|
|
69
|
-
};
|
|
70
|
-
let result = formatStr;
|
|
71
|
-
// 긴 토큰부터 치환해서 부분 매칭 방지
|
|
72
|
-
for (const [token, value] of Object.entries(tokens).sort((a, b) => b[0].length - a[0].length)) {
|
|
73
|
-
result = result.split(token).join(value);
|
|
74
|
-
}
|
|
75
|
-
return result;
|
|
76
|
-
},
|
|
77
|
-
addDays(iso, n) {
|
|
78
|
-
return toISO(dfAddDays(toDate(iso), n));
|
|
79
|
-
},
|
|
80
|
-
addMonths(iso, n) {
|
|
81
|
-
return toISO(dfAddMonths(toDate(iso), n));
|
|
82
|
-
},
|
|
83
|
-
addYears(iso, n) {
|
|
84
|
-
return toISO(dfAddYears(toDate(iso), n));
|
|
85
|
-
},
|
|
86
|
-
isBefore(a, b) {
|
|
87
|
-
return dfIsBefore(toDate(a), toDate(b));
|
|
88
|
-
},
|
|
89
|
-
isAfter(a, b) {
|
|
90
|
-
return dfIsAfter(toDate(a), toDate(b));
|
|
91
|
-
},
|
|
92
|
-
isSameDay(a, b) {
|
|
93
|
-
if (!a || !b)
|
|
94
|
-
return false;
|
|
95
|
-
const da = toDate(a);
|
|
96
|
-
const db = toDate(b);
|
|
97
|
-
return (da.getUTCFullYear() === db.getUTCFullYear() &&
|
|
98
|
-
da.getUTCMonth() === db.getUTCMonth() &&
|
|
99
|
-
da.getUTCDate() === db.getUTCDate());
|
|
100
|
-
},
|
|
101
|
-
isSameMonth(a, b) {
|
|
102
|
-
const da = toDate(a);
|
|
103
|
-
const db = toDate(b);
|
|
104
|
-
return (da.getUTCFullYear() === db.getUTCFullYear() &&
|
|
105
|
-
da.getUTCMonth() === db.getUTCMonth());
|
|
106
|
-
},
|
|
107
|
-
startOfDay(iso) {
|
|
108
|
-
return toISO(utcStartOfDay(toDate(iso)));
|
|
109
|
-
},
|
|
110
|
-
startOfMonth(iso) {
|
|
111
|
-
return toISO(utcStartOfMonth(toDate(iso)));
|
|
112
|
-
},
|
|
113
|
-
endOfMonth(iso) {
|
|
114
|
-
return toISO(utcEndOfMonth(toDate(iso)));
|
|
115
|
-
},
|
|
116
|
-
startOfWeek(iso, weekStartsOn = 0) {
|
|
117
|
-
return toISO(utcStartOfWeek(toDate(iso), weekStartsOn));
|
|
118
|
-
},
|
|
119
|
-
endOfWeek(iso, weekStartsOn = 0) {
|
|
120
|
-
return toISO(utcEndOfWeek(toDate(iso), weekStartsOn));
|
|
121
|
-
},
|
|
122
|
-
now() {
|
|
123
|
-
return new Date().toISOString();
|
|
124
|
-
},
|
|
125
|
-
today() {
|
|
126
|
-
return toISO(utcStartOfDay(new Date()));
|
|
127
|
-
},
|
|
128
|
-
isValid(value) {
|
|
129
|
-
if (!value)
|
|
130
|
-
return false;
|
|
131
|
-
const normalized = normalize(value);
|
|
132
|
-
const date = parseISO(normalized);
|
|
133
|
-
return dfIsValid(date);
|
|
134
|
-
},
|
|
135
|
-
getYear(iso) {
|
|
136
|
-
return toDate(iso).getUTCFullYear();
|
|
137
|
-
},
|
|
138
|
-
getMonth(iso) {
|
|
139
|
-
return toDate(iso).getUTCMonth();
|
|
140
|
-
},
|
|
141
|
-
getDate(iso) {
|
|
142
|
-
return toDate(iso).getUTCDate();
|
|
143
|
-
},
|
|
144
|
-
getDay(iso) {
|
|
145
|
-
return toDate(iso).getUTCDay();
|
|
146
|
-
},
|
|
147
|
-
};
|
|
148
|
-
//# sourceMappingURL=date-fns.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"date-fns.js","sourceRoot":"","sources":["../../src/adapters/date-fns.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,YAAY,EACV,aAAa,EACb,YAAY,EACZ,SAAS,EACT,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,WAAW,EACX,YAAY,GACb,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAGxD,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACxF,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EACL,OAAO,EACP,OAAO,EACP,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,QAAQ,EACR,QAAQ,EACR,aAAa,EACb,eAAe,EACf,UAAU,GACX,MAAM,iBAAiB,CAAC;AACzB,YAAY,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EACL,YAAY,EACZ,eAAe,EACf,eAAe,EACf,cAAc,GACf,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC"}
|
package/dist/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,6BAA6B;AAe7B,MAAM;AACN,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,KAAK;AACL,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACxF,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EACL,OAAO,EACP,OAAO,EACP,eAAe,EACf,gBAAgB,EAChB,iBAAiB,EACjB,QAAQ,EACR,QAAQ,EACR,aAAa,EACb,eAAe,EACf,UAAU,GACX,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,YAAY,EACZ,eAAe,EACf,eAAe,EACf,cAAc,GACf,MAAM,mBAAmB,CAAC"}
|
package/dist/types.d.ts
DELETED
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @kalyx/core 타입 정의
|
|
3
|
-
*
|
|
4
|
-
* 모든 날짜 값은 ISO 8601 UTC string으로 표현한다.
|
|
5
|
-
* native Date 객체는 사용하지 않는다.
|
|
6
|
-
*/
|
|
7
|
-
/** ISO 8601 UTC 날짜 문자열. 예: "2026-01-15T00:00:00.000Z" */
|
|
8
|
-
export type ISODateString = string;
|
|
9
|
-
/**
|
|
10
|
-
* 날짜 비활성화 규칙. 여러 규칙을 배열로 조합할 수 있다.
|
|
11
|
-
*
|
|
12
|
-
* @example
|
|
13
|
-
* ```ts
|
|
14
|
-
* const rules: DisabledRule[] = [
|
|
15
|
-
* { before: '2026-01-01T00:00:00.000Z' }, // 1월 1일 이전 비활성화
|
|
16
|
-
* { after: '2026-12-31T00:00:00.000Z' }, // 12월 31일 이후 비활성화
|
|
17
|
-
* { date: '2026-06-15T00:00:00.000Z' }, // 특정 날짜 비활성화
|
|
18
|
-
* { dayOfWeek: [0, 6] }, // 주말 비활성화
|
|
19
|
-
* ];
|
|
20
|
-
* ```
|
|
21
|
-
*/
|
|
22
|
-
export type DisabledRule = {
|
|
23
|
-
date: ISODateString;
|
|
24
|
-
} | {
|
|
25
|
-
before: ISODateString;
|
|
26
|
-
} | {
|
|
27
|
-
after: ISODateString;
|
|
28
|
-
} | {
|
|
29
|
-
dayOfWeek: number[];
|
|
30
|
-
};
|
|
31
|
-
/** 날짜 범위 (RangePicker) */
|
|
32
|
-
export interface DateRange {
|
|
33
|
-
start: ISODateString | null;
|
|
34
|
-
end: ISODateString | null;
|
|
35
|
-
}
|
|
36
|
-
/** 캘린더 그리드의 하루를 표현하는 타입 */
|
|
37
|
-
export interface CalendarDay {
|
|
38
|
-
/** ISO 8601 UTC string */
|
|
39
|
-
isoString: ISODateString;
|
|
40
|
-
/** 날짜 숫자 (1-31) */
|
|
41
|
-
dayNumber: number;
|
|
42
|
-
/** 현재 표시 중인 달에 속하는지 */
|
|
43
|
-
isCurrentMonth: boolean;
|
|
44
|
-
/** 오늘인지 */
|
|
45
|
-
isToday: boolean;
|
|
46
|
-
/** 선택된 날짜인지 (단일 선택) */
|
|
47
|
-
isSelected: boolean;
|
|
48
|
-
/** 비활성화 상태인지 */
|
|
49
|
-
isDisabled: boolean;
|
|
50
|
-
/** 포커스된 날짜인지 */
|
|
51
|
-
isFocused: boolean;
|
|
52
|
-
/** 범위의 시작일인지 */
|
|
53
|
-
isRangeStart: boolean;
|
|
54
|
-
/** 범위의 종료일인지 */
|
|
55
|
-
isRangeEnd: boolean;
|
|
56
|
-
/** 범위 내부 (시작과 종료 사이)인지 */
|
|
57
|
-
isInRange: boolean;
|
|
58
|
-
}
|
|
59
|
-
/** 캘린더 그리드: 주(week) 배열 → 일(day) 배열 */
|
|
60
|
-
export type CalendarWeek = CalendarDay[];
|
|
61
|
-
export type CalendarGrid = CalendarWeek[];
|
|
62
|
-
/**
|
|
63
|
-
* 날짜 라이브러리 어댑터 인터페이스.
|
|
64
|
-
* 모든 날짜 연산을 추상화하여 다른 라이브러리(Temporal API 등)로 교체 가능.
|
|
65
|
-
* 기본 구현체: {@link DateFnsAdapter}
|
|
66
|
-
*/
|
|
67
|
-
export interface DateAdapter {
|
|
68
|
-
/** 어떤 형식이든 → ISO 8601 UTC string */
|
|
69
|
-
parse(value: string, format?: string): string;
|
|
70
|
-
/** ISO string → 화면 표시용 string */
|
|
71
|
-
format(iso: string, formatStr: string, timezone?: string): string;
|
|
72
|
-
addDays(iso: string, n: number): string;
|
|
73
|
-
addMonths(iso: string, n: number): string;
|
|
74
|
-
addYears(iso: string, n: number): string;
|
|
75
|
-
isBefore(a: string, b: string): boolean;
|
|
76
|
-
isAfter(a: string, b: string): boolean;
|
|
77
|
-
isSameDay(a: string, b: string, timezone?: string): boolean;
|
|
78
|
-
isSameMonth(a: string, b: string): boolean;
|
|
79
|
-
startOfDay(iso: string, timezone?: string): string;
|
|
80
|
-
startOfMonth(iso: string): string;
|
|
81
|
-
endOfMonth(iso: string): string;
|
|
82
|
-
startOfWeek(iso: string, weekStartsOn?: 0 | 1): string;
|
|
83
|
-
endOfWeek(iso: string, weekStartsOn?: 0 | 1): string;
|
|
84
|
-
now(): string;
|
|
85
|
-
today(timezone?: string): string;
|
|
86
|
-
isValid(value: string): boolean;
|
|
87
|
-
getYear(iso: string): number;
|
|
88
|
-
getMonth(iso: string): number;
|
|
89
|
-
getDate(iso: string): number;
|
|
90
|
-
getDay(iso: string): number;
|
|
91
|
-
}
|
|
92
|
-
/** 주 시작 요일 */
|
|
93
|
-
export type WeekStartsOn = 0 | 1;
|
|
94
|
-
/** 캘린더 그리드 생성 옵션 */
|
|
95
|
-
export interface CalendarOptions {
|
|
96
|
-
weekStartsOn?: WeekStartsOn;
|
|
97
|
-
today?: ISODateString;
|
|
98
|
-
selected?: ISODateString | null;
|
|
99
|
-
focusedDate?: ISODateString;
|
|
100
|
-
disabled?: DisabledRule[];
|
|
101
|
-
/** 선택된 범위 (RangePicker) */
|
|
102
|
-
range?: DateRange | null;
|
|
103
|
-
/** 호버 중인 날짜 (RangePicker 미리보기용) */
|
|
104
|
-
rangeHover?: ISODateString | null;
|
|
105
|
-
}
|
|
106
|
-
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/types.js
DELETED
package/dist/types.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
|
package/dist/utils/calendar.d.ts
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import type { CalendarGrid, CalendarOptions, DateAdapter, DisabledRule, ISODateString } from '../types.js';
|
|
2
|
-
/**
|
|
3
|
-
* 특정 월의 캘린더 그리드를 생성한다.
|
|
4
|
-
* 주(week) 단위로 구분된 2차원 배열(`CalendarGrid`)을 반환한다.
|
|
5
|
-
*
|
|
6
|
-
* @param monthISO - 표시할 월을 포함하는 ISO datetime
|
|
7
|
-
* @param adapter - 날짜 연산 어댑터 ({@link DateFnsAdapter})
|
|
8
|
-
* @param options - 주 시작 요일, 선택된 날짜, 비활성화 규칙, 범위 등
|
|
9
|
-
* @returns 4~6주의 캘린더 그리드. 각 주는 7개의 {@link CalendarDay} 배열.
|
|
10
|
-
*
|
|
11
|
-
* @example
|
|
12
|
-
* ```ts
|
|
13
|
-
* const grid = getCalendarDays('2026-01-01T00:00:00.000Z', DateFnsAdapter, {
|
|
14
|
-
* weekStartsOn: 0,
|
|
15
|
-
* selected: '2026-01-15T00:00:00.000Z',
|
|
16
|
-
* disabled: [{ dayOfWeek: [0, 6] }],
|
|
17
|
-
* });
|
|
18
|
-
* // grid[0] = 첫째 주 (CalendarDay[7])
|
|
19
|
-
* // grid[0][0].dayNumber = 28 (이전 달)
|
|
20
|
-
* ```
|
|
21
|
-
*/
|
|
22
|
-
export declare function getCalendarDays(monthISO: string, adapter: DateAdapter, options?: CalendarOptions): CalendarGrid;
|
|
23
|
-
/**
|
|
24
|
-
* 주어진 날짜가 비활성화 규칙에 해당하는지 검사한다.
|
|
25
|
-
*/
|
|
26
|
-
export declare function isDateDisabled(iso: string, rules: DisabledRule[], adapter: DateAdapter): boolean;
|
|
27
|
-
/**
|
|
28
|
-
* 두 날짜 중 더 이른 것을 반환한다.
|
|
29
|
-
*/
|
|
30
|
-
export declare function minDate(a: ISODateString, b: ISODateString, adapter: DateAdapter): ISODateString;
|
|
31
|
-
/**
|
|
32
|
-
* 두 날짜 중 더 늦은 것을 반환한다.
|
|
33
|
-
*/
|
|
34
|
-
export declare function maxDate(a: ISODateString, b: ISODateString, adapter: DateAdapter): ISODateString;
|
|
35
|
-
//# sourceMappingURL=calendar.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../../src/utils/calendar.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,YAAY,EACZ,eAAe,EACf,WAAW,EAEX,YAAY,EACZ,aAAa,EACd,MAAM,aAAa,CAAC;AAErB;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,WAAW,EACpB,OAAO,GAAE,eAAoB,GAC5B,YAAY,CA2Dd;AAwED;;GAEG;AACH,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,EACX,KAAK,EAAE,YAAY,EAAE,EACrB,OAAO,EAAE,WAAW,GACnB,OAAO,CAaT;AAED;;GAEG;AACH,wBAAgB,OAAO,CACrB,CAAC,EAAE,aAAa,EAChB,CAAC,EAAE,aAAa,EAChB,OAAO,EAAE,WAAW,GACnB,aAAa,CAEf;AAED;;GAEG;AACH,wBAAgB,OAAO,CACrB,CAAC,EAAE,aAAa,EAChB,CAAC,EAAE,aAAa,EAChB,OAAO,EAAE,WAAW,GACnB,aAAa,CAEf"}
|
package/dist/utils/calendar.js
DELETED
|
@@ -1,141 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 특정 월의 캘린더 그리드를 생성한다.
|
|
3
|
-
* 주(week) 단위로 구분된 2차원 배열(`CalendarGrid`)을 반환한다.
|
|
4
|
-
*
|
|
5
|
-
* @param monthISO - 표시할 월을 포함하는 ISO datetime
|
|
6
|
-
* @param adapter - 날짜 연산 어댑터 ({@link DateFnsAdapter})
|
|
7
|
-
* @param options - 주 시작 요일, 선택된 날짜, 비활성화 규칙, 범위 등
|
|
8
|
-
* @returns 4~6주의 캘린더 그리드. 각 주는 7개의 {@link CalendarDay} 배열.
|
|
9
|
-
*
|
|
10
|
-
* @example
|
|
11
|
-
* ```ts
|
|
12
|
-
* const grid = getCalendarDays('2026-01-01T00:00:00.000Z', DateFnsAdapter, {
|
|
13
|
-
* weekStartsOn: 0,
|
|
14
|
-
* selected: '2026-01-15T00:00:00.000Z',
|
|
15
|
-
* disabled: [{ dayOfWeek: [0, 6] }],
|
|
16
|
-
* });
|
|
17
|
-
* // grid[0] = 첫째 주 (CalendarDay[7])
|
|
18
|
-
* // grid[0][0].dayNumber = 28 (이전 달)
|
|
19
|
-
* ```
|
|
20
|
-
*/
|
|
21
|
-
export function getCalendarDays(monthISO, adapter, options = {}) {
|
|
22
|
-
const { weekStartsOn = 0, today, selected, focusedDate, disabled = [], range, rangeHover, } = options;
|
|
23
|
-
const todayISO = today ?? adapter.today();
|
|
24
|
-
const monthStart = adapter.startOfMonth(monthISO);
|
|
25
|
-
// 캘린더 그리드의 시작: 해당 월 첫째 날이 속한 주의 시작
|
|
26
|
-
const gridStart = adapter.startOfWeek(monthStart, weekStartsOn);
|
|
27
|
-
// 범위 계산용 정규화 (start <= end 보장)
|
|
28
|
-
const normalizedRange = normalizeRangeForDisplay(range, rangeHover, adapter);
|
|
29
|
-
const weeks = [];
|
|
30
|
-
let current = gridStart;
|
|
31
|
-
// 최대 6주 (42일)
|
|
32
|
-
for (let week = 0; week < 6; week++) {
|
|
33
|
-
const days = [];
|
|
34
|
-
for (let day = 0; day < 7; day++) {
|
|
35
|
-
const isCurrentMonth = adapter.isSameMonth(current, monthISO);
|
|
36
|
-
const isTodayDate = adapter.isSameDay(current, todayISO);
|
|
37
|
-
const isSelected_ = selected ? adapter.isSameDay(current, selected) : false;
|
|
38
|
-
const isFocused_ = focusedDate ? adapter.isSameDay(current, focusedDate) : false;
|
|
39
|
-
const isDisabled_ = isDateDisabled(current, disabled, adapter);
|
|
40
|
-
const rangeFlags = computeRangeFlags(current, normalizedRange, adapter);
|
|
41
|
-
days.push({
|
|
42
|
-
isoString: current,
|
|
43
|
-
dayNumber: adapter.getDate(current),
|
|
44
|
-
isCurrentMonth,
|
|
45
|
-
isToday: isTodayDate,
|
|
46
|
-
isSelected: isSelected_,
|
|
47
|
-
isDisabled: isDisabled_,
|
|
48
|
-
isFocused: isFocused_,
|
|
49
|
-
...rangeFlags,
|
|
50
|
-
});
|
|
51
|
-
current = adapter.addDays(current, 1);
|
|
52
|
-
}
|
|
53
|
-
weeks.push(days);
|
|
54
|
-
// 다음 주의 시작이 이미 다음 달이면 그리드 종료
|
|
55
|
-
if (!adapter.isSameMonth(current, monthISO) && week >= 3) {
|
|
56
|
-
break;
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
return weeks;
|
|
60
|
-
}
|
|
61
|
-
/**
|
|
62
|
-
* Range가 한 쪽만 선택된 경우 hover 날짜로 임시 범위를 만들어 표시한다.
|
|
63
|
-
* start > end인 경우 정렬한다.
|
|
64
|
-
*/
|
|
65
|
-
function normalizeRangeForDisplay(range, hover, adapter) {
|
|
66
|
-
if (!range)
|
|
67
|
-
return { start: null, end: null };
|
|
68
|
-
const { start, end } = range;
|
|
69
|
-
// 둘 다 선택됨 → 정렬해서 반환
|
|
70
|
-
if (start && end) {
|
|
71
|
-
if (adapter.isAfter(start, end)) {
|
|
72
|
-
return { start: end, end: start };
|
|
73
|
-
}
|
|
74
|
-
return { start, end };
|
|
75
|
-
}
|
|
76
|
-
// 시작만 선택됨 + hover 있음 → hover까지 미리보기
|
|
77
|
-
if (start && !end && hover) {
|
|
78
|
-
if (adapter.isAfter(start, hover)) {
|
|
79
|
-
return { start: hover, end: start };
|
|
80
|
-
}
|
|
81
|
-
return { start, end: hover };
|
|
82
|
-
}
|
|
83
|
-
// 시작만 선택됨, hover 없음
|
|
84
|
-
if (start && !end) {
|
|
85
|
-
return { start, end: null };
|
|
86
|
-
}
|
|
87
|
-
return { start: null, end: null };
|
|
88
|
-
}
|
|
89
|
-
function computeRangeFlags(iso, range, adapter) {
|
|
90
|
-
const { start, end } = range;
|
|
91
|
-
if (!start) {
|
|
92
|
-
return { isRangeStart: false, isRangeEnd: false, isInRange: false };
|
|
93
|
-
}
|
|
94
|
-
const isRangeStart = adapter.isSameDay(iso, start);
|
|
95
|
-
if (!end) {
|
|
96
|
-
return { isRangeStart, isRangeEnd: false, isInRange: false };
|
|
97
|
-
}
|
|
98
|
-
const isRangeEnd = adapter.isSameDay(iso, end);
|
|
99
|
-
const isInRange = !isRangeStart &&
|
|
100
|
-
!isRangeEnd &&
|
|
101
|
-
adapter.isAfter(iso, start) &&
|
|
102
|
-
adapter.isBefore(iso, end);
|
|
103
|
-
return { isRangeStart, isRangeEnd, isInRange };
|
|
104
|
-
}
|
|
105
|
-
/**
|
|
106
|
-
* 주어진 날짜가 비활성화 규칙에 해당하는지 검사한다.
|
|
107
|
-
*/
|
|
108
|
-
export function isDateDisabled(iso, rules, adapter) {
|
|
109
|
-
for (const rule of rules) {
|
|
110
|
-
if ('date' in rule) {
|
|
111
|
-
if (adapter.isSameDay(iso, rule.date))
|
|
112
|
-
return true;
|
|
113
|
-
}
|
|
114
|
-
else if ('before' in rule) {
|
|
115
|
-
if (adapter.isBefore(iso, rule.before))
|
|
116
|
-
return true;
|
|
117
|
-
}
|
|
118
|
-
else if ('after' in rule) {
|
|
119
|
-
if (adapter.isAfter(iso, rule.after))
|
|
120
|
-
return true;
|
|
121
|
-
}
|
|
122
|
-
else if ('dayOfWeek' in rule) {
|
|
123
|
-
if (rule.dayOfWeek.includes(adapter.getDay(iso)))
|
|
124
|
-
return true;
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
return false;
|
|
128
|
-
}
|
|
129
|
-
/**
|
|
130
|
-
* 두 날짜 중 더 이른 것을 반환한다.
|
|
131
|
-
*/
|
|
132
|
-
export function minDate(a, b, adapter) {
|
|
133
|
-
return adapter.isBefore(a, b) ? a : b;
|
|
134
|
-
}
|
|
135
|
-
/**
|
|
136
|
-
* 두 날짜 중 더 늦은 것을 반환한다.
|
|
137
|
-
*/
|
|
138
|
-
export function maxDate(a, b, adapter) {
|
|
139
|
-
return adapter.isAfter(a, b) ? a : b;
|
|
140
|
-
}
|
|
141
|
-
//# sourceMappingURL=calendar.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"calendar.js","sourceRoot":"","sources":["../../src/utils/calendar.ts"],"names":[],"mappings":"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"}
|
package/dist/utils/date.d.ts
DELETED
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import type { DateAdapter } from '../types.js';
|
|
2
|
-
/**
|
|
3
|
-
* 날짜 문자열을 ISO 8601 UTC 형식으로 정규화한다.
|
|
4
|
-
* "2026-01-15" → "2026-01-15T00:00:00.000Z"
|
|
5
|
-
*/
|
|
6
|
-
export declare function normalizeISO(value: string): string;
|
|
7
|
-
/**
|
|
8
|
-
* 사용자 입력 텍스트를 ISO string으로 파싱한다.
|
|
9
|
-
* 실패 시 null을 반환한다.
|
|
10
|
-
*/
|
|
11
|
-
export declare function parseInputValue(input: string, format: string, adapter: DateAdapter): string | null;
|
|
12
|
-
/** 주어진 달의 이름을 반환한다 (기본 영어) */
|
|
13
|
-
export declare const WEEKDAY_LABELS: {
|
|
14
|
-
short: readonly ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"];
|
|
15
|
-
full: readonly ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"];
|
|
16
|
-
};
|
|
17
|
-
/** 주 시작 요일에 맞춰 요일 배열을 정렬한다 */
|
|
18
|
-
export declare function getOrderedWeekdays(weekStartsOn?: 0 | 1): {
|
|
19
|
-
short: "Su" | "Mo" | "Tu" | "We" | "Th" | "Fr" | "Sa";
|
|
20
|
-
full: "Sunday" | "Monday" | "Tuesday" | "Wednesday" | "Thursday" | "Friday" | "Saturday";
|
|
21
|
-
}[];
|
|
22
|
-
//# sourceMappingURL=date.d.ts.map
|
package/dist/utils/date.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"date.d.ts","sourceRoot":"","sources":["../../src/utils/date.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAK/C;;;GAGG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAKlD;AAED;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,WAAW,GACnB,MAAM,GAAG,IAAI,CAuBf;AAED,8BAA8B;AAC9B,eAAO,MAAM,cAAc;;;CAW1B,CAAC;AAEF,8BAA8B;AAC9B,wBAAgB,kBAAkB,CAAC,YAAY,GAAE,CAAC,GAAG,CAAK;;;IAYzD"}
|
package/dist/utils/date.js
DELETED
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
const ISO_DATE_REGEX = /^\d{4}-\d{2}-\d{2}$/;
|
|
2
|
-
const ISO_DATETIME_REGEX = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}/;
|
|
3
|
-
/**
|
|
4
|
-
* 날짜 문자열을 ISO 8601 UTC 형식으로 정규화한다.
|
|
5
|
-
* "2026-01-15" → "2026-01-15T00:00:00.000Z"
|
|
6
|
-
*/
|
|
7
|
-
export function normalizeISO(value) {
|
|
8
|
-
if (!value)
|
|
9
|
-
return '';
|
|
10
|
-
if (ISO_DATETIME_REGEX.test(value))
|
|
11
|
-
return value;
|
|
12
|
-
if (ISO_DATE_REGEX.test(value))
|
|
13
|
-
return `${value}T00:00:00.000Z`;
|
|
14
|
-
return value;
|
|
15
|
-
}
|
|
16
|
-
/**
|
|
17
|
-
* 사용자 입력 텍스트를 ISO string으로 파싱한다.
|
|
18
|
-
* 실패 시 null을 반환한다.
|
|
19
|
-
*/
|
|
20
|
-
export function parseInputValue(input, format, adapter) {
|
|
21
|
-
if (!input.trim())
|
|
22
|
-
return null;
|
|
23
|
-
// 기본 포맷: yyyy-MM-dd 또는 yyyy/MM/dd
|
|
24
|
-
const cleaned = input.replace(/\//g, '-').trim();
|
|
25
|
-
if (ISO_DATE_REGEX.test(cleaned)) {
|
|
26
|
-
const normalized = normalizeISO(cleaned);
|
|
27
|
-
if (adapter.isValid(normalized)) {
|
|
28
|
-
return normalized;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
// 구분자 없는 8자리 숫자: 20260115 → 2026-01-15
|
|
32
|
-
if (/^\d{8}$/.test(cleaned)) {
|
|
33
|
-
const formatted = `${cleaned.slice(0, 4)}-${cleaned.slice(4, 6)}-${cleaned.slice(6, 8)}`;
|
|
34
|
-
const normalized = normalizeISO(formatted);
|
|
35
|
-
if (adapter.isValid(normalized)) {
|
|
36
|
-
return normalized;
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
return null;
|
|
40
|
-
}
|
|
41
|
-
/** 주어진 달의 이름을 반환한다 (기본 영어) */
|
|
42
|
-
export const WEEKDAY_LABELS = {
|
|
43
|
-
short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],
|
|
44
|
-
full: [
|
|
45
|
-
'Sunday',
|
|
46
|
-
'Monday',
|
|
47
|
-
'Tuesday',
|
|
48
|
-
'Wednesday',
|
|
49
|
-
'Thursday',
|
|
50
|
-
'Friday',
|
|
51
|
-
'Saturday',
|
|
52
|
-
],
|
|
53
|
-
};
|
|
54
|
-
/** 주 시작 요일에 맞춰 요일 배열을 정렬한다 */
|
|
55
|
-
export function getOrderedWeekdays(weekStartsOn = 0) {
|
|
56
|
-
const days = WEEKDAY_LABELS.short.map((short, i) => ({
|
|
57
|
-
short,
|
|
58
|
-
full: WEEKDAY_LABELS.full[i],
|
|
59
|
-
}));
|
|
60
|
-
if (weekStartsOn === 1) {
|
|
61
|
-
const sunday = days.shift();
|
|
62
|
-
days.push(sunday);
|
|
63
|
-
}
|
|
64
|
-
return days;
|
|
65
|
-
}
|
|
66
|
-
//# sourceMappingURL=date.js.map
|
package/dist/utils/date.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"date.js","sourceRoot":"","sources":["../../src/utils/date.ts"],"names":[],"mappings":"AAEA,MAAM,cAAc,GAAG,qBAAqB,CAAC;AAC7C,MAAM,kBAAkB,GAAG,sCAAsC,CAAC;AAElE;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,IAAI,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACjD,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,GAAG,KAAK,gBAAgB,CAAC;IAChE,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAC7B,KAAa,EACb,MAAc,EACd,OAAoB;IAEpB,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;QAAE,OAAO,IAAI,CAAC;IAE/B,kCAAkC;IAClC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAEjD,IAAI,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACjC,MAAM,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;QACzC,IAAI,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YAChC,OAAO,UAAU,CAAC;QACpB,CAAC;IACH,CAAC;IAED,uCAAuC;IACvC,IAAI,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,MAAM,SAAS,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QACzF,MAAM,UAAU,GAAG,YAAY,CAAC,SAAS,CAAC,CAAC;QAC3C,IAAI,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;YAChC,OAAO,UAAU,CAAC;QACpB,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,8BAA8B;AAC9B,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,KAAK,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAU;IAC1D,IAAI,EAAE;QACJ,QAAQ;QACR,QAAQ;QACR,SAAS;QACT,WAAW;QACX,UAAU;QACV,QAAQ;QACR,UAAU;KACF;CACX,CAAC;AAEF,8BAA8B;AAC9B,MAAM,UAAU,kBAAkB,CAAC,eAAsB,CAAC;IACxD,MAAM,IAAI,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACnD,KAAK;QACL,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC,CAAE;KAC9B,CAAC,CAAC,CAAC;IAEJ,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,EAAG,CAAC;QAC7B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
package/dist/utils/locale.d.ts
DELETED
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
import type { WeekStartsOn } from '../types.js';
|
|
2
|
-
export interface WeekdayInfo {
|
|
3
|
-
/** 짧은 이름 (예: "Su", "일") */
|
|
4
|
-
short: string;
|
|
5
|
-
/** 전체 이름 (예: "Sunday", "일요일") */
|
|
6
|
-
full: string;
|
|
7
|
-
}
|
|
8
|
-
/**
|
|
9
|
-
* Intl.DateTimeFormat으로 월 이름을 반환한다.
|
|
10
|
-
* @param month 0-indexed (0 = January)
|
|
11
|
-
* @param year 표시에만 사용 (일부 locale은 년 포함)
|
|
12
|
-
* @param locale BCP 47 locale string (예: "en-US", "ko-KR", "ja-JP")
|
|
13
|
-
*/
|
|
14
|
-
export declare function getMonthName(month: number, locale?: string): string;
|
|
15
|
-
/**
|
|
16
|
-
* "2026년 1월" 또는 "January 2026" 같은 월+년 문자열을 반환한다.
|
|
17
|
-
*/
|
|
18
|
-
export declare function formatMonthYear(year: number, month: number, locale?: string): string;
|
|
19
|
-
/**
|
|
20
|
-
* Intl.DateTimeFormat으로 주의 요일 이름 배열을 반환한다.
|
|
21
|
-
* weekStartsOn에 맞춰 정렬.
|
|
22
|
-
*
|
|
23
|
-
* @param locale BCP 47 locale string
|
|
24
|
-
* @param weekStartsOn 0 = Sunday, 1 = Monday
|
|
25
|
-
* @returns 7개의 WeekdayInfo 배열
|
|
26
|
-
*/
|
|
27
|
-
export declare function getWeekdayNames(locale?: string, weekStartsOn?: WeekStartsOn): WeekdayInfo[];
|
|
28
|
-
/**
|
|
29
|
-
* Intl.DateTimeFormat으로 날짜의 전체 텍스트를 반환한다 (스크린리더용).
|
|
30
|
-
* 예: "2026년 1월 15일 목요일"
|
|
31
|
-
*/
|
|
32
|
-
export declare function formatFullDate(iso: string, locale?: string): string;
|
|
33
|
-
//# sourceMappingURL=locale.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"locale.d.ts","sourceRoot":"","sources":["../../src/utils/locale.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,WAAW,WAAW;IAC1B,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,iCAAiC;IACjC,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,SAAU,GAAG,MAAM,CAIpE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,SAAU,GAAG,MAAM,CAOrF;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC7B,MAAM,SAAU,EAChB,YAAY,GAAE,YAAgB,GAC7B,WAAW,EAAE,CA2Bf;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,SAAU,GAAG,MAAM,CASpE"}
|