@sectile/temporal 0.5.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/LICENSE +21 -0
- package/README.md +5 -0
- package/dist/calendar.d.ts +71 -0
- package/dist/calendar.d.ts.map +1 -0
- package/dist/calendar.js +248 -0
- package/dist/calendar.js.map +1 -0
- package/dist/date-field.d.ts +62 -0
- package/dist/date-field.d.ts.map +1 -0
- package/dist/date-field.js +245 -0
- package/dist/date-field.js.map +1 -0
- package/dist/date-picker.d.ts +24 -0
- package/dist/date-picker.d.ts.map +1 -0
- package/dist/date-picker.js +47 -0
- package/dist/date-picker.js.map +1 -0
- package/dist/date-range-field.d.ts +47 -0
- package/dist/date-range-field.d.ts.map +1 -0
- package/dist/date-range-field.js +66 -0
- package/dist/date-range-field.js.map +1 -0
- package/dist/date-range-picker.d.ts +29 -0
- package/dist/date-range-picker.d.ts.map +1 -0
- package/dist/date-range-picker.js +90 -0
- package/dist/date-range-picker.js.map +1 -0
- package/dist/date-time-field.d.ts +57 -0
- package/dist/date-time-field.d.ts.map +1 -0
- package/dist/date-time-field.js +267 -0
- package/dist/date-time-field.js.map +1 -0
- package/dist/date-time-picker.d.ts +72 -0
- package/dist/date-time-picker.d.ts.map +1 -0
- package/dist/date-time-picker.js +157 -0
- package/dist/date-time-picker.js.map +1 -0
- package/dist/date-time-range-picker.d.ts +88 -0
- package/dist/date-time-range-picker.d.ts.map +1 -0
- package/dist/date-time-range-picker.js +253 -0
- package/dist/date-time-range-picker.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/internal/foundation.d.ts +5 -0
- package/dist/internal/foundation.d.ts.map +1 -0
- package/dist/internal/foundation.js +18 -0
- package/dist/internal/foundation.js.map +1 -0
- package/dist/internal/machine.d.ts +4 -0
- package/dist/internal/machine.d.ts.map +1 -0
- package/dist/internal/machine.js +6 -0
- package/dist/internal/machine.js.map +1 -0
- package/dist/month-picker.d.ts +6 -0
- package/dist/month-picker.d.ts.map +1 -0
- package/dist/month-picker.js +4 -0
- package/dist/month-picker.js.map +1 -0
- package/dist/month-range-picker.d.ts +6 -0
- package/dist/month-range-picker.d.ts.map +1 -0
- package/dist/month-range-picker.js +5 -0
- package/dist/month-range-picker.js.map +1 -0
- package/dist/range-calendar.d.ts +6 -0
- package/dist/range-calendar.d.ts.map +1 -0
- package/dist/range-calendar.js +5 -0
- package/dist/range-calendar.js.map +1 -0
- package/dist/time-field.d.ts +48 -0
- package/dist/time-field.d.ts.map +1 -0
- package/dist/time-field.js +157 -0
- package/dist/time-field.js.map +1 -0
- package/dist/time-range-field.d.ts +53 -0
- package/dist/time-range-field.d.ts.map +1 -0
- package/dist/time-range-field.js +75 -0
- package/dist/time-range-field.js.map +1 -0
- package/dist/year-picker.d.ts +10 -0
- package/dist/year-picker.d.ts.map +1 -0
- package/dist/year-picker.js +27 -0
- package/dist/year-picker.js.map +1 -0
- package/dist/year-range-picker.d.ts +6 -0
- package/dist/year-range-picker.d.ts.map +1 -0
- package/dist/year-range-picker.js +5 -0
- package/dist/year-range-picker.js.map +1 -0
- package/package.json +120 -0
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import type { Result } from '@sectile/core';
|
|
2
|
+
import { type DateValue } from './date-field.js';
|
|
3
|
+
import { type CalendarViewMode } from './calendar.js';
|
|
4
|
+
import { type DateTimeRange, type DateTimeValue } from './date-time-field.js';
|
|
5
|
+
import { type DatePickerPolicies, type DatePickerState } from './date-picker.js';
|
|
6
|
+
import { type TimeFieldPolicies, type TimeValue } from './time-field.js';
|
|
7
|
+
export interface DateTimeRangePickerState {
|
|
8
|
+
readonly value: DateTimeRange | null;
|
|
9
|
+
readonly anchor: DateValue | null;
|
|
10
|
+
readonly startTime: TimeValue;
|
|
11
|
+
readonly endTime: TimeValue;
|
|
12
|
+
readonly calendar: DatePickerState;
|
|
13
|
+
}
|
|
14
|
+
export type DateTimeRangePickerEvent = 'open' | 'close' | 'toggle' | 'clear' | 'previous-month' | 'next-month' | 'previous-year' | 'next-year' | 'previous-day' | 'next-day' | 'previous-week' | 'next-week' | 'start-of-week' | 'end-of-week' | 'select-highlighted' | {
|
|
15
|
+
readonly type: 'set-view-mode';
|
|
16
|
+
readonly value: CalendarViewMode;
|
|
17
|
+
} | {
|
|
18
|
+
readonly type: 'select-month';
|
|
19
|
+
readonly value: {
|
|
20
|
+
readonly year: number;
|
|
21
|
+
readonly month: number;
|
|
22
|
+
};
|
|
23
|
+
} | {
|
|
24
|
+
readonly type: 'select-date';
|
|
25
|
+
readonly value: DateValue;
|
|
26
|
+
} | {
|
|
27
|
+
readonly type: 'set-start-date';
|
|
28
|
+
readonly value: DateValue;
|
|
29
|
+
} | {
|
|
30
|
+
readonly type: 'set-end-date';
|
|
31
|
+
readonly value: DateValue;
|
|
32
|
+
} | {
|
|
33
|
+
readonly type: 'set-start-time';
|
|
34
|
+
readonly value: TimeValue;
|
|
35
|
+
} | {
|
|
36
|
+
readonly type: 'set-end-time';
|
|
37
|
+
readonly value: TimeValue;
|
|
38
|
+
} | {
|
|
39
|
+
readonly type: 'set-value';
|
|
40
|
+
readonly value: DateTimeRange | null;
|
|
41
|
+
};
|
|
42
|
+
export type DateTimeRangePickerCommand = {
|
|
43
|
+
readonly type: 'range-committed';
|
|
44
|
+
readonly value: DateTimeRange | null;
|
|
45
|
+
} | {
|
|
46
|
+
readonly type: 'range-anchor-changed';
|
|
47
|
+
readonly value: DateValue | null;
|
|
48
|
+
} | {
|
|
49
|
+
readonly type: 'start-time-changed';
|
|
50
|
+
readonly value: TimeValue;
|
|
51
|
+
} | {
|
|
52
|
+
readonly type: 'end-time-changed';
|
|
53
|
+
readonly value: TimeValue;
|
|
54
|
+
} | {
|
|
55
|
+
readonly type: 'highlight-changed';
|
|
56
|
+
readonly value: DateValue;
|
|
57
|
+
} | {
|
|
58
|
+
readonly type: 'view-mode-changed';
|
|
59
|
+
readonly value: CalendarViewMode;
|
|
60
|
+
} | {
|
|
61
|
+
readonly type: 'open-changed';
|
|
62
|
+
readonly open: boolean;
|
|
63
|
+
};
|
|
64
|
+
export interface DateTimeRangePickerPolicies {
|
|
65
|
+
readonly date?: DatePickerPolicies;
|
|
66
|
+
readonly startTime?: TimeFieldPolicies;
|
|
67
|
+
readonly endTime?: TimeFieldPolicies;
|
|
68
|
+
readonly min?: DateTimeValue;
|
|
69
|
+
readonly max?: DateTimeValue;
|
|
70
|
+
readonly required?: boolean;
|
|
71
|
+
readonly unavailable?: (value: DateTimeValue) => boolean;
|
|
72
|
+
}
|
|
73
|
+
export type DateTimeRangePickerUnavailablePredicate = NonNullable<DateTimeRangePickerPolicies['unavailable']>;
|
|
74
|
+
export interface DateTimeRangePickerUpdate {
|
|
75
|
+
readonly state: DateTimeRangePickerState;
|
|
76
|
+
readonly commands: readonly DateTimeRangePickerCommand[];
|
|
77
|
+
}
|
|
78
|
+
export interface DateTimeRangePickerStateInput {
|
|
79
|
+
readonly value?: DateTimeRange | null;
|
|
80
|
+
readonly anchor?: DateValue | null;
|
|
81
|
+
readonly startTime?: TimeValue;
|
|
82
|
+
readonly endTime?: TimeValue;
|
|
83
|
+
readonly calendar?: Partial<DatePickerState>;
|
|
84
|
+
}
|
|
85
|
+
export declare function createDateTimeRangePickerState(input?: DateTimeRangePickerStateInput): DateTimeRangePickerState;
|
|
86
|
+
export declare function tryCreateDateTimeRangePickerState(input?: DateTimeRangePickerStateInput): Result<DateTimeRangePickerState>;
|
|
87
|
+
export declare function applyDateTimeRangePickerEvent(state: DateTimeRangePickerState, event: DateTimeRangePickerEvent, policies?: DateTimeRangePickerPolicies): Result<DateTimeRangePickerUpdate>;
|
|
88
|
+
//# sourceMappingURL=date-time-range-picker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date-time-range-picker.d.ts","sourceRoot":"","sources":["../src/date-time-range-picker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
import { unwrap } from '@sectile/core/result';
|
|
2
|
+
import { fail, ok } from './internal/foundation.js';
|
|
3
|
+
import { createMachineUpdate } from './internal/machine.js';
|
|
4
|
+
import { compareDateValues, createDateValue, tryCreateDateValue } from './date-field.js';
|
|
5
|
+
import { isCalendarValueAvailable } from './calendar.js';
|
|
6
|
+
import { compareDateTimeValues, createDateTimeRange, createDateTimeValue, tryCreateDateTimeRange, tryCreateDateTimeValue, } from './date-time-field.js';
|
|
7
|
+
import { applyDatePickerEvent, createDatePickerState, tryCreateDatePickerState, } from './date-picker.js';
|
|
8
|
+
import { compareTimeValues, createTimeValue, tryCreateTimeValue, } from './time-field.js';
|
|
9
|
+
const MIDNIGHT = Object.freeze({ hour: 0, minute: 0, second: 0, millisecond: 0 });
|
|
10
|
+
export function createDateTimeRangePickerState(input = {}) {
|
|
11
|
+
return unwrap(tryCreateDateTimeRangePickerState(input));
|
|
12
|
+
}
|
|
13
|
+
export function tryCreateDateTimeRangePickerState(input = {}) {
|
|
14
|
+
const value = input.value === undefined || input.value === null
|
|
15
|
+
? ok(null)
|
|
16
|
+
: tryCreateDateTimeRange(input.value.start, input.value.end);
|
|
17
|
+
if (!value.ok)
|
|
18
|
+
return value;
|
|
19
|
+
const anchor = input.anchor === undefined || input.anchor === null
|
|
20
|
+
? ok(null)
|
|
21
|
+
: tryCreateDateValue(input.anchor.year, input.anchor.month, input.anchor.day);
|
|
22
|
+
if (!anchor.ok)
|
|
23
|
+
return anchor;
|
|
24
|
+
const requestedStartTime = value.value?.start.time ?? input.startTime ?? MIDNIGHT;
|
|
25
|
+
const requestedEndTime = value.value?.end.time ?? input.endTime ?? MIDNIGHT;
|
|
26
|
+
const startTime = tryCreateTimeValue(requestedStartTime.hour, requestedStartTime.minute, requestedStartTime.second, requestedStartTime.millisecond);
|
|
27
|
+
if (!startTime.ok)
|
|
28
|
+
return startTime;
|
|
29
|
+
const endTime = tryCreateTimeValue(requestedEndTime.hour, requestedEndTime.minute, requestedEndTime.second, requestedEndTime.millisecond);
|
|
30
|
+
if (!endTime.ok)
|
|
31
|
+
return endTime;
|
|
32
|
+
const fallback = anchor.value ?? value.value?.end.date;
|
|
33
|
+
const calendar = tryCreateDatePickerState({
|
|
34
|
+
value: null,
|
|
35
|
+
...(input.calendar?.highlighted === undefined && fallback !== undefined
|
|
36
|
+
? { highlighted: fallback }
|
|
37
|
+
: {}),
|
|
38
|
+
...input.calendar,
|
|
39
|
+
});
|
|
40
|
+
if (!calendar.ok)
|
|
41
|
+
return calendar;
|
|
42
|
+
return ok(Object.freeze({
|
|
43
|
+
value: value.value,
|
|
44
|
+
anchor: anchor.value,
|
|
45
|
+
startTime: startTime.value,
|
|
46
|
+
endTime: endTime.value,
|
|
47
|
+
calendar: calendar.value,
|
|
48
|
+
}));
|
|
49
|
+
}
|
|
50
|
+
export function applyDateTimeRangePickerEvent(state, event, policies = {}) {
|
|
51
|
+
const valid = tryCreateDateTimeRangePickerState(state);
|
|
52
|
+
if (!valid.ok)
|
|
53
|
+
return invalidTransition(valid);
|
|
54
|
+
const policy = validatePolicies(policies);
|
|
55
|
+
if (!policy.ok)
|
|
56
|
+
return policy;
|
|
57
|
+
if (event === 'clear')
|
|
58
|
+
return commitRange(valid.value, null, policies);
|
|
59
|
+
if (typeof event === 'object' && event.type === 'set-value') {
|
|
60
|
+
return commitRange(valid.value, event.value, policies);
|
|
61
|
+
}
|
|
62
|
+
if (typeof event === 'object' && event.type === 'set-start-time') {
|
|
63
|
+
return setEndpointTime(valid.value, 'start', event.value, policies);
|
|
64
|
+
}
|
|
65
|
+
if (typeof event === 'object' && event.type === 'set-end-time') {
|
|
66
|
+
return setEndpointTime(valid.value, 'end', event.value, policies);
|
|
67
|
+
}
|
|
68
|
+
if (typeof event === 'object' && event.type === 'set-start-date') {
|
|
69
|
+
return setEndpointDate(valid.value, 'start', event.value, policies);
|
|
70
|
+
}
|
|
71
|
+
if (typeof event === 'object' && event.type === 'set-end-date') {
|
|
72
|
+
return setEndpointDate(valid.value, 'end', event.value, policies);
|
|
73
|
+
}
|
|
74
|
+
if (event === 'select-highlighted') {
|
|
75
|
+
return selectDate(valid.value, valid.value.calendar.highlighted, policies);
|
|
76
|
+
}
|
|
77
|
+
if (typeof event === 'object' && event.type === 'select-date') {
|
|
78
|
+
return selectDate(valid.value, event.value, policies);
|
|
79
|
+
}
|
|
80
|
+
const update = applyDatePickerEvent(valid.value.calendar, event, policies.date);
|
|
81
|
+
if (!update.ok)
|
|
82
|
+
return update;
|
|
83
|
+
return createMachineUpdate(Object.freeze({ ...valid.value, calendar: update.value.state }), update.value.commands.flatMap((command) => command.type === 'highlight-changed' || command.type === 'view-mode-changed' || command.type === 'open-changed' ? [command] : []));
|
|
84
|
+
}
|
|
85
|
+
function selectDate(state, requested, policies) {
|
|
86
|
+
const date = tryCreateDateValue(requested.year, requested.month, requested.day);
|
|
87
|
+
if (!date.ok)
|
|
88
|
+
return invalidTransition(date);
|
|
89
|
+
if (!isCalendarValueAvailable(date.value, policies.date)) {
|
|
90
|
+
return fail('transition-rejection', 'date-time-range-picker-date-unavailable', 'Date-time range endpoint is outside its selectable domain.');
|
|
91
|
+
}
|
|
92
|
+
if (state.anchor === null) {
|
|
93
|
+
const calendar = tryCreateDatePickerState({
|
|
94
|
+
value: null,
|
|
95
|
+
highlighted: date.value,
|
|
96
|
+
view: { year: date.value.year, month: date.value.month },
|
|
97
|
+
viewMode: state.calendar.viewMode,
|
|
98
|
+
open: true,
|
|
99
|
+
});
|
|
100
|
+
if (!calendar.ok)
|
|
101
|
+
return calendar;
|
|
102
|
+
return createMachineUpdate(Object.freeze({ ...state, anchor: date.value, calendar: calendar.value }), [
|
|
103
|
+
...(compareDateValues(state.calendar.highlighted, date.value) === 0
|
|
104
|
+
? []
|
|
105
|
+
: [{ type: 'highlight-changed', value: date.value }]),
|
|
106
|
+
{ type: 'range-anchor-changed', value: date.value },
|
|
107
|
+
]);
|
|
108
|
+
}
|
|
109
|
+
const startDate = compareDateValues(state.anchor, date.value) <= 0 ? state.anchor : date.value;
|
|
110
|
+
const endDate = compareDateValues(state.anchor, date.value) <= 0 ? date.value : state.anchor;
|
|
111
|
+
const start = tryCreateDateTimeValue(startDate, state.startTime);
|
|
112
|
+
if (!start.ok)
|
|
113
|
+
return start;
|
|
114
|
+
const end = tryCreateDateTimeValue(endDate, state.endTime);
|
|
115
|
+
if (!end.ok)
|
|
116
|
+
return end;
|
|
117
|
+
const range = tryCreateDateTimeRange(start.value, end.value);
|
|
118
|
+
return range.ok ? commitRange(state, range.value, policies, date.value) : range;
|
|
119
|
+
}
|
|
120
|
+
function setEndpointTime(state, endpoint, requested, policies) {
|
|
121
|
+
const time = validateTime(requested, endpoint === 'start' ? policies.startTime : policies.endTime, endpoint);
|
|
122
|
+
if (!time.ok)
|
|
123
|
+
return time;
|
|
124
|
+
if (state.value === null) {
|
|
125
|
+
return createMachineUpdate(Object.freeze({
|
|
126
|
+
...state,
|
|
127
|
+
...(endpoint === 'start' ? { startTime: time.value } : { endTime: time.value }),
|
|
128
|
+
}), [{ type: endpoint === 'start' ? 'start-time-changed' : 'end-time-changed', value: time.value }]);
|
|
129
|
+
}
|
|
130
|
+
const start = endpoint === 'start'
|
|
131
|
+
? tryCreateDateTimeValue(state.value.start.date, time.value)
|
|
132
|
+
: ok(state.value.start);
|
|
133
|
+
if (!start.ok)
|
|
134
|
+
return start;
|
|
135
|
+
const end = endpoint === 'end'
|
|
136
|
+
? tryCreateDateTimeValue(state.value.end.date, time.value)
|
|
137
|
+
: ok(state.value.end);
|
|
138
|
+
if (!end.ok)
|
|
139
|
+
return end;
|
|
140
|
+
const range = tryCreateDateTimeRange(start.value, end.value);
|
|
141
|
+
return range.ok ? commitRange(state, range.value, policies) : range;
|
|
142
|
+
}
|
|
143
|
+
function setEndpointDate(state, endpoint, requested, policies) {
|
|
144
|
+
const date = tryCreateDateValue(requested.year, requested.month, requested.day);
|
|
145
|
+
if (!date.ok)
|
|
146
|
+
return invalidTransition(date);
|
|
147
|
+
const fallback = state.value === null ? date.value : endpoint === 'start' ? state.value.end.date : state.value.start.date;
|
|
148
|
+
const start = tryCreateDateTimeValue(endpoint === 'start' ? date.value : fallback, state.startTime);
|
|
149
|
+
if (!start.ok)
|
|
150
|
+
return start;
|
|
151
|
+
const end = tryCreateDateTimeValue(endpoint === 'end' ? date.value : fallback, state.endTime);
|
|
152
|
+
if (!end.ok)
|
|
153
|
+
return end;
|
|
154
|
+
const range = tryCreateDateTimeRange(start.value, end.value);
|
|
155
|
+
return range.ok ? commitRange(state, range.value, policies, date.value) : range;
|
|
156
|
+
}
|
|
157
|
+
function commitRange(state, requested, policies, highlighted) {
|
|
158
|
+
if (requested === null) {
|
|
159
|
+
if (policies.required === true) {
|
|
160
|
+
return fail('transition-rejection', 'date-time-range-picker-value-required', 'Date-time range picker requires a range.');
|
|
161
|
+
}
|
|
162
|
+
return createMachineUpdate(Object.freeze({ ...state, value: null, anchor: null }), [
|
|
163
|
+
{ type: 'range-committed', value: null },
|
|
164
|
+
...(state.anchor === null ? [] : [{ type: 'range-anchor-changed', value: null }]),
|
|
165
|
+
]);
|
|
166
|
+
}
|
|
167
|
+
const range = tryCreateDateTimeRange(requested.start, requested.end);
|
|
168
|
+
if (!range.ok)
|
|
169
|
+
return invalidTransition(range);
|
|
170
|
+
const start = validateEndpoint(range.value.start, policies, 'start');
|
|
171
|
+
if (!start.ok)
|
|
172
|
+
return start;
|
|
173
|
+
const end = validateEndpoint(range.value.end, policies, 'end');
|
|
174
|
+
if (!end.ok)
|
|
175
|
+
return end;
|
|
176
|
+
const selectedHighlight = highlighted ?? range.value.end.date;
|
|
177
|
+
const calendar = tryCreateDatePickerState({
|
|
178
|
+
value: null,
|
|
179
|
+
highlighted: selectedHighlight,
|
|
180
|
+
view: { year: selectedHighlight.year, month: selectedHighlight.month },
|
|
181
|
+
viewMode: state.calendar.viewMode,
|
|
182
|
+
open: state.calendar.open,
|
|
183
|
+
});
|
|
184
|
+
if (!calendar.ok)
|
|
185
|
+
return calendar;
|
|
186
|
+
return createMachineUpdate(Object.freeze({
|
|
187
|
+
value: range.value,
|
|
188
|
+
anchor: null,
|
|
189
|
+
startTime: range.value.start.time,
|
|
190
|
+
endTime: range.value.end.time,
|
|
191
|
+
calendar: calendar.value,
|
|
192
|
+
}), [
|
|
193
|
+
{ type: 'range-committed', value: range.value },
|
|
194
|
+
...(state.anchor === null ? [] : [{ type: 'range-anchor-changed', value: null }]),
|
|
195
|
+
...(compareTimeValues(state.startTime, range.value.start.time) === 0
|
|
196
|
+
? []
|
|
197
|
+
: [{ type: 'start-time-changed', value: range.value.start.time }]),
|
|
198
|
+
...(compareTimeValues(state.endTime, range.value.end.time) === 0
|
|
199
|
+
? []
|
|
200
|
+
: [{ type: 'end-time-changed', value: range.value.end.time }]),
|
|
201
|
+
...(compareDateValues(state.calendar.highlighted, selectedHighlight) === 0
|
|
202
|
+
? []
|
|
203
|
+
: [{ type: 'highlight-changed', value: selectedHighlight }]),
|
|
204
|
+
]);
|
|
205
|
+
}
|
|
206
|
+
function validateEndpoint(value, policies, endpoint) {
|
|
207
|
+
const valid = tryCreateDateTimeValue(value.date, value.time);
|
|
208
|
+
if (!valid.ok)
|
|
209
|
+
return invalidTransition(valid);
|
|
210
|
+
if (!isCalendarValueAvailable(valid.value.date, policies.date)) {
|
|
211
|
+
return fail('transition-rejection', 'date-time-range-picker-date-unavailable', 'Date-time range endpoint is outside its selectable domain.');
|
|
212
|
+
}
|
|
213
|
+
const time = validateTime(valid.value.time, endpoint === 'start' ? policies.startTime : policies.endTime, endpoint);
|
|
214
|
+
if (!time.ok)
|
|
215
|
+
return time;
|
|
216
|
+
if (policies.min !== undefined && compareDateTimeValues(valid.value, policies.min) < 0) {
|
|
217
|
+
return fail('transition-rejection', 'date-time-range-picker-value-below-minimum', 'Date-time range endpoint is below its minimum.');
|
|
218
|
+
}
|
|
219
|
+
if (policies.max !== undefined && compareDateTimeValues(valid.value, policies.max) > 0) {
|
|
220
|
+
return fail('transition-rejection', 'date-time-range-picker-value-above-maximum', 'Date-time range endpoint is above its maximum.');
|
|
221
|
+
}
|
|
222
|
+
if (policies.unavailable?.(valid.value) === true) {
|
|
223
|
+
return fail('transition-rejection', 'date-time-range-picker-value-unavailable', 'Date-time range endpoint is unavailable.');
|
|
224
|
+
}
|
|
225
|
+
return valid;
|
|
226
|
+
}
|
|
227
|
+
function validateTime(value, policies = {}, endpoint) {
|
|
228
|
+
const valid = tryCreateTimeValue(value.hour, value.minute, value.second, value.millisecond);
|
|
229
|
+
if (!valid.ok)
|
|
230
|
+
return invalidTransition(valid);
|
|
231
|
+
if (policies.min !== undefined && compareTimeValues(valid.value, policies.min) < 0) {
|
|
232
|
+
return fail('transition-rejection', `date-time-range-picker-${endpoint}-time-below-minimum`, `Date-time range ${endpoint} time is below its minimum.`);
|
|
233
|
+
}
|
|
234
|
+
if (policies.max !== undefined && compareTimeValues(valid.value, policies.max) > 0) {
|
|
235
|
+
return fail('transition-rejection', `date-time-range-picker-${endpoint}-time-above-maximum`, `Date-time range ${endpoint} time is above its maximum.`);
|
|
236
|
+
}
|
|
237
|
+
return valid;
|
|
238
|
+
}
|
|
239
|
+
function validatePolicies(policies) {
|
|
240
|
+
if (policies.unavailable !== undefined && typeof policies.unavailable !== 'function') {
|
|
241
|
+
return fail('construction', 'invalid-date-time-range-picker-unavailable-policy', 'Date-time range picker unavailable policy must be a function.');
|
|
242
|
+
}
|
|
243
|
+
if (policies.min !== undefined && policies.max !== undefined && compareDateTimeValues(policies.min, policies.max) > 0) {
|
|
244
|
+
return fail('construction', 'inverted-date-time-range-picker-bounds', 'Date-time range picker minimum must not follow its maximum.');
|
|
245
|
+
}
|
|
246
|
+
return ok(true);
|
|
247
|
+
}
|
|
248
|
+
function invalidTransition(result) {
|
|
249
|
+
return result.ok
|
|
250
|
+
? fail('internal-invariant', 'unexpected-valid-result', 'Expected an invalid result.')
|
|
251
|
+
: { ok: false, error: { ...result.error, class: 'transition-rejection' } };
|
|
252
|
+
}
|
|
253
|
+
//# sourceMappingURL=date-time-range-picker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date-time-range-picker.js","sourceRoot":"","sources":["../src/date-time-range-picker.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/** Type-only package facade. Runtime consumers import a specific subpath. */
|
|
2
|
+
export type * from './date-field.js';
|
|
3
|
+
export type * from './date-range-field.js';
|
|
4
|
+
export type * from './date-time-field.js';
|
|
5
|
+
export type * from './time-field.js';
|
|
6
|
+
export type * from './time-range-field.js';
|
|
7
|
+
export type * from './calendar.js';
|
|
8
|
+
export type * from './date-picker.js';
|
|
9
|
+
export type * from './date-range-picker.js';
|
|
10
|
+
export type * from './range-calendar.js';
|
|
11
|
+
export type * from './month-picker.js';
|
|
12
|
+
export type * from './month-range-picker.js';
|
|
13
|
+
export type * from './year-picker.js';
|
|
14
|
+
export type * from './year-range-picker.js';
|
|
15
|
+
export type * from './date-time-picker.js';
|
|
16
|
+
export type * from './date-time-range-picker.js';
|
|
17
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,mBAAmB,iBAAiB,CAAC;AACrC,mBAAmB,uBAAuB,CAAC;AAC3C,mBAAmB,sBAAsB,CAAC;AAC1C,mBAAmB,iBAAiB,CAAC;AACrC,mBAAmB,uBAAuB,CAAC;AAC3C,mBAAmB,eAAe,CAAC;AACnC,mBAAmB,kBAAkB,CAAC;AACtC,mBAAmB,wBAAwB,CAAC;AAC5C,mBAAmB,qBAAqB,CAAC;AACzC,mBAAmB,mBAAmB,CAAC;AACvC,mBAAmB,yBAAyB,CAAC;AAC7C,mBAAmB,kBAAkB,CAAC;AACtC,mBAAmB,wBAAwB,CAAC;AAC5C,mBAAmB,uBAAuB,CAAC;AAC3C,mBAAmB,6BAA6B,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { ErrorClass, Result, SectileErrorCode } from '@sectile/core';
|
|
2
|
+
export declare function ok<T>(value: T): Result<T>;
|
|
3
|
+
export declare function fail<T = never, Code extends SectileErrorCode = SectileErrorCode>(errorClass: ErrorClass, code: Code, message: string, details?: Readonly<Record<string, unknown>>): Result<T, Code>;
|
|
4
|
+
export declare function freezeArray<T>(values: readonly T[]): readonly T[];
|
|
5
|
+
//# sourceMappingURL=foundation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"foundation.d.ts","sourceRoot":"","sources":["../../src/internal/foundation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAE1E,wBAAgB,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAEzC;AAED,wBAAgB,IAAI,CAAC,CAAC,GAAG,KAAK,EAAE,IAAI,SAAS,gBAAgB,GAAG,gBAAgB,EAC9E,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,IAAI,EACV,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAC1C,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,CAUjB;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,CAEjE"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export function ok(value) {
|
|
2
|
+
return { ok: true, value };
|
|
3
|
+
}
|
|
4
|
+
export function fail(errorClass, code, message, details) {
|
|
5
|
+
return {
|
|
6
|
+
ok: false,
|
|
7
|
+
error: {
|
|
8
|
+
class: errorClass,
|
|
9
|
+
code,
|
|
10
|
+
message,
|
|
11
|
+
...(details === undefined ? {} : { details }),
|
|
12
|
+
},
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
export function freezeArray(values) {
|
|
16
|
+
return Object.freeze([...values]);
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=foundation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"foundation.js","sourceRoot":"","sources":["../../src/internal/foundation.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,EAAE,CAAI,KAAQ;IAC5B,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,IAAI,CAClB,UAAsB,EACtB,IAAU,EACV,OAAe,EACf,OAA2C;IAE3C,OAAO;QACL,EAAE,EAAE,KAAK;QACT,KAAK,EAAE;YACL,KAAK,EAAE,UAAU;YACjB,IAAI;YACJ,OAAO;YACP,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC;SAC9C;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CAAI,MAAoB;IACjD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC;AACpC,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Result } from '@sectile/core';
|
|
2
|
+
import type { MachineUpdate } from '@sectile/core/revision';
|
|
3
|
+
export declare function createMachineUpdate<State, Command extends object>(state: State, commands?: readonly Command[]): Result<MachineUpdate<State, Command>>;
|
|
4
|
+
//# sourceMappingURL=machine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"machine.d.ts","sourceRoot":"","sources":["../../src/internal/machine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAG5D,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,SAAS,MAAM,EAC/D,KAAK,EAAE,KAAK,EACZ,QAAQ,GAAE,SAAS,OAAO,EAAO,GAChC,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAKvC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { freezeArray, ok } from './foundation.js';
|
|
2
|
+
export function createMachineUpdate(state, commands = []) {
|
|
3
|
+
const frozenCommands = freezeArray(commands.map((command) => Object.freeze({ ...command })));
|
|
4
|
+
return ok(Object.freeze({ state, commands: frozenCommands }));
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=machine.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"machine.js","sourceRoot":"","sources":["../../src/internal/machine.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,iBAAiB,CAAC;AAElD,MAAM,UAAU,mBAAmB,CACjC,KAAY,EACZ,QAAQ,GAAuB,EAAE;IAEjC,MAAM,cAAc,GAAG,WAAW,CAChC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,OAAO,EAAE,CAAY,CAAC,CACpE,CAAC;IACF,OAAO,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,cAAc,EAAE,CAAC,CAAC,CAAC;AAChE,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { applyDatePickerEvent as applyMonthPickerEvent, createDatePickerState as createMonthPickerState, } from './date-picker.js';
|
|
2
|
+
export { createCalendarYear as createMonthPickerYear, isCalendarValueAvailable as isMonthPickerValueAvailable, tryCreateCalendarYear as tryCreateMonthPickerYear, } from './calendar.js';
|
|
3
|
+
export type { DatePickerCommand as MonthPickerCommand, DatePickerEvent as MonthPickerEvent, DatePickerPolicies as MonthPickerPolicies, DatePickerState as MonthPickerState, DatePickerStateInput as MonthPickerStateInput, DatePickerUpdate as MonthPickerUpdate, } from './date-picker.js';
|
|
4
|
+
export type { CalendarMonthValue as MonthPickerValue } from './calendar.js';
|
|
5
|
+
export { tryCreateDatePickerState as tryCreateMonthPickerState } from './date-picker.js';
|
|
6
|
+
//# sourceMappingURL=month-picker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"month-picker.d.ts","sourceRoot":"","sources":["../src/month-picker.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,IAAI,qBAAqB,EAC7C,qBAAqB,IAAI,sBAAsB,GAChD,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,kBAAkB,IAAI,qBAAqB,EAC3C,wBAAwB,IAAI,2BAA2B,EACvD,qBAAqB,IAAI,wBAAwB,GAClD,MAAM,eAAe,CAAC;AACvB,YAAY,EACV,iBAAiB,IAAI,kBAAkB,EACvC,eAAe,IAAI,gBAAgB,EACnC,kBAAkB,IAAI,mBAAmB,EACzC,eAAe,IAAI,gBAAgB,EACnC,oBAAoB,IAAI,qBAAqB,EAC7C,gBAAgB,IAAI,iBAAiB,GACtC,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,kBAAkB,IAAI,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAE5E,OAAO,EAAE,wBAAwB,IAAI,yBAAyB,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { applyDatePickerEvent as applyMonthPickerEvent, createDatePickerState as createMonthPickerState, } from './date-picker.js';
|
|
2
|
+
export { createCalendarYear as createMonthPickerYear, isCalendarValueAvailable as isMonthPickerValueAvailable, tryCreateCalendarYear as tryCreateMonthPickerYear, } from './calendar.js';
|
|
3
|
+
export { tryCreateDatePickerState as tryCreateMonthPickerState } from './date-picker.js';
|
|
4
|
+
//# sourceMappingURL=month-picker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"month-picker.js","sourceRoot":"","sources":["../src/month-picker.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,IAAI,qBAAqB,EAC7C,qBAAqB,IAAI,sBAAsB,GAChD,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EACL,kBAAkB,IAAI,qBAAqB,EAC3C,wBAAwB,IAAI,2BAA2B,EACvD,qBAAqB,IAAI,wBAAwB,GAClD,MAAM,eAAe,CAAC;AAWvB,OAAO,EAAE,wBAAwB,IAAI,yBAAyB,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { applyDateRangePickerEvent as applyMonthRangePickerEvent, createDateRangePickerState as createMonthRangePickerState, } from './date-range-picker.js';
|
|
2
|
+
export type { DateRangePickerCommand as MonthRangePickerCommand, DateRangePickerEvent as MonthRangePickerEvent, DateRangePickerState as MonthRangePickerState, DateRangePickerStateInput as MonthRangePickerStateInput, DateRangePickerUpdate as MonthRangePickerUpdate, } from './date-range-picker.js';
|
|
3
|
+
export { createCalendarYear as createMonthRangePickerYear } from './calendar.js';
|
|
4
|
+
export { tryCreateCalendarYear as tryCreateMonthRangePickerYear } from './calendar.js';
|
|
5
|
+
export { tryCreateDateRangePickerState as tryCreateMonthRangePickerState } from './date-range-picker.js';
|
|
6
|
+
//# sourceMappingURL=month-range-picker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"month-range-picker.d.ts","sourceRoot":"","sources":["../src/month-range-picker.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,IAAI,0BAA0B,EACvD,0BAA0B,IAAI,2BAA2B,GAC1D,MAAM,wBAAwB,CAAC;AAChC,YAAY,EACV,sBAAsB,IAAI,uBAAuB,EACjD,oBAAoB,IAAI,qBAAqB,EAC7C,oBAAoB,IAAI,qBAAqB,EAC7C,yBAAyB,IAAI,0BAA0B,EACvD,qBAAqB,IAAI,sBAAsB,GAChD,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,kBAAkB,IAAI,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAEjF,OAAO,EAAE,qBAAqB,IAAI,6BAA6B,EAAE,MAAM,eAAe,CAAC;AACvF,OAAO,EAAE,6BAA6B,IAAI,8BAA8B,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { applyDateRangePickerEvent as applyMonthRangePickerEvent, createDateRangePickerState as createMonthRangePickerState, } from './date-range-picker.js';
|
|
2
|
+
export { createCalendarYear as createMonthRangePickerYear } from './calendar.js';
|
|
3
|
+
export { tryCreateCalendarYear as tryCreateMonthRangePickerYear } from './calendar.js';
|
|
4
|
+
export { tryCreateDateRangePickerState as tryCreateMonthRangePickerState } from './date-range-picker.js';
|
|
5
|
+
//# sourceMappingURL=month-range-picker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"month-range-picker.js","sourceRoot":"","sources":["../src/month-range-picker.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,IAAI,0BAA0B,EACvD,0BAA0B,IAAI,2BAA2B,GAC1D,MAAM,wBAAwB,CAAC;AAQhC,OAAO,EAAE,kBAAkB,IAAI,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAEjF,OAAO,EAAE,qBAAqB,IAAI,6BAA6B,EAAE,MAAM,eAAe,CAAC;AACvF,OAAO,EAAE,6BAA6B,IAAI,8BAA8B,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { applyDateRangePickerEvent as applyRangeCalendarEvent, createDateRangePickerState as createRangeCalendarState, } from './date-range-picker.js';
|
|
2
|
+
export type { DateRangePickerCommand as RangeCalendarCommand, DateRangePickerEvent as RangeCalendarEvent, DateRangePickerState as RangeCalendarState, DateRangePickerStateInput as RangeCalendarStateInput, DateRangePickerUpdate as RangeCalendarUpdate, } from './date-range-picker.js';
|
|
3
|
+
export { createCalendarMonth as createRangeCalendarMonth } from './calendar.js';
|
|
4
|
+
export { tryCreateCalendarMonth as tryCreateRangeCalendarMonth } from './calendar.js';
|
|
5
|
+
export { tryCreateDateRangePickerState as tryCreateRangeCalendarState } from './date-range-picker.js';
|
|
6
|
+
//# sourceMappingURL=range-calendar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"range-calendar.d.ts","sourceRoot":"","sources":["../src/range-calendar.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,IAAI,uBAAuB,EACpD,0BAA0B,IAAI,wBAAwB,GACvD,MAAM,wBAAwB,CAAC;AAChC,YAAY,EACV,sBAAsB,IAAI,oBAAoB,EAC9C,oBAAoB,IAAI,kBAAkB,EAC1C,oBAAoB,IAAI,kBAAkB,EAC1C,yBAAyB,IAAI,uBAAuB,EACpD,qBAAqB,IAAI,mBAAmB,GAC7C,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,mBAAmB,IAAI,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAEhF,OAAO,EAAE,sBAAsB,IAAI,2BAA2B,EAAE,MAAM,eAAe,CAAC;AACtF,OAAO,EAAE,6BAA6B,IAAI,2BAA2B,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { applyDateRangePickerEvent as applyRangeCalendarEvent, createDateRangePickerState as createRangeCalendarState, } from './date-range-picker.js';
|
|
2
|
+
export { createCalendarMonth as createRangeCalendarMonth } from './calendar.js';
|
|
3
|
+
export { tryCreateCalendarMonth as tryCreateRangeCalendarMonth } from './calendar.js';
|
|
4
|
+
export { tryCreateDateRangePickerState as tryCreateRangeCalendarState } from './date-range-picker.js';
|
|
5
|
+
//# sourceMappingURL=range-calendar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"range-calendar.js","sourceRoot":"","sources":["../src/range-calendar.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,IAAI,uBAAuB,EACpD,0BAA0B,IAAI,wBAAwB,GACvD,MAAM,wBAAwB,CAAC;AAQhC,OAAO,EAAE,mBAAmB,IAAI,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAEhF,OAAO,EAAE,sBAAsB,IAAI,2BAA2B,EAAE,MAAM,eAAe,CAAC;AACtF,OAAO,EAAE,6BAA6B,IAAI,2BAA2B,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { Result } from '@sectile/core';
|
|
2
|
+
import { type TextEditingState, type TextEvent } from '@sectile/core/text';
|
|
3
|
+
export interface TimeValue {
|
|
4
|
+
readonly hour: number;
|
|
5
|
+
readonly minute: number;
|
|
6
|
+
readonly second: number;
|
|
7
|
+
readonly millisecond: number;
|
|
8
|
+
}
|
|
9
|
+
export type TimeSegment = 'hour' | 'minute' | 'second' | 'millisecond';
|
|
10
|
+
export interface TimeFieldState {
|
|
11
|
+
readonly value: TimeValue | null;
|
|
12
|
+
readonly inputState: TextEditingState;
|
|
13
|
+
}
|
|
14
|
+
export type TimeFieldEvent = {
|
|
15
|
+
readonly type: 'text';
|
|
16
|
+
readonly event: TextEvent;
|
|
17
|
+
} | {
|
|
18
|
+
readonly type: 'set-value';
|
|
19
|
+
readonly value: TimeValue | null;
|
|
20
|
+
} | 'increment-segment' | 'decrement-segment' | 'commit' | 'cancel';
|
|
21
|
+
export type TimeFieldCommand = {
|
|
22
|
+
readonly type: 'input-state-changed';
|
|
23
|
+
readonly value: TextEditingState;
|
|
24
|
+
} | {
|
|
25
|
+
readonly type: 'value-committed';
|
|
26
|
+
readonly value: TimeValue | null;
|
|
27
|
+
};
|
|
28
|
+
export interface TimeFieldPolicies {
|
|
29
|
+
readonly min?: TimeValue;
|
|
30
|
+
readonly max?: TimeValue;
|
|
31
|
+
readonly required?: boolean;
|
|
32
|
+
readonly step?: Partial<Record<TimeSegment, number>>;
|
|
33
|
+
}
|
|
34
|
+
export interface TimeFieldUpdate {
|
|
35
|
+
readonly state: TimeFieldState;
|
|
36
|
+
readonly commands: readonly TimeFieldCommand[];
|
|
37
|
+
}
|
|
38
|
+
export declare function createTimeValue(hour: number, minute?: number, second?: number, millisecond?: number): TimeValue;
|
|
39
|
+
export declare function tryCreateTimeValue(hour: number, minute?: number, second?: number, millisecond?: number): Result<TimeValue>;
|
|
40
|
+
export declare function parseTimeValue(text: string): Result<TimeValue>;
|
|
41
|
+
export declare function formatTimeValue(value: TimeValue): string;
|
|
42
|
+
export declare function compareTimeValues(left: TimeValue, right: TimeValue): -1 | 0 | 1;
|
|
43
|
+
export declare function addTimeMilliseconds(value: TimeValue, amount: number): Result<TimeValue>;
|
|
44
|
+
export declare function createTimeFieldState(value?: TimeValue | null, inputState?: TextEditingState): TimeFieldState;
|
|
45
|
+
export declare function tryCreateTimeFieldState(value?: TimeValue | null, inputState?: TextEditingState): Result<TimeFieldState>;
|
|
46
|
+
export declare function applyTimeFieldEvent(state: TimeFieldState, event: TimeFieldEvent, policies?: TimeFieldPolicies): Result<TimeFieldUpdate>;
|
|
47
|
+
export declare function timeSegmentAt(offset: number): TimeSegment;
|
|
48
|
+
//# sourceMappingURL=time-field.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"time-field.d.ts","sourceRoot":"","sources":["../src/time-field.ts"],"names":[],"mappings":"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"}
|