@sectile/terminal 0.4.0 → 0.6.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 (53) hide show
  1. package/dist/calendar.d.ts +36 -74
  2. package/dist/calendar.d.ts.map +1 -1
  3. package/dist/calendar.js +114 -196
  4. package/dist/calendar.js.map +1 -1
  5. package/dist/date-field.d.ts +4 -4
  6. package/dist/date-field.d.ts.map +1 -1
  7. package/dist/date-field.js +5 -5
  8. package/dist/date-field.js.map +1 -1
  9. package/dist/date-picker.d.ts +6 -5
  10. package/dist/date-picker.d.ts.map +1 -1
  11. package/dist/date-picker.js +9 -7
  12. package/dist/date-picker.js.map +1 -1
  13. package/dist/date-range-field.d.ts +5 -5
  14. package/dist/date-range-field.d.ts.map +1 -1
  15. package/dist/date-range-field.js +5 -5
  16. package/dist/date-range-field.js.map +1 -1
  17. package/dist/date-range-picker.d.ts +7 -6
  18. package/dist/date-range-picker.d.ts.map +1 -1
  19. package/dist/date-range-picker.js +9 -8
  20. package/dist/date-range-picker.js.map +1 -1
  21. package/dist/date-time-field.d.ts +4 -4
  22. package/dist/date-time-field.d.ts.map +1 -1
  23. package/dist/date-time-field.js +5 -5
  24. package/dist/date-time-field.js.map +1 -1
  25. package/dist/date-time-picker.d.ts +7 -6
  26. package/dist/date-time-picker.d.ts.map +1 -1
  27. package/dist/date-time-picker.js +12 -10
  28. package/dist/date-time-picker.js.map +1 -1
  29. package/dist/date-time-range-picker.d.ts +7 -6
  30. package/dist/date-time-range-picker.d.ts.map +1 -1
  31. package/dist/date-time-range-picker.js +12 -10
  32. package/dist/date-time-range-picker.js.map +1 -1
  33. package/dist/index.d.ts +2 -2
  34. package/dist/index.d.ts.map +1 -1
  35. package/dist/index.js +1 -1
  36. package/dist/index.js.map +1 -1
  37. package/dist/internal/reference-date.d.ts +3 -0
  38. package/dist/internal/reference-date.d.ts.map +1 -0
  39. package/dist/internal/reference-date.js +8 -0
  40. package/dist/internal/reference-date.js.map +1 -0
  41. package/dist/internal/result.d.ts +17 -0
  42. package/dist/internal/result.d.ts.map +1 -0
  43. package/dist/internal/result.js +8 -0
  44. package/dist/internal/result.js.map +1 -0
  45. package/dist/time-field.d.ts +4 -4
  46. package/dist/time-field.d.ts.map +1 -1
  47. package/dist/time-field.js +5 -5
  48. package/dist/time-field.js.map +1 -1
  49. package/dist/time-range-field.d.ts +4 -4
  50. package/dist/time-range-field.d.ts.map +1 -1
  51. package/dist/time-range-field.js +5 -5
  52. package/dist/time-range-field.js.map +1 -1
  53. package/package.json +3 -2
@@ -1,80 +1,42 @@
1
1
  import { type FacadeConnection } from '@sectile/core/adapter-runtime';
2
- import type { Result, StableID } from '@sectile/core';
3
- import { type CalendarCommand, type CalendarEvent, type CalendarPolicies, type CalendarState } from '@sectile/core/calendar';
4
- import { type Grid } from '@sectile/core/grid';
5
- import { type RevisionResult, type RevisionSnapshot } from '@sectile/core/revision';
2
+ import { type TerminalTemporalResult } from './internal/result.js';
3
+ import type { RevisionSnapshot } from '@sectile/core/revision';
4
+ import { type CalendarEvent, type CalendarMonthValue, type CalendarPolicies, type CalendarState } from '@sectile/temporal/calendar';
5
+ import { type DateValue } from '@sectile/temporal/date-field';
6
6
  import type { TerminalKeyboardInput } from './keyboard.js';
7
- export type KeyboardInput = TerminalKeyboardInput;
8
- export type CalendarEffect<ID extends StableID = StableID> = {
9
- readonly type: 'move-highlight';
10
- readonly id: ID;
11
- } | {
12
- readonly type: 'request-page';
13
- readonly direction: -1 | 1;
14
- readonly from: ID | null;
15
- };
16
- export interface CalendarValueChangeDetails<ID extends StableID = StableID> {
17
- readonly value: ID | null;
18
- readonly previousValue: ID | null;
19
- }
20
- export interface CalendarHighlightChangeDetails<ID extends StableID = StableID> {
21
- readonly value: ID | null;
22
- readonly previousValue: ID | null;
23
- }
24
- export interface CalendarControllerOptions<ID extends StableID = StableID> {
25
- readonly grid: Grid<ID>;
7
+ export type { CalendarCommand, CalendarEvent, CalendarMonthValue, CalendarPolicies, CalendarState, CalendarView, CalendarViewMode, } from '@sectile/temporal/calendar';
8
+ export type { DateValue } from '@sectile/temporal/date-field';
9
+ export interface CalendarOptions {
10
+ readonly policies?: CalendarPolicies;
11
+ readonly value?: DateValue | null;
12
+ readonly defaultValue?: DateValue | null;
13
+ readonly highlightedValue?: DateValue;
14
+ readonly defaultHighlightedValue?: DateValue;
15
+ readonly referenceDate?: DateValue;
26
16
  readonly disabled?: boolean;
27
- readonly policies?: CalendarPolicies<ID>;
28
- readonly value?: ID | null;
29
- readonly defaultValue?: ID | null;
30
- readonly highlightedValue?: ID | null;
31
- readonly defaultHighlightedValue?: ID | null;
32
- readonly onValueChange?: (change: CalendarValueChangeDetails<ID>) => void;
33
- readonly onHighlightedValueChange?: (change: CalendarHighlightChangeDetails<ID>) => void;
34
- }
35
- export type CalendarControllerValueChangeHandler<ID extends StableID = StableID> = NonNullable<CalendarControllerOptions<ID>['onValueChange']>;
36
- export type CalendarControllerHighlightedValueChangeHandler<ID extends StableID = StableID> = NonNullable<CalendarControllerOptions<ID>['onHighlightedValueChange']>;
37
- export interface CalendarControlledValues<ID extends StableID = StableID> {
38
- readonly value?: ID | null;
39
- readonly highlightedValue?: ID | null;
40
- }
41
- export interface CalendarController<ID extends StableID = StableID> {
42
- readonly grid: Grid<ID>;
43
- getSnapshot(): RevisionSnapshot<CalendarState<ID>>;
44
- syncControlledValues(values: CalendarControlledValues<ID>): Result<RevisionSnapshot<CalendarState<ID>>>;
45
- handleKeyboardInput(input: KeyboardInput, expectedRevision?: number): RevisionResult<CalendarState<ID>, CalendarEffect<ID>>;
46
- }
47
- export interface CalendarPageRequestDetails<ID extends StableID = StableID> {
48
- readonly direction: -1 | 1;
49
- readonly from: ID | null;
50
- }
51
- export interface CalendarTransitionDetails<ID extends StableID = StableID> {
52
- readonly event: CalendarEvent<ID>;
53
- readonly result: RevisionResult<CalendarState<ID>, CalendarEffect<ID>>;
54
- }
55
- export interface CalendarConnectionOptions<ID extends StableID = StableID> {
56
- readonly controller: CalendarController<ID>;
57
- readonly disabled?: boolean;
58
- readonly onPageRequest?: (details: CalendarPageRequestDetails<ID>) => void;
59
- readonly onTransition?: (details: CalendarTransitionDetails<ID>) => void;
17
+ readonly readOnly?: boolean;
18
+ readonly required?: boolean;
19
+ readonly onValueChange?: (value: DateValue | null) => void;
20
+ readonly onHighlightedValueChange?: (value: DateValue) => void;
60
21
  readonly onUpdate?: () => void;
61
22
  }
62
- export type CalendarConnectionPageRequestHandler<ID extends StableID = StableID> = NonNullable<CalendarConnectionOptions<ID>['onPageRequest']>;
63
- export type CalendarConnectionTransitionHandler<ID extends StableID = StableID> = NonNullable<CalendarConnectionOptions<ID>['onTransition']>;
64
- export type CalendarConnectionUpdateHandler<ID extends StableID = StableID> = NonNullable<CalendarConnectionOptions<ID>['onUpdate']>;
65
- export interface CalendarConnection<ID extends StableID = StableID> {
66
- readonly grid: Grid<ID>;
67
- getSnapshot(): RevisionSnapshot<CalendarState<ID>>;
68
- syncControlledValues(values: CalendarControlledValues<ID>): Result<RevisionSnapshot<CalendarState<ID>>>;
69
- handleKeyboardInput(input: KeyboardInput): boolean;
70
- }
71
- export type CalendarOptions<ID extends StableID = StableID> = Omit<CalendarControllerOptions<ID>, 'grid'> & Omit<CalendarConnectionOptions<ID>, 'controller'> & {
72
- readonly rows: readonly (readonly ID[])[];
73
- };
74
- export declare function createCalendarController<ID extends StableID>(options: CalendarControllerOptions<ID>): Result<CalendarController<ID>>;
75
- export declare function createCalendar<ID extends StableID>(options: CalendarOptions<ID>): FacadeConnection<CalendarConnection<ID>>;
76
- export declare function tryCreateCalendar<ID extends StableID>(options: CalendarOptions<ID>): Result<FacadeConnection<CalendarConnection<ID>>>;
77
- export declare function connectCalendar<ID extends StableID>(options: CalendarConnectionOptions<ID>): CalendarConnection<ID>;
78
- export declare function toCalendarEvent<ID extends StableID = StableID>(input: KeyboardInput): CalendarEvent<ID> | null;
79
- export declare function toCalendarEffect<ID extends StableID>(command: CalendarCommand<ID>): CalendarEffect<ID>;
23
+ export type CalendarValueChangeHandler = NonNullable<CalendarOptions['onValueChange']>;
24
+ export type CalendarHighlightedValueChangeHandler = NonNullable<CalendarOptions['onHighlightedValueChange']>;
25
+ export type CalendarUpdateHandler = NonNullable<CalendarOptions['onUpdate']>;
26
+ export interface CalendarControlledValues {
27
+ readonly value?: DateValue | null;
28
+ readonly highlightedValue?: DateValue;
29
+ }
30
+ export interface CalendarConnection {
31
+ getSnapshot(): RevisionSnapshot<CalendarState>;
32
+ getMonth(): readonly (readonly DateValue[])[];
33
+ getWeek(): readonly DateValue[];
34
+ getYear(): readonly (readonly CalendarMonthValue[])[];
35
+ syncControlledValues(values: CalendarControlledValues): TerminalTemporalResult<RevisionSnapshot<CalendarState>>;
36
+ handleEvent(event: CalendarEvent): boolean;
37
+ handleKeyboardInput(input: TerminalKeyboardInput): boolean;
38
+ }
39
+ export declare function createCalendar(options?: CalendarOptions): FacadeConnection<CalendarConnection>;
40
+ export declare function tryCreateCalendar(options?: CalendarOptions): TerminalTemporalResult<FacadeConnection<CalendarConnection>>;
41
+ export declare function toCalendarEvent(input: TerminalKeyboardInput): CalendarEvent | null;
80
42
  //# sourceMappingURL=calendar.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../src/calendar.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../src/calendar.ts"],"names":[],"mappings":"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"}
package/dist/calendar.js CHANGED
@@ -1,217 +1,135 @@
1
- import { createFacadeConnection } from '@sectile/core/adapter-runtime';
1
+ import {} from '@sectile/core/adapter-runtime';
2
2
  import { unwrap } from '@sectile/core/result';
3
- import { tryCreateInteractionState, requireInteraction, } from '@sectile/core/interaction';
4
- import { applyCalendarEvent, tryCreateCalendarState, } from '@sectile/core/calendar';
5
- import { tryCreateGrid } from '@sectile/core/grid';
6
- import { tryCreateRevisionSnapshot, rejectRevisionInput, } from '@sectile/core/revision';
7
- import { applyControllerEvent, synchronizeControllerState } from '@sectile/core/adapter-runtime';
8
- export function createCalendarController(options) {
9
- const value = options.value !== undefined ? options.value : options.defaultValue ?? null;
10
- const current = options.highlightedValue !== undefined
11
- ? options.highlightedValue
12
- : options.defaultHighlightedValue ?? null;
13
- const initial = tryCreateCalendarState(options.grid, {
14
- selected: value === null ? [] : [value],
15
- anchor: value,
16
- current,
17
- });
18
- if (!initial.ok)
19
- return initial;
20
- const snapshot = tryCreateRevisionSnapshot(initial.value);
21
- if (!snapshot.ok)
22
- return snapshot;
23
- const interaction = tryCreateInteractionState(options);
24
- if (!interaction.ok)
25
- return interaction;
26
- return { ok: true, value: new TerminalCalendarController(options, snapshot.value, interaction.value) };
27
- }
28
- export function createCalendar(options) {
3
+ import { createTerminalTemporalController, createTerminalTemporalFacadeConnection } from './internal/result.js';
4
+ import { applyCalendarEvent, createCalendarMonth, createCalendarWeek, createCalendarYear, tryCreateCalendarState, } from '@sectile/temporal/calendar';
5
+ import { compareDateValues } from '@sectile/temporal/date-field';
6
+ import { currentReferenceDate } from './internal/reference-date.js';
7
+ export function createCalendar(options = {}) {
29
8
  return unwrap(tryCreateCalendar(options));
30
9
  }
31
- export function tryCreateCalendar(options) {
32
- return createFacadeConnection(options, (options) => tryCreateCalendarConnection(options));
33
- }
34
- function tryCreateCalendarConnection(options) {
35
- const grid = tryCreateGrid(options.rows);
36
- if (!grid.ok)
37
- return grid;
38
- const controller = createCalendarController({ ...options, grid: grid.value });
39
- if (!controller.ok)
40
- return controller;
41
- return { ok: true, value: connectCalendar({ ...options, controller: controller.value }) };
10
+ export function tryCreateCalendar(options = {}) {
11
+ return createTerminalTemporalFacadeConnection(options, constructCalendar);
42
12
  }
43
- export function connectCalendar(options) {
44
- return new TerminalCalendarConnection(options);
45
- }
46
- export function toCalendarEvent(input) {
47
- if (input.key === 'left')
48
- return 'left';
49
- if (input.key === 'right')
50
- return 'right';
51
- if (input.key === 'up')
52
- return 'up';
53
- if (input.key === 'down')
54
- return 'down';
55
- if (input.key === 'space' || input.key === 'enter')
56
- return 'select';
57
- if (input.key === 'page-up')
58
- return 'previous-page';
59
- if (input.key === 'page-down')
60
- return 'next-page';
61
- return null;
62
- }
63
- export function toCalendarEffect(command) {
64
- return Object.freeze(command.type === 'focus'
65
- ? { type: 'move-highlight', id: command.id }
66
- : { type: 'request-page', direction: command.direction, from: command.from });
13
+ function constructCalendar(options) {
14
+ const controls = {
15
+ value: options.value !== undefined,
16
+ highlighted: options.highlightedValue !== undefined,
17
+ };
18
+ const requestedValue = controls.value ? options.value : options.defaultValue;
19
+ const requestedHighlight = controls.highlighted ? options.highlightedValue : options.defaultHighlightedValue;
20
+ const initial = tryCreateCalendarState({
21
+ referenceDate: options.referenceDate ?? currentReferenceDate(),
22
+ ...(requestedValue === undefined ? {} : { value: requestedValue }),
23
+ ...(requestedHighlight === undefined ? {} : { highlighted: requestedHighlight }),
24
+ });
25
+ const runtime = createTerminalTemporalController({
26
+ initial,
27
+ reducer: (state, event) => applyCalendarEvent(state, event, {
28
+ ...options.policies,
29
+ ...(options.required === undefined ? {} : { required: options.required }),
30
+ }),
31
+ reconcile: (previous, proposed) => tryCreateCalendarState({
32
+ value: controls.value ? previous.value : proposed.value,
33
+ highlighted: controls.highlighted ? previous.highlighted : proposed.highlighted,
34
+ view: controls.highlighted ? previous.view : proposed.view,
35
+ viewMode: proposed.viewMode,
36
+ }),
37
+ notify: (previous, proposed) => {
38
+ if (compareNullable(previous.value, proposed.value) !== 0)
39
+ options.onValueChange?.(proposed.value);
40
+ if (compareDateValues(previous.highlighted, proposed.highlighted) !== 0)
41
+ options.onHighlightedValueChange?.(proposed.highlighted);
42
+ },
43
+ toEffect: (command) => command,
44
+ interaction: options,
45
+ interactionIntent: calendarInteractionIntent,
46
+ });
47
+ return runtime.ok
48
+ ? { ok: true, value: new TerminalCalendar(options, runtime.value, controls) }
49
+ : runtime;
67
50
  }
68
- class TerminalCalendarConnection {
69
- grid;
70
- #controller;
71
- #onPageRequest;
72
- #onTransition;
73
- #onUpdate;
74
- constructor(options) {
75
- this.#controller = options.controller;
76
- this.grid = options.controller.grid;
77
- this.#onPageRequest = options.onPageRequest;
78
- this.#onTransition = options.onTransition;
79
- this.#onUpdate = options.onUpdate;
51
+ class TerminalCalendar {
52
+ #options;
53
+ #runtime;
54
+ #controls;
55
+ constructor(options, runtime, controls) {
56
+ this.#options = options;
57
+ this.#runtime = runtime;
58
+ this.#controls = controls;
80
59
  }
81
- getSnapshot() {
82
- return this.#controller.getSnapshot();
60
+ getSnapshot() { return this.#runtime.getSnapshot(); }
61
+ getMonth() {
62
+ return createCalendarMonth(this.getSnapshot().state.view, this.#options.policies?.weekStartsOn);
63
+ }
64
+ getWeek() {
65
+ return createCalendarWeek(this.getSnapshot().state.highlighted, this.#options.policies?.weekStartsOn);
66
+ }
67
+ getYear() {
68
+ return createCalendarYear(this.getSnapshot().state.view.year);
83
69
  }
84
70
  syncControlledValues(values) {
85
- const result = this.#controller.syncControlledValues(values);
71
+ if (this.#controls.value !== (values.value !== undefined) || this.#controls.highlighted !== (values.highlightedValue !== undefined)) {
72
+ return {
73
+ ok: false,
74
+ error: {
75
+ class: 'construction',
76
+ code: 'controlled-shape-mismatch',
77
+ message: 'Controlled calendar values must preserve their construction-time shape.',
78
+ },
79
+ };
80
+ }
81
+ const state = this.getSnapshot().state;
82
+ const highlighted = this.#controls.highlighted ? values.highlightedValue : state.highlighted;
83
+ const result = this.#runtime.replace(tryCreateCalendarState({
84
+ value: this.#controls.value ? values.value : state.value,
85
+ highlighted,
86
+ view: { year: highlighted.year, month: highlighted.month },
87
+ viewMode: state.viewMode,
88
+ }));
86
89
  if (result.ok)
87
- this.#onUpdate?.();
90
+ this.#options.onUpdate?.();
88
91
  return result;
89
92
  }
90
- handleKeyboardInput(input) {
91
- const event = toCalendarEvent(input);
92
- if (event === null)
93
- return false;
94
- const result = this.#controller.handleKeyboardInput(input);
95
- if (result.ok) {
96
- for (const effect of result.commands) {
97
- if (effect.type !== 'request-page')
98
- continue;
99
- this.#onPageRequest?.(Object.freeze({ direction: effect.direction, from: effect.from }));
100
- }
101
- }
102
- this.#onTransition?.(Object.freeze({ event, result }));
93
+ handleEvent(event) {
94
+ const result = this.#runtime.handle(event);
103
95
  if (result.ok)
104
- this.#onUpdate?.();
96
+ this.#options.onUpdate?.();
105
97
  return result.ok;
106
98
  }
107
- }
108
- class TerminalCalendarController {
109
- grid;
110
- #grid;
111
- #policies;
112
- #valueControlled;
113
- #highlightControlled;
114
- #onValueChange;
115
- #onHighlightedValueChange;
116
- #interaction;
117
- #snapshot;
118
- constructor(options, snapshot, interaction) {
119
- this.grid = options.grid;
120
- this.#grid = options.grid;
121
- this.#policies = options.policies ?? {};
122
- this.#valueControlled = options.value !== undefined;
123
- this.#highlightControlled = options.highlightedValue !== undefined;
124
- this.#onValueChange = options.onValueChange;
125
- this.#onHighlightedValueChange = options.onHighlightedValueChange;
126
- this.#interaction = interaction;
127
- this.#snapshot = snapshot;
128
- }
129
- getSnapshot() {
130
- return this.#snapshot;
131
- }
132
- syncControlledValues(values) {
133
- const error = controlledInputError(this.#valueControlled, this.#highlightControlled, values);
134
- if (error !== null)
135
- return { ok: false, error };
136
- const selected = this.#valueControlled
137
- ? values.value
138
- : selectedValue(this.#snapshot.state);
139
- const state = tryCreateCalendarState(this.#grid, {
140
- selected: selected === null ? [] : [selected],
141
- anchor: this.#valueControlled ? selected : this.#snapshot.state.selection.anchor,
142
- current: this.#highlightControlled
143
- ? values.highlightedValue
144
- : this.#snapshot.state.cursor.current,
145
- });
146
- const snapshot = synchronizeControllerState(this.#snapshot, state);
147
- if (!snapshot.ok)
148
- return snapshot;
149
- this.#snapshot = snapshot.value;
150
- return snapshot;
151
- }
152
- handleKeyboardInput(input, expectedRevision = this.#snapshot.revision) {
99
+ handleKeyboardInput(input) {
153
100
  const event = toCalendarEvent(input);
154
- if (event === null) {
155
- return rejectRevisionInput(this.#snapshot, {
156
- class: 'transition-rejection',
157
- code: 'unsupported-terminal-key',
158
- message: 'Terminal keyboard input does not map to a calendar semantic event.',
159
- details: { key: input.key },
160
- });
161
- }
162
- const permitted = requireInteraction(this.#interaction, 'navigate');
163
- if (!permitted.ok)
164
- return rejectRevisionInput(this.#snapshot, permitted.error);
165
- const result = applyControllerEvent(this.#snapshot, expectedRevision, event, (state, semanticEvent) => applyCalendarEvent(this.#grid, state, semanticEvent, this.#policies), (previous, proposed) => controlledState(this.#grid, previous, proposed, this.#valueControlled, this.#highlightControlled), (previous, proposed) => this.#notify(previous, proposed), toCalendarEffect);
166
- if (result.ok)
167
- this.#snapshot = result.snapshot;
168
- return result;
169
- }
170
- #notify(previous, proposed) {
171
- const previousValue = selectedValue(previous);
172
- const value = selectedValue(proposed);
173
- if (previousValue !== value) {
174
- this.#onValueChange?.(Object.freeze({ value, previousValue }));
175
- }
176
- if (previous.cursor.current !== proposed.cursor.current) {
177
- this.#onHighlightedValueChange?.(Object.freeze({
178
- value: proposed.cursor.current,
179
- previousValue: previous.cursor.current,
180
- }));
181
- }
101
+ return event !== null && this.handleEvent(event);
182
102
  }
183
103
  }
184
- function controlledState(grid, previous, proposed, valueControlled, highlightControlled) {
185
- return tryCreateCalendarState(grid, {
186
- selected: valueControlled ? previous.selection.selected : proposed.selection.selected,
187
- anchor: valueControlled ? previous.selection.anchor : proposed.selection.anchor,
188
- current: highlightControlled ? previous.cursor.current : proposed.cursor.current,
189
- });
104
+ export function toCalendarEvent(input) {
105
+ if (input.ctrlKey || input.altKey)
106
+ return null;
107
+ if (input.key === 'left')
108
+ return 'previous-day';
109
+ if (input.key === 'right')
110
+ return 'next-day';
111
+ if (input.key === 'up')
112
+ return 'previous-week';
113
+ if (input.key === 'down')
114
+ return 'next-week';
115
+ if (input.key === 'home')
116
+ return 'start-of-week';
117
+ if (input.key === 'end')
118
+ return 'end-of-week';
119
+ if (input.key === 'page-up')
120
+ return input.shiftKey ? 'previous-year' : 'previous-month';
121
+ if (input.key === 'page-down')
122
+ return input.shiftKey ? 'next-year' : 'next-month';
123
+ if (input.key === 'enter' || input.key === 'space')
124
+ return 'select-highlighted';
125
+ return null;
190
126
  }
191
- function selectedValue(state) {
192
- return state.selection.selected[0] ?? null;
127
+ function calendarInteractionIntent(event) {
128
+ if (event === 'select-highlighted')
129
+ return 'mutate';
130
+ return typeof event === 'object' && (event.type === 'select' || event.type === 'set-value') ? 'mutate' : 'navigate';
193
131
  }
194
- function controlledInputError(valueControlled, highlightControlled, values) {
195
- if (valueControlled !== (values.value !== undefined)) {
196
- return {
197
- class: 'construction',
198
- code: valueControlled ? 'controlled-value-required' : 'uncontrolled-value-update',
199
- message: valueControlled
200
- ? 'Controlled calendar selection sync requires value.'
201
- : 'Uncontrolled calendar selection cannot be synchronized externally.',
202
- };
203
- }
204
- if (highlightControlled !== (values.highlightedValue !== undefined)) {
205
- return {
206
- class: 'construction',
207
- code: highlightControlled
208
- ? 'controlled-highlighted-value-required'
209
- : 'uncontrolled-highlighted-value-update',
210
- message: highlightControlled
211
- ? 'Controlled calendar highlight sync requires highlightedValue.'
212
- : 'Uncontrolled calendar highlight cannot be synchronized externally.',
213
- };
214
- }
215
- return null;
132
+ function compareNullable(left, right) {
133
+ return left === null ? right === null ? 0 : -1 : right === null ? 1 : compareDateValues(left, right);
216
134
  }
217
135
  //# sourceMappingURL=calendar.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"calendar.js","sourceRoot":"","sources":["../src/calendar.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"calendar.js","sourceRoot":"","sources":["../src/calendar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAyB,MAAM,+BAA+B,CAAC;AACtE,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAC9C,OAAO,EAAE,gCAAgC,EAAE,sCAAsC,EAAgE,MAAM,sBAAsB,CAAC;AAE9K,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,GAMvB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,iBAAiB,EAAkB,MAAM,8BAA8B,CAAC;AAEjF,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AA+CpE,MAAM,UAAU,cAAc,CAAC,OAAO,GAAoB,EAAE;IAC1D,OAAO,MAAM,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,OAAO,GAAoB,EAAE;IAC7D,OAAO,sCAAsC,CAAC,OAAO,EAAE,iBAAiB,CAAC,CAAC;AAC5E,CAAC;AAED,SAAS,iBAAiB,CAAC,OAAwB;IACjD,MAAM,QAAQ,GAAG;QACf,KAAK,EAAE,OAAO,CAAC,KAAK,KAAK,SAAS;QAClC,WAAW,EAAE,OAAO,CAAC,gBAAgB,KAAK,SAAS;KACpD,CAAC;IACF,MAAM,cAAc,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC;IAC7E,MAAM,kBAAkB,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,OAAO,CAAC,uBAAuB,CAAC;IAC7G,MAAM,OAAO,GAAG,sBAAsB,CAAC;QACrC,aAAa,EAAE,OAAO,CAAC,aAAa,IAAI,oBAAoB,EAAE;QAC9D,GAAG,CAAC,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,CAAC;QAClE,GAAG,CAAC,kBAAkB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,kBAAkB,EAAE,CAAC;KACjF,CAAC,CAAC;IACH,MAAM,OAAO,GAAG,gCAAgC,CAAiE;QAC/G,OAAO;QACP,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE;YAC1D,GAAG,OAAO,CAAC,QAAQ;YACnB,GAAG,CAAC,OAAO,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC;SAC1E,CAAC;QACF,SAAS,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,CAAC,sBAAsB,CAAC;YACxD,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK;YACvD,WAAW,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW;YAC/E,IAAI,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI;YAC1D,QAAQ,EAAE,QAAQ,CAAC,QAAQ;SAC5B,CAAC;QACF,MAAM,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE;YAC7B,IAAI,eAAe,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC;gBAAE,OAAO,CAAC,aAAa,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACnG,IAAI,iBAAiB,CAAC,QAAQ,CAAC,WAAW,EAAE,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC;gBAAE,OAAO,CAAC,wBAAwB,EAAE,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QACpI,CAAC;QACD,QAAQ,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO;QAC9B,WAAW,EAAE,OAAO;QACpB,iBAAiB,EAAE,yBAAyB;KAC7C,CAAC,CAAC;IACH,OAAO,OAAO,CAAC,EAAE;QACf,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE;QAC7E,CAAC,CAAC,OAAO,CAAC;AACd,CAAC;AAED,MAAM,gBAAgB;IACX,QAAQ,CAAkB;IAC1B,QAAQ,CAA4E;IACpF,SAAS,CAA6D;IAE/E,YACE,OAAwB,EACxB,OAAkF,EAClF,QAAoE;QAEpE,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC5B,CAAC;IAEM,WAAW,KAAsC,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IACtF,QAAQ;QACb,OAAO,mBAAmB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IAClG,CAAC;IACM,OAAO;QACZ,OAAO,kBAAkB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IACxG,CAAC;IACM,OAAO;QACZ,OAAO,kBAAkB,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAChE,CAAC;IACM,oBAAoB,CAAC,MAAgC;QAC1D,IAAI,IAAI,CAAC,SAAS,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,WAAW,KAAK,CAAC,MAAM,CAAC,gBAAgB,KAAK,SAAS,CAAC,EAAE,CAAC;YACpI,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,KAAK,EAAE;oBACL,KAAK,EAAE,cAAc;oBACrB,IAAI,EAAE,2BAA2B;oBACjC,OAAO,EAAE,yEAAyE;iBACnF;aACF,CAAC;QACJ,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC;QACvC,MAAM,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,gBAA6B,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC;QAC1G,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,sBAAsB,CAAC;YAC1D,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAyB,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK;YAC5E,WAAW;YACX,IAAI,EAAE,EAAE,IAAI,EAAE,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,EAAE;YAC1D,QAAQ,EAAE,KAAK,CAAC,QAAQ;SACzB,CAAC,CAAC,CAAC;QACJ,IAAI,MAAM,CAAC,EAAE;YAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC;QAC1C,OAAO,MAAM,CAAC;IAChB,CAAC;IACM,WAAW,CAAC,KAAoB;QACrC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,MAAM,CAAC,EAAE;YAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC;QAC1C,OAAO,MAAM,CAAC,EAAE,CAAC;IACnB,CAAC;IACM,mBAAmB,CAAC,KAA4B;QACrD,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QACrC,OAAO,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IACnD,CAAC;CACF;AAED,MAAM,UAAU,eAAe,CAAC,KAA4B;IAC1D,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAC/C,IAAI,KAAK,CAAC,GAAG,KAAK,MAAM;QAAE,OAAO,cAAc,CAAC;IAChD,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO;QAAE,OAAO,UAAU,CAAC;IAC7C,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI;QAAE,OAAO,eAAe,CAAC;IAC/C,IAAI,KAAK,CAAC,GAAG,KAAK,MAAM;QAAE,OAAO,WAAW,CAAC;IAC7C,IAAI,KAAK,CAAC,GAAG,KAAK,MAAM;QAAE,OAAO,eAAe,CAAC;IACjD,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK;QAAE,OAAO,aAAa,CAAC;IAC9C,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,gBAAgB,CAAC;IACxF,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW;QAAE,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC;IAClF,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO;QAAE,OAAO,oBAAoB,CAAC;IAChF,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,yBAAyB,CAAC,KAAoB;IACrD,IAAI,KAAK,KAAK,oBAAoB;QAAE,OAAO,QAAQ,CAAC;IACpD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC;AACtH,CAAC;AACD,SAAS,eAAe,CAAC,IAAsB,EAAE,KAAuB;IACtE,OAAO,IAAI,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;AACvG,CAAC"}
@@ -1,7 +1,7 @@
1
- import type { Result } from '@sectile/core';
1
+ import { type TerminalTemporalResult } from './internal/result.js';
2
2
  import type { RevisionSnapshot } from '@sectile/core/revision';
3
3
  import { type TextEditingState } from '@sectile/core/text';
4
- import { type DateFieldEvent, type DateFieldPolicies, type DateFieldState, type DateValue } from '@sectile/core/date-field';
4
+ import { type DateFieldEvent, type DateFieldPolicies, type DateFieldState, type DateValue } from '@sectile/temporal/date-field';
5
5
  import { type FacadeConnection } from '@sectile/core/adapter-runtime';
6
6
  import type { TerminalKeyboardInput } from './keyboard.js';
7
7
  export interface DateFieldOptions {
@@ -29,11 +29,11 @@ export interface DateFieldConnection {
29
29
  getText(): string;
30
30
  getValue(): DateValue | null;
31
31
  getCaret(): number;
32
- syncControlledValues(values: DateFieldControlledValues): Result<RevisionSnapshot<DateFieldState>>;
32
+ syncControlledValues(values: DateFieldControlledValues): TerminalTemporalResult<RevisionSnapshot<DateFieldState>>;
33
33
  handleEvent(event: DateFieldEvent): boolean;
34
34
  handleKeyboardInput(input: TerminalKeyboardInput): boolean;
35
35
  handleTextInput(text: string): boolean;
36
36
  }
37
37
  export declare function createDateField(options?: DateFieldOptions): FacadeConnection<DateFieldConnection>;
38
- export declare function tryCreateDateField(options?: DateFieldOptions): Result<FacadeConnection<DateFieldConnection>>;
38
+ export declare function tryCreateDateField(options?: DateFieldOptions): TerminalTemporalResult<FacadeConnection<DateFieldConnection>>;
39
39
  //# sourceMappingURL=date-field.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"date-field.d.ts","sourceRoot":"","sources":["../src/date-field.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAwB,KAAK,gBAAgB,EAA2C,MAAM,oBAAoB,CAAC;AAC1H,OAAO,EAAuE,KAAK,cAAc,EAAE,KAAK,iBAAiB,EAAE,KAAK,cAAc,EAAE,KAAK,SAAS,EAAE,MAAM,0BAA0B,CAAC;AACjM,OAAO,EAA0B,KAAK,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAG9F,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAG3D,MAAM,WAAW,gBAAgB;IAAG,QAAQ,CAAC,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,gBAAgB,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,KAAK,IAAI,CAAC;IAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CAAE;AAErgB,MAAM,MAAM,2BAA2B,GAAG,WAAW,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC,CAAC;AACzF,MAAM,MAAM,gCAAgC,GAAG,WAAW,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,CAAC,CAAC;AACnG,MAAM,MAAM,sBAAsB,GAAG,WAAW,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC;AAC/E,MAAM,WAAW,yBAAyB;IAAG,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC;CAAE;AACzH,MAAM,WAAW,mBAAmB;IAAG,WAAW,IAAI,gBAAgB,CAAC,cAAc,CAAC,CAAC;IAAC,OAAO,IAAI,MAAM,CAAC;IAAC,QAAQ,IAAI,SAAS,GAAG,IAAI,CAAC;IAAC,QAAQ,IAAI,MAAM,CAAC;IAAC,oBAAoB,CAAC,MAAM,EAAE,yBAAyB,GAAG,MAAM,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC,CAAC;IAAC,WAAW,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC;IAAC,mBAAmB,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC;IAAC,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;CAAE;AAClZ,wBAAgB,eAAe,CAAC,OAAO,GAAE,gBAAqB,GAAG,gBAAgB,CAAC,mBAAmB,CAAC,CAAgD;AACtJ,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,gBAAqB,GAAG,MAAM,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC,CAAuD"}
1
+ {"version":3,"file":"date-field.d.ts","sourceRoot":"","sources":["../src/date-field.ts"],"names":[],"mappings":"AACA,OAAO,EAA6G,KAAK,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9K,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAwB,KAAK,gBAAgB,EAA2C,MAAM,oBAAoB,CAAC;AAC1H,OAAO,EAAuE,KAAK,cAAc,EAAE,KAAK,iBAAiB,EAAE,KAAK,cAAc,EAAE,KAAK,SAAS,EAAE,MAAM,8BAA8B,CAAC;AACrM,OAAO,EAAE,KAAK,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEtE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAG3D,MAAM,WAAW,gBAAgB;IAAG,QAAQ,CAAC,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC;IAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,gBAAgB,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI,KAAK,IAAI,CAAC;IAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC,KAAK,EAAE,gBAAgB,EAAE,aAAa,EAAE,gBAAgB,KAAK,IAAI,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CAAE;AAErgB,MAAM,MAAM,2BAA2B,GAAG,WAAW,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC,CAAC;AACzF,MAAM,MAAM,gCAAgC,GAAG,WAAW,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,CAAC,CAAC;AACnG,MAAM,MAAM,sBAAsB,GAAG,WAAW,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC;AAC/E,MAAM,WAAW,yBAAyB;IAAG,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC;IAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,gBAAgB,CAAC;CAAE;AACzH,MAAM,WAAW,mBAAmB;IAAG,WAAW,IAAI,gBAAgB,CAAC,cAAc,CAAC,CAAC;IAAC,OAAO,IAAI,MAAM,CAAC;IAAC,QAAQ,IAAI,SAAS,GAAG,IAAI,CAAC;IAAC,QAAQ,IAAI,MAAM,CAAC;IAAC,oBAAoB,CAAC,MAAM,EAAE,yBAAyB,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC,CAAC;IAAC,WAAW,CAAC,KAAK,EAAE,cAAc,GAAG,OAAO,CAAC;IAAC,mBAAmB,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC;IAAC,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;CAAE;AACla,wBAAgB,eAAe,CAAC,OAAO,GAAE,gBAAqB,GAAG,gBAAgB,CAAC,mBAAmB,CAAC,CAAgD;AACtJ,wBAAgB,kBAAkB,CAAC,OAAO,GAAE,gBAAqB,GAAG,sBAAsB,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,CAAC,CAAuE"}
@@ -1,17 +1,17 @@
1
1
  import { unwrap } from '@sectile/core/result';
2
+ import { createTerminalTemporalController, createTerminalTemporalFacadeConnection } from './internal/result.js';
2
3
  import { sameTextEditingState } from '@sectile/core/text';
3
- import { applyDateFieldEvent, tryCreateDateFieldState } from '@sectile/core/date-field';
4
- import { createFacadeConnection } from '@sectile/core/adapter-runtime';
5
- import { createSemanticController } from '@sectile/core/adapter-runtime';
4
+ import { applyDateFieldEvent, tryCreateDateFieldState } from '@sectile/temporal/date-field';
5
+ import {} from '@sectile/core/adapter-runtime';
6
6
  import { toTerminalTextInput } from './internal/text-input.js';
7
7
  import { toTextEvent } from './text.js';
8
8
  export function createDateField(options = {}) { return unwrap(tryCreateDateField(options)); }
9
- export function tryCreateDateField(options = {}) { return createFacadeConnection(options, construct); }
9
+ export function tryCreateDateField(options = {}) { return createTerminalTemporalFacadeConnection(options, construct); }
10
10
  function construct(options) {
11
11
  const valueControlled = options.value !== undefined;
12
12
  const inputControlled = options.inputState !== undefined;
13
13
  const policies = Object.freeze({ ...options.policies, ...(options.required === undefined ? {} : { required: options.required }) });
14
- const runtime = createSemanticController({ initial: tryCreateDateFieldState(options.value !== undefined ? options.value : options.defaultValue ?? null, options.inputState !== undefined ? options.inputState : options.defaultInputState), reducer: (state, event) => applyDateFieldEvent(state, event, policies), reconcile: (previous, proposed) => tryCreateDateFieldState(valueControlled ? previous.value : proposed.value, inputControlled ? previous.inputState : proposed.inputState), notify: (previous, proposed) => { if (!sameTextEditingState(previous.inputState, proposed.inputState))
14
+ const runtime = createTerminalTemporalController({ initial: tryCreateDateFieldState(options.value !== undefined ? options.value : options.defaultValue ?? null, options.inputState !== undefined ? options.inputState : options.defaultInputState), reducer: (state, event) => applyDateFieldEvent(state, event, policies), reconcile: (previous, proposed) => tryCreateDateFieldState(valueControlled ? previous.value : proposed.value, inputControlled ? previous.inputState : proposed.inputState), notify: (previous, proposed) => { if (!sameTextEditingState(previous.inputState, proposed.inputState))
15
15
  options.onInputStateChange?.(proposed.inputState, previous.inputState); }, toEffect: (command) => command, interaction: options });
16
16
  return runtime.ok ? { ok: true, value: new TerminalDateField(options, runtime.value, valueControlled, inputControlled) } : runtime;
17
17
  }