@sectile/core 0.4.0 → 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.
Files changed (82) hide show
  1. package/README.md +1 -0
  2. package/dist/adapter-runtime.d.ts +13 -0
  3. package/dist/adapter-runtime.d.ts.map +1 -1
  4. package/dist/adapter-runtime.js +27 -0
  5. package/dist/adapter-runtime.js.map +1 -1
  6. package/dist/error-code.d.ts +1 -1
  7. package/dist/error-code.d.ts.map +1 -1
  8. package/dist/index.d.ts +1 -17
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/reorder.d.ts +2 -1
  11. package/dist/reorder.d.ts.map +1 -1
  12. package/dist/reorder.js +4 -1
  13. package/dist/reorder.js.map +1 -1
  14. package/dist/structures/sequence.d.ts +13 -0
  15. package/dist/structures/sequence.d.ts.map +1 -1
  16. package/dist/structures/sequence.js +39 -0
  17. package/dist/structures/sequence.js.map +1 -1
  18. package/package.json +5 -77
  19. package/dist/calendar.d.ts +0 -3
  20. package/dist/calendar.d.ts.map +0 -1
  21. package/dist/calendar.js +0 -3
  22. package/dist/calendar.js.map +0 -1
  23. package/dist/date-field.d.ts +0 -62
  24. package/dist/date-field.d.ts.map +0 -1
  25. package/dist/date-field.js +0 -245
  26. package/dist/date-field.js.map +0 -1
  27. package/dist/date-picker.d.ts +0 -76
  28. package/dist/date-picker.d.ts.map +0 -1
  29. package/dist/date-picker.js +0 -261
  30. package/dist/date-picker.js.map +0 -1
  31. package/dist/date-range-field.d.ts +0 -47
  32. package/dist/date-range-field.d.ts.map +0 -1
  33. package/dist/date-range-field.js +0 -66
  34. package/dist/date-range-field.js.map +0 -1
  35. package/dist/date-range-picker.d.ts +0 -29
  36. package/dist/date-range-picker.d.ts.map +0 -1
  37. package/dist/date-range-picker.js +0 -89
  38. package/dist/date-range-picker.js.map +0 -1
  39. package/dist/date-time-field.d.ts +0 -57
  40. package/dist/date-time-field.d.ts.map +0 -1
  41. package/dist/date-time-field.js +0 -267
  42. package/dist/date-time-field.js.map +0 -1
  43. package/dist/date-time-picker.d.ts +0 -71
  44. package/dist/date-time-picker.d.ts.map +0 -1
  45. package/dist/date-time-picker.js +0 -156
  46. package/dist/date-time-picker.js.map +0 -1
  47. package/dist/date-time-range-picker.d.ts +0 -87
  48. package/dist/date-time-range-picker.d.ts.map +0 -1
  49. package/dist/date-time-range-picker.js +0 -252
  50. package/dist/date-time-range-picker.js.map +0 -1
  51. package/dist/internal/composites/calendar.d.ts +0 -36
  52. package/dist/internal/composites/calendar.d.ts.map +0 -1
  53. package/dist/internal/composites/calendar.js +0 -143
  54. package/dist/internal/composites/calendar.js.map +0 -1
  55. package/dist/month-picker.d.ts +0 -5
  56. package/dist/month-picker.d.ts.map +0 -1
  57. package/dist/month-picker.js +0 -4
  58. package/dist/month-picker.js.map +0 -1
  59. package/dist/month-range-picker.d.ts +0 -6
  60. package/dist/month-range-picker.d.ts.map +0 -1
  61. package/dist/month-range-picker.js +0 -5
  62. package/dist/month-range-picker.js.map +0 -1
  63. package/dist/range-calendar.d.ts +0 -6
  64. package/dist/range-calendar.d.ts.map +0 -1
  65. package/dist/range-calendar.js +0 -5
  66. package/dist/range-calendar.js.map +0 -1
  67. package/dist/time-field.d.ts +0 -48
  68. package/dist/time-field.d.ts.map +0 -1
  69. package/dist/time-field.js +0 -157
  70. package/dist/time-field.js.map +0 -1
  71. package/dist/time-range-field.d.ts +0 -53
  72. package/dist/time-range-field.d.ts.map +0 -1
  73. package/dist/time-range-field.js +0 -75
  74. package/dist/time-range-field.js.map +0 -1
  75. package/dist/year-picker.d.ts +0 -10
  76. package/dist/year-picker.d.ts.map +0 -1
  77. package/dist/year-picker.js +0 -27
  78. package/dist/year-picker.js.map +0 -1
  79. package/dist/year-range-picker.d.ts +0 -6
  80. package/dist/year-range-picker.d.ts.map +0 -1
  81. package/dist/year-range-picker.js +0 -5
  82. package/dist/year-range-picker.js.map +0 -1
@@ -1,252 +0,0 @@
1
- import { unwrap } from './result.js';
2
- import { fail, ok } from './internal/kernel/foundation.js';
3
- import { createMachineUpdate } from './internal/kernel/machine.js';
4
- import { compareDateValues, createDateValue, tryCreateDateValue } from './date-field.js';
5
- import { compareDateTimeValues, createDateTimeRange, createDateTimeValue, tryCreateDateTimeRange, tryCreateDateTimeValue, } from './date-time-field.js';
6
- import { applyDatePickerEvent, createDatePickerState, isDatePickerValueAvailable, tryCreateDatePickerState, } from './date-picker.js';
7
- import { compareTimeValues, createTimeValue, tryCreateTimeValue, } from './time-field.js';
8
- const MIDNIGHT = Object.freeze({ hour: 0, minute: 0, second: 0, millisecond: 0 });
9
- export function createDateTimeRangePickerState(input = {}) {
10
- return unwrap(tryCreateDateTimeRangePickerState(input));
11
- }
12
- export function tryCreateDateTimeRangePickerState(input = {}) {
13
- const value = input.value === undefined || input.value === null
14
- ? ok(null)
15
- : tryCreateDateTimeRange(input.value.start, input.value.end);
16
- if (!value.ok)
17
- return value;
18
- const anchor = input.anchor === undefined || input.anchor === null
19
- ? ok(null)
20
- : tryCreateDateValue(input.anchor.year, input.anchor.month, input.anchor.day);
21
- if (!anchor.ok)
22
- return anchor;
23
- const requestedStartTime = value.value?.start.time ?? input.startTime ?? MIDNIGHT;
24
- const requestedEndTime = value.value?.end.time ?? input.endTime ?? MIDNIGHT;
25
- const startTime = tryCreateTimeValue(requestedStartTime.hour, requestedStartTime.minute, requestedStartTime.second, requestedStartTime.millisecond);
26
- if (!startTime.ok)
27
- return startTime;
28
- const endTime = tryCreateTimeValue(requestedEndTime.hour, requestedEndTime.minute, requestedEndTime.second, requestedEndTime.millisecond);
29
- if (!endTime.ok)
30
- return endTime;
31
- const fallback = anchor.value ?? value.value?.end.date;
32
- const calendar = tryCreateDatePickerState({
33
- value: null,
34
- ...(input.calendar?.highlighted === undefined && fallback !== undefined
35
- ? { highlighted: fallback }
36
- : {}),
37
- ...input.calendar,
38
- });
39
- if (!calendar.ok)
40
- return calendar;
41
- return ok(Object.freeze({
42
- value: value.value,
43
- anchor: anchor.value,
44
- startTime: startTime.value,
45
- endTime: endTime.value,
46
- calendar: calendar.value,
47
- }));
48
- }
49
- export function applyDateTimeRangePickerEvent(state, event, policies = {}) {
50
- const valid = tryCreateDateTimeRangePickerState(state);
51
- if (!valid.ok)
52
- return invalidTransition(valid);
53
- const policy = validatePolicies(policies);
54
- if (!policy.ok)
55
- return policy;
56
- if (event === 'clear')
57
- return commitRange(valid.value, null, policies);
58
- if (typeof event === 'object' && event.type === 'set-value') {
59
- return commitRange(valid.value, event.value, policies);
60
- }
61
- if (typeof event === 'object' && event.type === 'set-start-time') {
62
- return setEndpointTime(valid.value, 'start', event.value, policies);
63
- }
64
- if (typeof event === 'object' && event.type === 'set-end-time') {
65
- return setEndpointTime(valid.value, 'end', event.value, policies);
66
- }
67
- if (typeof event === 'object' && event.type === 'set-start-date') {
68
- return setEndpointDate(valid.value, 'start', event.value, policies);
69
- }
70
- if (typeof event === 'object' && event.type === 'set-end-date') {
71
- return setEndpointDate(valid.value, 'end', event.value, policies);
72
- }
73
- if (event === 'select-highlighted') {
74
- return selectDate(valid.value, valid.value.calendar.highlighted, policies);
75
- }
76
- if (typeof event === 'object' && event.type === 'select-date') {
77
- return selectDate(valid.value, event.value, policies);
78
- }
79
- const update = applyDatePickerEvent(valid.value.calendar, event, policies.date);
80
- if (!update.ok)
81
- return update;
82
- 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] : []));
83
- }
84
- function selectDate(state, requested, policies) {
85
- const date = tryCreateDateValue(requested.year, requested.month, requested.day);
86
- if (!date.ok)
87
- return invalidTransition(date);
88
- if (!isDatePickerValueAvailable(date.value, policies.date)) {
89
- return fail('transition-rejection', 'date-time-range-picker-date-unavailable', 'Date-time range endpoint is outside its selectable domain.');
90
- }
91
- if (state.anchor === null) {
92
- const calendar = tryCreateDatePickerState({
93
- value: null,
94
- highlighted: date.value,
95
- view: { year: date.value.year, month: date.value.month },
96
- viewMode: state.calendar.viewMode,
97
- open: true,
98
- });
99
- if (!calendar.ok)
100
- return calendar;
101
- return createMachineUpdate(Object.freeze({ ...state, anchor: date.value, calendar: calendar.value }), [
102
- ...(compareDateValues(state.calendar.highlighted, date.value) === 0
103
- ? []
104
- : [{ type: 'highlight-changed', value: date.value }]),
105
- { type: 'range-anchor-changed', value: date.value },
106
- ]);
107
- }
108
- const startDate = compareDateValues(state.anchor, date.value) <= 0 ? state.anchor : date.value;
109
- const endDate = compareDateValues(state.anchor, date.value) <= 0 ? date.value : state.anchor;
110
- const start = tryCreateDateTimeValue(startDate, state.startTime);
111
- if (!start.ok)
112
- return start;
113
- const end = tryCreateDateTimeValue(endDate, state.endTime);
114
- if (!end.ok)
115
- return end;
116
- const range = tryCreateDateTimeRange(start.value, end.value);
117
- return range.ok ? commitRange(state, range.value, policies, date.value) : range;
118
- }
119
- function setEndpointTime(state, endpoint, requested, policies) {
120
- const time = validateTime(requested, endpoint === 'start' ? policies.startTime : policies.endTime, endpoint);
121
- if (!time.ok)
122
- return time;
123
- if (state.value === null) {
124
- return createMachineUpdate(Object.freeze({
125
- ...state,
126
- ...(endpoint === 'start' ? { startTime: time.value } : { endTime: time.value }),
127
- }), [{ type: endpoint === 'start' ? 'start-time-changed' : 'end-time-changed', value: time.value }]);
128
- }
129
- const start = endpoint === 'start'
130
- ? tryCreateDateTimeValue(state.value.start.date, time.value)
131
- : ok(state.value.start);
132
- if (!start.ok)
133
- return start;
134
- const end = endpoint === 'end'
135
- ? tryCreateDateTimeValue(state.value.end.date, time.value)
136
- : ok(state.value.end);
137
- if (!end.ok)
138
- return end;
139
- const range = tryCreateDateTimeRange(start.value, end.value);
140
- return range.ok ? commitRange(state, range.value, policies) : range;
141
- }
142
- function setEndpointDate(state, endpoint, requested, policies) {
143
- const date = tryCreateDateValue(requested.year, requested.month, requested.day);
144
- if (!date.ok)
145
- return invalidTransition(date);
146
- const fallback = state.value === null ? date.value : endpoint === 'start' ? state.value.end.date : state.value.start.date;
147
- const start = tryCreateDateTimeValue(endpoint === 'start' ? date.value : fallback, state.startTime);
148
- if (!start.ok)
149
- return start;
150
- const end = tryCreateDateTimeValue(endpoint === 'end' ? date.value : fallback, state.endTime);
151
- if (!end.ok)
152
- return end;
153
- const range = tryCreateDateTimeRange(start.value, end.value);
154
- return range.ok ? commitRange(state, range.value, policies, date.value) : range;
155
- }
156
- function commitRange(state, requested, policies, highlighted) {
157
- if (requested === null) {
158
- if (policies.required === true) {
159
- return fail('transition-rejection', 'date-time-range-picker-value-required', 'Date-time range picker requires a range.');
160
- }
161
- return createMachineUpdate(Object.freeze({ ...state, value: null, anchor: null }), [
162
- { type: 'range-committed', value: null },
163
- ...(state.anchor === null ? [] : [{ type: 'range-anchor-changed', value: null }]),
164
- ]);
165
- }
166
- const range = tryCreateDateTimeRange(requested.start, requested.end);
167
- if (!range.ok)
168
- return invalidTransition(range);
169
- const start = validateEndpoint(range.value.start, policies, 'start');
170
- if (!start.ok)
171
- return start;
172
- const end = validateEndpoint(range.value.end, policies, 'end');
173
- if (!end.ok)
174
- return end;
175
- const selectedHighlight = highlighted ?? range.value.end.date;
176
- const calendar = tryCreateDatePickerState({
177
- value: null,
178
- highlighted: selectedHighlight,
179
- view: { year: selectedHighlight.year, month: selectedHighlight.month },
180
- viewMode: state.calendar.viewMode,
181
- open: state.calendar.open,
182
- });
183
- if (!calendar.ok)
184
- return calendar;
185
- return createMachineUpdate(Object.freeze({
186
- value: range.value,
187
- anchor: null,
188
- startTime: range.value.start.time,
189
- endTime: range.value.end.time,
190
- calendar: calendar.value,
191
- }), [
192
- { type: 'range-committed', value: range.value },
193
- ...(state.anchor === null ? [] : [{ type: 'range-anchor-changed', value: null }]),
194
- ...(compareTimeValues(state.startTime, range.value.start.time) === 0
195
- ? []
196
- : [{ type: 'start-time-changed', value: range.value.start.time }]),
197
- ...(compareTimeValues(state.endTime, range.value.end.time) === 0
198
- ? []
199
- : [{ type: 'end-time-changed', value: range.value.end.time }]),
200
- ...(compareDateValues(state.calendar.highlighted, selectedHighlight) === 0
201
- ? []
202
- : [{ type: 'highlight-changed', value: selectedHighlight }]),
203
- ]);
204
- }
205
- function validateEndpoint(value, policies, endpoint) {
206
- const valid = tryCreateDateTimeValue(value.date, value.time);
207
- if (!valid.ok)
208
- return invalidTransition(valid);
209
- if (!isDatePickerValueAvailable(valid.value.date, policies.date)) {
210
- return fail('transition-rejection', 'date-time-range-picker-date-unavailable', 'Date-time range endpoint is outside its selectable domain.');
211
- }
212
- const time = validateTime(valid.value.time, endpoint === 'start' ? policies.startTime : policies.endTime, endpoint);
213
- if (!time.ok)
214
- return time;
215
- if (policies.min !== undefined && compareDateTimeValues(valid.value, policies.min) < 0) {
216
- return fail('transition-rejection', 'date-time-range-picker-value-below-minimum', 'Date-time range endpoint is below its minimum.');
217
- }
218
- if (policies.max !== undefined && compareDateTimeValues(valid.value, policies.max) > 0) {
219
- return fail('transition-rejection', 'date-time-range-picker-value-above-maximum', 'Date-time range endpoint is above its maximum.');
220
- }
221
- if (policies.unavailable?.(valid.value) === true) {
222
- return fail('transition-rejection', 'date-time-range-picker-value-unavailable', 'Date-time range endpoint is unavailable.');
223
- }
224
- return valid;
225
- }
226
- function validateTime(value, policies = {}, endpoint) {
227
- const valid = tryCreateTimeValue(value.hour, value.minute, value.second, value.millisecond);
228
- if (!valid.ok)
229
- return invalidTransition(valid);
230
- if (policies.min !== undefined && compareTimeValues(valid.value, policies.min) < 0) {
231
- return fail('transition-rejection', `date-time-range-picker-${endpoint}-time-below-minimum`, `Date-time range ${endpoint} time is below its minimum.`);
232
- }
233
- if (policies.max !== undefined && compareTimeValues(valid.value, policies.max) > 0) {
234
- return fail('transition-rejection', `date-time-range-picker-${endpoint}-time-above-maximum`, `Date-time range ${endpoint} time is above its maximum.`);
235
- }
236
- return valid;
237
- }
238
- function validatePolicies(policies) {
239
- if (policies.unavailable !== undefined && typeof policies.unavailable !== 'function') {
240
- return fail('construction', 'invalid-date-time-range-picker-unavailable-policy', 'Date-time range picker unavailable policy must be a function.');
241
- }
242
- if (policies.min !== undefined && policies.max !== undefined && compareDateTimeValues(policies.min, policies.max) > 0) {
243
- return fail('construction', 'inverted-date-time-range-picker-bounds', 'Date-time range picker minimum must not follow its maximum.');
244
- }
245
- return ok(true);
246
- }
247
- function invalidTransition(result) {
248
- return result.ok
249
- ? fail('internal-invariant', 'unexpected-valid-result', 'Expected an invalid result.')
250
- : { ok: false, error: { ...result.error, class: 'transition-rejection' } };
251
- }
252
- //# sourceMappingURL=date-time-range-picker.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"date-time-range-picker.js","sourceRoot":"","sources":["../src/date-time-range-picker.ts"],"names":[],"mappings":"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"}
@@ -1,36 +0,0 @@
1
- import type { AxisBoundaryPolicy, GridDirection, Result, StableID } from '../../shared.js';
2
- import type { Grid } from '../../structures/grid.js';
3
- import { type CursorState } from '../state/cursor.js';
4
- import { type SelectionSnapshotInput, type SelectionState } from '../state/selection.js';
5
- export type CalendarEvent<ID extends StableID = StableID> = GridDirection | 'select' | 'previous-page' | 'next-page' | {
6
- readonly type: 'select';
7
- readonly id: ID;
8
- };
9
- export type CalendarCommand<ID extends StableID = StableID> = {
10
- readonly type: 'focus';
11
- readonly id: ID;
12
- } | {
13
- readonly type: 'request-page';
14
- readonly direction: -1 | 1;
15
- readonly from: ID | null;
16
- };
17
- export interface CalendarState<ID extends StableID = StableID> {
18
- readonly cursor: CursorState<ID>;
19
- readonly selection: SelectionState<ID>;
20
- }
21
- export interface CalendarStateInput<ID extends StableID = StableID> extends SelectionSnapshotInput<ID> {
22
- readonly current?: ID | null;
23
- }
24
- export interface CalendarPolicies<ID extends StableID = StableID> {
25
- readonly eligible?: (id: ID) => boolean;
26
- readonly boundary?: AxisBoundaryPolicy;
27
- readonly maxScan?: number;
28
- }
29
- export interface CalendarUpdate<ID extends StableID = StableID> {
30
- readonly state: CalendarState<ID>;
31
- readonly commands: readonly CalendarCommand<ID>[];
32
- }
33
- export declare function createCalendarState<ID extends StableID>(grid: Grid<ID>, input?: CalendarStateInput<ID>): CalendarState<ID>;
34
- export declare function tryCreateCalendarState<ID extends StableID>(grid: Grid<ID>, input?: CalendarStateInput<ID>): Result<CalendarState<ID>>;
35
- export declare function applyCalendarEvent<ID extends StableID>(grid: Grid<ID>, state: CalendarState<ID>, event: CalendarEvent<ID>, policies?: CalendarPolicies<ID>): Result<CalendarUpdate<ID>>;
36
- //# sourceMappingURL=calendar.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../../../src/internal/composites/calendar.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,kBAAkB,EAClB,aAAa,EACb,MAAM,EAEN,QAAQ,EACT,MAAM,iBAAiB,CAAC;AACzB,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAKrD,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAGL,KAAK,sBAAsB,EAC3B,KAAK,cAAc,EACpB,MAAM,uBAAuB,CAAC;AAE/B,MAAM,MAAM,aAAa,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ,IACpD,aAAa,GACb,QAAQ,GACR,eAAe,GACf,WAAW,GACX;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAA;CAAE,CAAC;AAEjD,MAAM,MAAM,eAAe,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ,IACtD;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAA;CAAE,GAC3C;IAAE,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,EAAE,GAAG,IAAI,CAAA;CAAE,CAAC;AAE5F,MAAM,WAAW,aAAa,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ;IAC3D,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC;CACxC;AAED,MAAM,WAAW,kBAAkB,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ,CAChE,SAAQ,sBAAsB,CAAC,EAAE,CAAC;IAClC,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,gBAAgB,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ;IAC9D,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,OAAO,CAAC;IACxC,QAAQ,CAAC,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IACvC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,cAAc,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ;IAC5D,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC;IAClC,QAAQ,CAAC,QAAQ,EAAE,SAAS,eAAe,CAAC,EAAE,CAAC,EAAE,CAAC;CACnD;AAED,wBAAgB,mBAAmB,CAAC,EAAE,SAAS,QAAQ,EACrD,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,EACd,KAAK,GAAE,kBAAkB,CAAC,EAAE,CAAM,GACjC,aAAa,CAAC,EAAE,CAAC,CAEnB;AAED,wBAAgB,sBAAsB,CAAC,EAAE,SAAS,QAAQ,EACxD,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,EACd,KAAK,GAAE,kBAAkB,CAAC,EAAE,CAAM,GACjC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAc3B;AAED,wBAAgB,kBAAkB,CAAC,EAAE,SAAS,QAAQ,EACpD,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,EACd,KAAK,EAAE,aAAa,CAAC,EAAE,CAAC,EACxB,KAAK,EAAE,aAAa,CAAC,EAAE,CAAC,EACxB,QAAQ,GAAE,gBAAgB,CAAC,EAAE,CAAM,GAClC,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CA2F5B"}
@@ -1,143 +0,0 @@
1
- import { unwrap } from '../../result.js';
2
- import { fail, ok } from '../kernel/foundation.js';
3
- import { findEligibleFromEdge, IndexedSequence } from '../kernel/indexed-sequence.js';
4
- import { createMachineUpdate } from '../kernel/machine.js';
5
- import { createCursorState } from '../state/cursor.js';
6
- import { createSelectionState, selectOne, } from '../state/selection.js';
7
- export function createCalendarState(grid, input = {}) {
8
- return unwrap(tryCreateCalendarState(grid, input));
9
- }
10
- export function tryCreateCalendarState(grid, input = {}) {
11
- const domain = calendarDomain(grid);
12
- const current = input.current ?? null;
13
- if (current !== null && !domain.contains(current)) {
14
- return fail('construction', 'calendar-cursor-outside-grid', 'Calendar cursor must exist in the current grid view.', { current });
15
- }
16
- const selection = createSelectionState(domain, 'single', input);
17
- if (!selection.ok)
18
- return selection;
19
- return ok(calendarState(createCursorState(current), selection.value));
20
- }
21
- export function applyCalendarEvent(grid, state, event, policies = {}) {
22
- const domain = calendarDomain(grid);
23
- const stateError = validateCalendarState(domain, state);
24
- if (stateError !== null)
25
- return { ok: false, error: stateError };
26
- if (!isCalendarEvent(event)) {
27
- return fail('transition-rejection', 'invalid-calendar-event', 'Calendar event must be directional, select, previous-page, or next-page.', { event });
28
- }
29
- const boundary = policies.boundary ?? 'stop';
30
- if (boundary !== 'stop' && boundary !== 'wrap-axis') {
31
- return fail('transition-rejection', 'invalid-calendar-boundary', 'Calendar boundary must be stop or wrap-axis.', { boundary });
32
- }
33
- if (policies.eligible !== undefined && typeof policies.eligible !== 'function') {
34
- return fail('transition-rejection', 'invalid-eligibility-policy', 'Calendar eligibility policy must be a function.');
35
- }
36
- if (typeof event === 'object') {
37
- if (!domain.contains(event.id) || policies.eligible?.(event.id) === false) {
38
- return fail('transition-rejection', 'calendar-target-unavailable', 'Direct calendar selection requires an eligible identity in the grid.', { id: event.id });
39
- }
40
- return createMachineUpdate(calendarState(createCursorState(event.id), selectOne(state.selection, event.id, domain)), [{ type: 'focus', id: event.id }]);
41
- }
42
- if (event === 'previous-page' || event === 'next-page') {
43
- return createMachineUpdate(state, [{
44
- type: 'request-page',
45
- direction: event === 'previous-page' ? -1 : 1,
46
- from: state.cursor.current,
47
- }]);
48
- }
49
- if (event === 'select') {
50
- const current = state.cursor.current;
51
- if (current === null) {
52
- return fail('transition-rejection', 'no-cursor', 'Calendar selection requires a cursor.');
53
- }
54
- const selection = selectOne(state.selection, current, domain);
55
- return createMachineUpdate(selection === state.selection ? state : calendarState(state.cursor, selection));
56
- }
57
- const eligible = policies.eligible ?? (() => true);
58
- const current = state.cursor.current;
59
- let target;
60
- if (current === null) {
61
- const initial = findEligibleFromEdge(domain, event === 'right' || event === 'down' ? 1 : -1, {
62
- eligible,
63
- ...(policies.maxScan === undefined ? {} : { maxScan: policies.maxScan }),
64
- });
65
- if (!initial.ok)
66
- return initial;
67
- target = initial.value;
68
- }
69
- else {
70
- const movement = grid.move(current, event, boundary, {
71
- eligible,
72
- ...(policies.maxScan === undefined ? {} : { maxScan: policies.maxScan }),
73
- });
74
- if (movement.kind === 'resource-rejected')
75
- return { ok: false, error: movement.error };
76
- target = movement.kind === 'found' ? movement.id : null;
77
- }
78
- if (target === null)
79
- return createMachineUpdate(state);
80
- return createMachineUpdate(calendarState(createCursorState(target), state.selection), [{ type: 'focus', id: target }]);
81
- }
82
- function calendarDomain(grid) {
83
- const ids = [];
84
- for (let row = 0; row < grid.rowCount; row += 1) {
85
- for (let column = 0; column < grid.columnCount; column += 1) {
86
- const id = grid.cellAt(row, column);
87
- if (id !== null)
88
- ids.push(id);
89
- }
90
- }
91
- return new IndexedSequence(ids);
92
- }
93
- function validateCalendarState(domain, state) {
94
- if (state.cursor.current !== null && !domain.contains(state.cursor.current)) {
95
- return {
96
- class: 'transition-rejection',
97
- code: 'calendar-cursor-outside-grid',
98
- message: 'Calendar cursor must exist in the current grid view.',
99
- details: { current: state.cursor.current },
100
- };
101
- }
102
- if (state.selection.size > 1 || state.selection.selected.length !== state.selection.size) {
103
- return {
104
- class: 'transition-rejection',
105
- code: 'invalid-calendar-selection',
106
- message: 'Calendar selection must contain at most one identity.',
107
- };
108
- }
109
- for (const id of state.selection.selected) {
110
- if (!domain.contains(id) || !state.selection.has(id)) {
111
- return {
112
- class: 'transition-rejection',
113
- code: 'calendar-selection-outside-grid',
114
- message: 'Calendar selection must agree with the current grid view.',
115
- details: { id },
116
- };
117
- }
118
- }
119
- if (state.selection.anchor !== null && !domain.contains(state.selection.anchor)) {
120
- return {
121
- class: 'transition-rejection',
122
- code: 'calendar-anchor-outside-grid',
123
- message: 'Calendar selection anchor must exist in the current grid view.',
124
- details: { anchor: state.selection.anchor },
125
- };
126
- }
127
- return null;
128
- }
129
- function calendarState(cursor, selection) {
130
- return Object.freeze({ cursor, selection });
131
- }
132
- function isCalendarEvent(value) {
133
- return typeof value === 'string' ? (value === 'left' ||
134
- value === 'right' ||
135
- value === 'up' ||
136
- value === 'down' ||
137
- value === 'select' ||
138
- value === 'previous-page' ||
139
- value === 'next-page') : typeof value === 'object' && value !== null
140
- && 'type' in value && value.type === 'select'
141
- && 'id' in value && typeof value.id === 'string';
142
- }
143
- //# sourceMappingURL=calendar.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"calendar.js","sourceRoot":"","sources":["../../../src/internal/composites/calendar.ts"],"names":[],"mappings":"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"}
@@ -1,5 +0,0 @@
1
- export { applyDatePickerEvent as applyMonthPickerEvent, createDatePickerState as createMonthPickerState, createDatePickerYear as createMonthPickerYear, isDatePickerValueAvailable as isMonthPickerValueAvailable, } from './date-picker.js';
2
- export type { DatePickerCommand as MonthPickerCommand, DatePickerEvent as MonthPickerEvent, DatePickerMonthValue as MonthPickerValue, DatePickerPolicies as MonthPickerPolicies, DatePickerState as MonthPickerState, DatePickerStateInput as MonthPickerStateInput, DatePickerUpdate as MonthPickerUpdate, } from './date-picker.js';
3
- export { tryCreateDatePickerState as tryCreateMonthPickerState } from './date-picker.js';
4
- export { tryCreateDatePickerYear as tryCreateMonthPickerYear } from './date-picker.js';
5
- //# sourceMappingURL=month-picker.d.ts.map
@@ -1 +0,0 @@
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,EAC/C,oBAAoB,IAAI,qBAAqB,EAC7C,0BAA0B,IAAI,2BAA2B,GAC1D,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,iBAAiB,IAAI,kBAAkB,EACvC,eAAe,IAAI,gBAAgB,EACnC,oBAAoB,IAAI,gBAAgB,EACxC,kBAAkB,IAAI,mBAAmB,EACzC,eAAe,IAAI,gBAAgB,EACnC,oBAAoB,IAAI,qBAAqB,EAC7C,gBAAgB,IAAI,iBAAiB,GACtC,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,wBAAwB,IAAI,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AACzF,OAAO,EAAE,uBAAuB,IAAI,wBAAwB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -1,4 +0,0 @@
1
- export { applyDatePickerEvent as applyMonthPickerEvent, createDatePickerState as createMonthPickerState, createDatePickerYear as createMonthPickerYear, isDatePickerValueAvailable as isMonthPickerValueAvailable, } from './date-picker.js';
2
- export { tryCreateDatePickerState as tryCreateMonthPickerState } from './date-picker.js';
3
- export { tryCreateDatePickerYear as tryCreateMonthPickerYear } from './date-picker.js';
4
- //# sourceMappingURL=month-picker.js.map
@@ -1 +0,0 @@
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,EAC/C,oBAAoB,IAAI,qBAAqB,EAC7C,0BAA0B,IAAI,2BAA2B,GAC1D,MAAM,kBAAkB,CAAC;AAW1B,OAAO,EAAE,wBAAwB,IAAI,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AACzF,OAAO,EAAE,uBAAuB,IAAI,wBAAwB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -1,6 +0,0 @@
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 { createDatePickerYear as createMonthRangePickerYear } from './date-picker.js';
4
- export { tryCreateDatePickerYear as tryCreateMonthRangePickerYear } from './date-picker.js';
5
- export { tryCreateDateRangePickerState as tryCreateMonthRangePickerState } from './date-range-picker.js';
6
- //# sourceMappingURL=month-range-picker.d.ts.map
@@ -1 +0,0 @@
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,oBAAoB,IAAI,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAEtF,OAAO,EAAE,uBAAuB,IAAI,6BAA6B,EAAE,MAAM,kBAAkB,CAAC;AAC5F,OAAO,EAAE,6BAA6B,IAAI,8BAA8B,EAAE,MAAM,wBAAwB,CAAC"}
@@ -1,5 +0,0 @@
1
- export { applyDateRangePickerEvent as applyMonthRangePickerEvent, createDateRangePickerState as createMonthRangePickerState, } from './date-range-picker.js';
2
- export { createDatePickerYear as createMonthRangePickerYear } from './date-picker.js';
3
- export { tryCreateDatePickerYear as tryCreateMonthRangePickerYear } from './date-picker.js';
4
- export { tryCreateDateRangePickerState as tryCreateMonthRangePickerState } from './date-range-picker.js';
5
- //# sourceMappingURL=month-range-picker.js.map
@@ -1 +0,0 @@
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,oBAAoB,IAAI,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAEtF,OAAO,EAAE,uBAAuB,IAAI,6BAA6B,EAAE,MAAM,kBAAkB,CAAC;AAC5F,OAAO,EAAE,6BAA6B,IAAI,8BAA8B,EAAE,MAAM,wBAAwB,CAAC"}
@@ -1,6 +0,0 @@
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 { createDatePickerMonth as createRangeCalendarMonth } from './date-picker.js';
4
- export { tryCreateDatePickerMonth as tryCreateRangeCalendarMonth } from './date-picker.js';
5
- export { tryCreateDateRangePickerState as tryCreateRangeCalendarState } from './date-range-picker.js';
6
- //# sourceMappingURL=range-calendar.d.ts.map
@@ -1 +0,0 @@
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,qBAAqB,IAAI,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAErF,OAAO,EAAE,wBAAwB,IAAI,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAC3F,OAAO,EAAE,6BAA6B,IAAI,2BAA2B,EAAE,MAAM,wBAAwB,CAAC"}
@@ -1,5 +0,0 @@
1
- export { applyDateRangePickerEvent as applyRangeCalendarEvent, createDateRangePickerState as createRangeCalendarState, } from './date-range-picker.js';
2
- export { createDatePickerMonth as createRangeCalendarMonth } from './date-picker.js';
3
- export { tryCreateDatePickerMonth as tryCreateRangeCalendarMonth } from './date-picker.js';
4
- export { tryCreateDateRangePickerState as tryCreateRangeCalendarState } from './date-range-picker.js';
5
- //# sourceMappingURL=range-calendar.js.map
@@ -1 +0,0 @@
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,qBAAqB,IAAI,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAErF,OAAO,EAAE,wBAAwB,IAAI,2BAA2B,EAAE,MAAM,kBAAkB,CAAC;AAC3F,OAAO,EAAE,6BAA6B,IAAI,2BAA2B,EAAE,MAAM,wBAAwB,CAAC"}
@@ -1,48 +0,0 @@
1
- import type { Result } from './shared.js';
2
- import { type TextEditingState, type TextEvent } from './text.js';
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
@@ -1 +0,0 @@
1
- {"version":3,"file":"time-field.d.ts","sourceRoot":"","sources":["../src/time-field.ts"],"names":[],"mappings":"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"}