@sectile/terminal 0.2.0 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/accordion.d.ts +34 -0
- package/dist/accordion.d.ts.map +1 -0
- package/dist/accordion.js +76 -0
- package/dist/accordion.js.map +1 -0
- package/dist/alert-dialog.d.ts +23 -0
- package/dist/alert-dialog.d.ts.map +1 -0
- package/dist/alert-dialog.js +12 -0
- package/dist/alert-dialog.js.map +1 -0
- package/dist/appearance.d.ts +50 -0
- package/dist/appearance.d.ts.map +1 -0
- package/dist/appearance.js +200 -0
- package/dist/appearance.js.map +1 -0
- package/dist/calendar.d.ts +80 -0
- package/dist/calendar.d.ts.map +1 -0
- package/dist/calendar.js +217 -0
- package/dist/calendar.js.map +1 -0
- package/dist/carousel.d.ts +49 -0
- package/dist/carousel.d.ts.map +1 -0
- package/dist/carousel.js +129 -0
- package/dist/carousel.js.map +1 -0
- package/dist/cascade-select.d.ts +43 -0
- package/dist/cascade-select.d.ts.map +1 -0
- package/dist/cascade-select.js +71 -0
- package/dist/cascade-select.js.map +1 -0
- package/dist/checkbox-group.d.ts +19 -0
- package/dist/checkbox-group.d.ts.map +1 -0
- package/dist/checkbox-group.js +14 -0
- package/dist/checkbox-group.js.map +1 -0
- package/dist/checkbox.d.ts +19 -0
- package/dist/checkbox.d.ts.map +1 -0
- package/dist/checkbox.js +12 -0
- package/dist/checkbox.js.map +1 -0
- package/dist/color-picker.d.ts +39 -0
- package/dist/color-picker.d.ts.map +1 -0
- package/dist/color-picker.js +62 -0
- package/dist/color-picker.js.map +1 -0
- package/dist/combobox.d.ts +107 -0
- package/dist/combobox.d.ts.map +1 -0
- package/dist/combobox.js +286 -0
- package/dist/combobox.js.map +1 -0
- package/dist/date-field.d.ts +39 -0
- package/dist/date-field.d.ts.map +1 -0
- package/dist/date-field.js +46 -0
- package/dist/date-field.js.map +1 -0
- package/dist/date-picker.d.ts +42 -0
- package/dist/date-picker.d.ts.map +1 -0
- package/dist/date-picker.js +40 -0
- package/dist/date-picker.js.map +1 -0
- package/dist/date-range-field.d.ts +43 -0
- package/dist/date-range-field.d.ts.map +1 -0
- package/dist/date-range-field.js +49 -0
- package/dist/date-range-field.js.map +1 -0
- package/dist/date-range-picker.d.ts +42 -0
- package/dist/date-range-picker.d.ts.map +1 -0
- package/dist/date-range-picker.js +29 -0
- package/dist/date-range-picker.js.map +1 -0
- package/dist/date-time-field.d.ts +39 -0
- package/dist/date-time-field.d.ts.map +1 -0
- package/dist/date-time-field.js +133 -0
- package/dist/date-time-field.js.map +1 -0
- package/dist/date-time-picker.d.ts +42 -0
- package/dist/date-time-picker.d.ts.map +1 -0
- package/dist/date-time-picker.js +128 -0
- package/dist/date-time-picker.js.map +1 -0
- package/dist/date-time-range-picker.d.ts +42 -0
- package/dist/date-time-range-picker.d.ts.map +1 -0
- package/dist/date-time-range-picker.js +137 -0
- package/dist/date-time-range-picker.js.map +1 -0
- package/dist/dialog.d.ts +21 -0
- package/dist/dialog.d.ts.map +1 -0
- package/dist/dialog.js +12 -0
- package/dist/dialog.js.map +1 -0
- package/dist/disclosure.d.ts +24 -0
- package/dist/disclosure.d.ts.map +1 -0
- package/dist/disclosure.js +56 -0
- package/dist/disclosure.js.map +1 -0
- package/dist/drawer.d.ts +23 -0
- package/dist/drawer.d.ts.map +1 -0
- package/dist/drawer.js +26 -0
- package/dist/drawer.js.map +1 -0
- package/dist/editable.d.ts +27 -0
- package/dist/editable.d.ts.map +1 -0
- package/dist/editable.js +70 -0
- package/dist/editable.js.map +1 -0
- package/dist/feed.d.ts +36 -0
- package/dist/feed.d.ts.map +1 -0
- package/dist/feed.js +90 -0
- package/dist/feed.js.map +1 -0
- package/dist/form.d.ts +65 -0
- package/dist/form.d.ts.map +1 -0
- package/dist/form.js +234 -0
- package/dist/form.js.map +1 -0
- package/dist/grid.d.ts +47 -0
- package/dist/grid.d.ts.map +1 -0
- package/dist/grid.js +68 -0
- package/dist/grid.js.map +1 -0
- package/dist/index.d.ts +112 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +63 -0
- package/dist/index.js.map +1 -0
- package/dist/internal/checked-control.d.ts +23 -0
- package/dist/internal/checked-control.d.ts.map +1 -0
- package/dist/internal/checked-control.js +22 -0
- package/dist/internal/checked-control.js.map +1 -0
- package/dist/internal/controller.d.ts +6 -0
- package/dist/internal/controller.d.ts.map +1 -0
- package/dist/internal/controller.js +35 -0
- package/dist/internal/controller.js.map +1 -0
- package/dist/internal/disabled-items.d.ts +6 -0
- package/dist/internal/disabled-items.d.ts.map +1 -0
- package/dist/internal/disabled-items.js +15 -0
- package/dist/internal/disabled-items.js.map +1 -0
- package/dist/internal/facade.d.ts +45 -0
- package/dist/internal/facade.d.ts.map +1 -0
- package/dist/internal/facade.js +58 -0
- package/dist/internal/facade.js.map +1 -0
- package/dist/internal/menu-control.d.ts +34 -0
- package/dist/internal/menu-control.d.ts.map +1 -0
- package/dist/internal/menu-control.js +171 -0
- package/dist/internal/menu-control.js.map +1 -0
- package/dist/internal/popup-control.d.ts +24 -0
- package/dist/internal/popup-control.d.ts.map +1 -0
- package/dist/internal/popup-control.js +23 -0
- package/dist/internal/popup-control.js.map +1 -0
- package/dist/internal/semantic-controller.d.ts +20 -0
- package/dist/internal/semantic-controller.d.ts.map +1 -0
- package/dist/internal/semantic-controller.js +42 -0
- package/dist/internal/semantic-controller.js.map +1 -0
- package/dist/internal/text-input.d.ts +5 -0
- package/dist/internal/text-input.d.ts.map +1 -0
- package/dist/internal/text-input.js +53 -0
- package/dist/internal/text-input.js.map +1 -0
- package/dist/keyboard.d.ts +10 -0
- package/dist/keyboard.d.ts.map +1 -0
- package/dist/keyboard.js +16 -0
- package/dist/keyboard.js.map +1 -0
- package/dist/layer-stack.d.ts +16 -0
- package/dist/layer-stack.d.ts.map +1 -0
- package/dist/layer-stack.js +49 -0
- package/dist/layer-stack.js.map +1 -0
- package/dist/layout.d.ts +2 -0
- package/dist/layout.d.ts.map +1 -0
- package/dist/layout.js +24 -0
- package/dist/layout.js.map +1 -0
- package/dist/listbox.d.ts +98 -0
- package/dist/listbox.d.ts.map +1 -0
- package/dist/listbox.js +330 -0
- package/dist/listbox.js.map +1 -0
- package/dist/menu-button.d.ts +8 -0
- package/dist/menu-button.d.ts.map +1 -0
- package/dist/menu-button.js +11 -0
- package/dist/menu-button.js.map +1 -0
- package/dist/menu.d.ts +8 -0
- package/dist/menu.d.ts.map +1 -0
- package/dist/menu.js +11 -0
- package/dist/menu.js.map +1 -0
- package/dist/menubar.d.ts +8 -0
- package/dist/menubar.d.ts.map +1 -0
- package/dist/menubar.js +11 -0
- package/dist/menubar.js.map +1 -0
- package/dist/month-picker.d.ts +3 -0
- package/dist/month-picker.d.ts.map +1 -0
- package/dist/month-picker.js +2 -0
- package/dist/month-picker.js.map +1 -0
- package/dist/month-range-picker.d.ts +3 -0
- package/dist/month-range-picker.d.ts.map +1 -0
- package/dist/month-range-picker.js +2 -0
- package/dist/month-range-picker.js.map +1 -0
- package/dist/multi-thumb-slider.d.ts +34 -0
- package/dist/multi-thumb-slider.d.ts.map +1 -0
- package/dist/multi-thumb-slider.js +67 -0
- package/dist/multi-thumb-slider.js.map +1 -0
- package/dist/navigation-menu.d.ts +8 -0
- package/dist/navigation-menu.d.ts.map +1 -0
- package/dist/navigation-menu.js +10 -0
- package/dist/navigation-menu.js.map +1 -0
- package/dist/node.d.ts +43 -0
- package/dist/node.d.ts.map +1 -0
- package/dist/node.js +196 -0
- package/dist/node.js.map +1 -0
- package/dist/number-field.d.ts +47 -0
- package/dist/number-field.d.ts.map +1 -0
- package/dist/number-field.js +157 -0
- package/dist/number-field.js.map +1 -0
- package/dist/pagination.d.ts +38 -0
- package/dist/pagination.d.ts.map +1 -0
- package/dist/pagination.js +103 -0
- package/dist/pagination.js.map +1 -0
- package/dist/pin-input.d.ts +28 -0
- package/dist/pin-input.d.ts.map +1 -0
- package/dist/pin-input.js +30 -0
- package/dist/pin-input.js.map +1 -0
- package/dist/popover.d.ts +21 -0
- package/dist/popover.d.ts.map +1 -0
- package/dist/popover.js +8 -0
- package/dist/popover.js.map +1 -0
- package/dist/quantity-field.d.ts +49 -0
- package/dist/quantity-field.d.ts.map +1 -0
- package/dist/quantity-field.js +168 -0
- package/dist/quantity-field.js.map +1 -0
- package/dist/radio-group.d.ts +40 -0
- package/dist/radio-group.d.ts.map +1 -0
- package/dist/radio-group.js +126 -0
- package/dist/radio-group.js.map +1 -0
- package/dist/range-calendar.d.ts +3 -0
- package/dist/range-calendar.d.ts.map +1 -0
- package/dist/range-calendar.js +2 -0
- package/dist/range-calendar.js.map +1 -0
- package/dist/rating.d.ts +23 -0
- package/dist/rating.d.ts.map +1 -0
- package/dist/rating.js +38 -0
- package/dist/rating.js.map +1 -0
- package/dist/reorder.d.ts +42 -0
- package/dist/reorder.d.ts.map +1 -0
- package/dist/reorder.js +166 -0
- package/dist/reorder.js.map +1 -0
- package/dist/screen.d.ts +108 -0
- package/dist/screen.d.ts.map +1 -0
- package/dist/screen.js +364 -0
- package/dist/screen.js.map +1 -0
- package/dist/select.d.ts +45 -0
- package/dist/select.d.ts.map +1 -0
- package/dist/select.js +50 -0
- package/dist/select.js.map +1 -0
- package/dist/slider.d.ts +62 -0
- package/dist/slider.d.ts.map +1 -0
- package/dist/slider.js +156 -0
- package/dist/slider.js.map +1 -0
- package/dist/spin-button.d.ts +38 -0
- package/dist/spin-button.d.ts.map +1 -0
- package/dist/spin-button.js +78 -0
- package/dist/spin-button.js.map +1 -0
- package/dist/stepper.d.ts +19 -0
- package/dist/stepper.d.ts.map +1 -0
- package/dist/stepper.js +14 -0
- package/dist/stepper.js.map +1 -0
- package/dist/switch.d.ts +17 -0
- package/dist/switch.d.ts.map +1 -0
- package/dist/switch.js +12 -0
- package/dist/switch.js.map +1 -0
- package/dist/tabs.d.ts +46 -0
- package/dist/tabs.d.ts.map +1 -0
- package/dist/tabs.js +128 -0
- package/dist/tabs.js.map +1 -0
- package/dist/tags-input.d.ts +32 -0
- package/dist/tags-input.d.ts.map +1 -0
- package/dist/tags-input.js +68 -0
- package/dist/tags-input.js.map +1 -0
- package/dist/text.d.ts +63 -0
- package/dist/text.d.ts.map +1 -0
- package/dist/text.js +143 -0
- package/dist/text.js.map +1 -0
- package/dist/time-field.d.ts +39 -0
- package/dist/time-field.d.ts.map +1 -0
- package/dist/time-field.js +40 -0
- package/dist/time-field.js.map +1 -0
- package/dist/time-range-field.d.ts +42 -0
- package/dist/time-range-field.d.ts.map +1 -0
- package/dist/time-range-field.js +43 -0
- package/dist/time-range-field.js.map +1 -0
- package/dist/timer.d.ts +30 -0
- package/dist/timer.d.ts.map +1 -0
- package/dist/timer.js +31 -0
- package/dist/timer.js.map +1 -0
- package/dist/toast.d.ts +29 -0
- package/dist/toast.d.ts.map +1 -0
- package/dist/toast.js +38 -0
- package/dist/toast.js.map +1 -0
- package/dist/toggle-button.d.ts +17 -0
- package/dist/toggle-button.d.ts.map +1 -0
- package/dist/toggle-button.js +12 -0
- package/dist/toggle-button.js.map +1 -0
- package/dist/toggle-group.d.ts +22 -0
- package/dist/toggle-group.d.ts.map +1 -0
- package/dist/toggle-group.js +33 -0
- package/dist/toggle-group.js.map +1 -0
- package/dist/toolbar.d.ts +37 -0
- package/dist/toolbar.d.ts.map +1 -0
- package/dist/toolbar.js +108 -0
- package/dist/toolbar.js.map +1 -0
- package/dist/tooltip.d.ts +17 -0
- package/dist/tooltip.d.ts.map +1 -0
- package/dist/tooltip.js +12 -0
- package/dist/tooltip.js.map +1 -0
- package/dist/tree-grid.d.ts +102 -0
- package/dist/tree-grid.d.ts.map +1 -0
- package/dist/tree-grid.js +308 -0
- package/dist/tree-grid.js.map +1 -0
- package/dist/tree-view.d.ts +83 -0
- package/dist/tree-view.d.ts.map +1 -0
- package/dist/tree-view.js +216 -0
- package/dist/tree-view.js.map +1 -0
- package/dist/window-splitter.d.ts +19 -0
- package/dist/window-splitter.d.ts.map +1 -0
- package/dist/window-splitter.js +48 -0
- package/dist/window-splitter.js.map +1 -0
- package/dist/year-picker.d.ts +3 -0
- package/dist/year-picker.d.ts.map +1 -0
- package/dist/year-picker.js +2 -0
- package/dist/year-picker.js.map +1 -0
- package/dist/year-range-picker.d.ts +3 -0
- package/dist/year-range-picker.d.ts.map +1 -0
- package/dist/year-range-picker.js +2 -0
- package/dist/year-range-picker.js.map +1 -0
- package/package.json +8 -3
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
import { createFacadeConnection } from './internal/facade.js';
|
|
2
|
+
import { unwrap } from '@sectile/core/result';
|
|
3
|
+
import { tryCreateSequence } from '@sectile/core/sequence';
|
|
4
|
+
import { applyRadioGroupEvent, tryCreateRadioGroupState, } from '@sectile/core/radio-group';
|
|
5
|
+
import { createSemanticController } from './internal/semantic-controller.js';
|
|
6
|
+
import { createDisabledItems } from './internal/disabled-items.js';
|
|
7
|
+
export function createRadioGroup(options) {
|
|
8
|
+
return unwrap(tryCreateRadioGroup(options));
|
|
9
|
+
}
|
|
10
|
+
export function tryCreateRadioGroup(options) {
|
|
11
|
+
return createFacadeConnection(options, (options) => tryCreateRadioGroupConnection(options));
|
|
12
|
+
}
|
|
13
|
+
function tryCreateRadioGroupConnection(options) {
|
|
14
|
+
const domain = tryCreateSequence(options.items);
|
|
15
|
+
if (!domain.ok)
|
|
16
|
+
return domain;
|
|
17
|
+
const disabled = createDisabledItems(domain.value, options.disabledItems);
|
|
18
|
+
if (!disabled.ok)
|
|
19
|
+
return disabled;
|
|
20
|
+
const suppliedEligibility = options.policies?.eligible;
|
|
21
|
+
const policies = Object.freeze({
|
|
22
|
+
...options.policies,
|
|
23
|
+
eligible: (id) => !disabled.value.has(id) && (suppliedEligibility?.(id) ?? true),
|
|
24
|
+
});
|
|
25
|
+
const valueControlled = options.value !== undefined;
|
|
26
|
+
const highlightControlled = options.highlightedValue !== undefined;
|
|
27
|
+
const runtime = createSemanticController({
|
|
28
|
+
interaction: options,
|
|
29
|
+
interactionIntent: radioGroupIntent,
|
|
30
|
+
initial: tryCreateRadioGroupState(domain.value, {
|
|
31
|
+
selected: selected(options.value ?? options.defaultValue ?? null),
|
|
32
|
+
current: options.highlightedValue !== undefined
|
|
33
|
+
? options.highlightedValue
|
|
34
|
+
: options.defaultHighlightedValue ?? options.value ?? options.defaultValue ?? null,
|
|
35
|
+
}),
|
|
36
|
+
reducer: (state, event) => applyRadioGroupEvent(domain.value, state, event, policies),
|
|
37
|
+
reconcile: (previous, proposed) => tryCreateRadioGroupState(domain.value, {
|
|
38
|
+
selected: valueControlled || options.readOnly === true
|
|
39
|
+
? previous.selection.selected
|
|
40
|
+
: proposed.selection.selected,
|
|
41
|
+
current: highlightControlled ? previous.cursor.current : proposed.cursor.current,
|
|
42
|
+
}),
|
|
43
|
+
notify: (previous, proposed) => {
|
|
44
|
+
if (previous.selection.selected[0] !== proposed.selection.selected[0]) {
|
|
45
|
+
options.onValueChange?.(proposed.selection.selected[0] ?? null);
|
|
46
|
+
}
|
|
47
|
+
if (previous.cursor.current !== proposed.cursor.current) {
|
|
48
|
+
options.onHighlightedValueChange?.(proposed.cursor.current);
|
|
49
|
+
}
|
|
50
|
+
},
|
|
51
|
+
toEffect: (command) => Object.freeze({ type: 'move-radio-highlight', id: command.id }),
|
|
52
|
+
});
|
|
53
|
+
if (!runtime.ok)
|
|
54
|
+
return runtime;
|
|
55
|
+
return { ok: true, value: new TerminalRadioGroupConnection(options, domain.value, runtime.value, valueControlled, highlightControlled) };
|
|
56
|
+
}
|
|
57
|
+
export function toRadioGroupEvent(input, orientation = 'vertical') {
|
|
58
|
+
if (input.key === 'home')
|
|
59
|
+
return 'first';
|
|
60
|
+
if (input.key === 'end')
|
|
61
|
+
return 'last';
|
|
62
|
+
if (input.key === 'enter' || input.key === 'space')
|
|
63
|
+
return 'check';
|
|
64
|
+
if (orientation === 'horizontal' && input.key === 'right')
|
|
65
|
+
return 'next';
|
|
66
|
+
if (orientation === 'horizontal' && input.key === 'left')
|
|
67
|
+
return 'previous';
|
|
68
|
+
if (orientation === 'vertical' && input.key === 'down')
|
|
69
|
+
return 'next';
|
|
70
|
+
if (orientation === 'vertical' && input.key === 'up')
|
|
71
|
+
return 'previous';
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
class TerminalRadioGroupConnection {
|
|
75
|
+
#options;
|
|
76
|
+
#domain;
|
|
77
|
+
#runtime;
|
|
78
|
+
#valueControlled;
|
|
79
|
+
#highlightControlled;
|
|
80
|
+
constructor(options, domain, runtime, valueControlled, highlightControlled) {
|
|
81
|
+
this.#options = options;
|
|
82
|
+
this.#domain = domain;
|
|
83
|
+
this.#runtime = runtime;
|
|
84
|
+
this.#valueControlled = valueControlled;
|
|
85
|
+
this.#highlightControlled = highlightControlled;
|
|
86
|
+
}
|
|
87
|
+
getSnapshot() { return this.#runtime.getSnapshot(); }
|
|
88
|
+
syncControlledValues(values) {
|
|
89
|
+
if (this.#valueControlled !== (values.value !== undefined)
|
|
90
|
+
|| this.#highlightControlled !== (values.highlightedValue !== undefined)) {
|
|
91
|
+
return { ok: false, error: {
|
|
92
|
+
class: 'construction', code: 'controlled-shape-mismatch',
|
|
93
|
+
message: 'Controlled radio group values must preserve their construction-time shape.',
|
|
94
|
+
} };
|
|
95
|
+
}
|
|
96
|
+
const state = this.#runtime.getSnapshot().state;
|
|
97
|
+
const result = this.#runtime.replace(tryCreateRadioGroupState(this.#domain, {
|
|
98
|
+
selected: this.#valueControlled ? selected(values.value ?? null) : state.selection.selected,
|
|
99
|
+
current: this.#highlightControlled ? (values.highlightedValue ?? null) : state.cursor.current,
|
|
100
|
+
}));
|
|
101
|
+
if (result.ok)
|
|
102
|
+
this.#options.onUpdate?.();
|
|
103
|
+
return result;
|
|
104
|
+
}
|
|
105
|
+
handleEvent(event) {
|
|
106
|
+
const result = this.#runtime.handle(event);
|
|
107
|
+
if (result.ok)
|
|
108
|
+
this.#options.onUpdate?.();
|
|
109
|
+
return result.ok;
|
|
110
|
+
}
|
|
111
|
+
handleKeyboardInput(input) {
|
|
112
|
+
const event = toRadioGroupEvent(input, this.#options.orientation);
|
|
113
|
+
if (event === null)
|
|
114
|
+
return false;
|
|
115
|
+
return this.handleEvent(event);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
function radioGroupIntent(event) {
|
|
119
|
+
return event === 'check' || (typeof event === 'object' && event.type === 'check')
|
|
120
|
+
? 'mutate'
|
|
121
|
+
: 'navigate';
|
|
122
|
+
}
|
|
123
|
+
function selected(value) {
|
|
124
|
+
return value === null ? [] : [value];
|
|
125
|
+
}
|
|
126
|
+
//# sourceMappingURL=radio-group.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"radio-group.js","sourceRoot":"","sources":["../src/radio-group.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { createDateRangePicker as createRangeCalendar, tryCreateDateRangePicker as tryCreateRangeCalendar, } from './date-range-picker.js';
|
|
2
|
+
export type { DateRangePickerConnection as RangeCalendarConnection, DateRangePickerControlledValues as RangeCalendarControlledValues, DateRangePickerOptions as RangeCalendarOptions, } from './date-range-picker.js';
|
|
3
|
+
//# 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,qBAAqB,IAAI,mBAAmB,EAC5C,wBAAwB,IAAI,sBAAsB,GACnD,MAAM,wBAAwB,CAAC;AAChC,YAAY,EACV,yBAAyB,IAAI,uBAAuB,EACpD,+BAA+B,IAAI,6BAA6B,EAChE,sBAAsB,IAAI,oBAAoB,GAC/C,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"range-calendar.js","sourceRoot":"","sources":["../src/range-calendar.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,qBAAqB,IAAI,mBAAmB,EAC5C,wBAAwB,IAAI,sBAAsB,GACnD,MAAM,wBAAwB,CAAC"}
|
package/dist/rating.d.ts
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type FacadeConnection } from './internal/facade.js';
|
|
2
|
+
import type { Result, StableID } from '@sectile/core';
|
|
3
|
+
import type { RatingEvent, RatingState } from '@sectile/core/rating';
|
|
4
|
+
import type { RevisionSnapshot } from '@sectile/core/revision';
|
|
5
|
+
import { type RadioGroupOptions } from './radio-group.js';
|
|
6
|
+
import type { TerminalKeyboardInput } from './keyboard.js';
|
|
7
|
+
export type RatingOptions<ID extends StableID = StableID> = Omit<RadioGroupOptions<ID>, 'orientation' | 'onValueChange'> & {
|
|
8
|
+
readonly clearable?: boolean;
|
|
9
|
+
readonly onValueChange?: (value: ID | null) => void;
|
|
10
|
+
};
|
|
11
|
+
export type RatingValueChangeHandler<ID extends StableID = StableID> = NonNullable<RatingOptions<ID>['onValueChange']>;
|
|
12
|
+
export interface RatingConnection<ID extends StableID = StableID> {
|
|
13
|
+
getSnapshot(): RevisionSnapshot<RatingState<ID>>;
|
|
14
|
+
syncControlledValues(values: {
|
|
15
|
+
readonly value?: ID | null;
|
|
16
|
+
readonly highlightedValue?: ID | null;
|
|
17
|
+
}): Result<RevisionSnapshot<RatingState<ID>>>;
|
|
18
|
+
handleEvent(event: RatingEvent<ID>): boolean;
|
|
19
|
+
handleKeyboardInput(input: TerminalKeyboardInput): boolean;
|
|
20
|
+
}
|
|
21
|
+
export declare function createRating<ID extends StableID>(options: RatingOptions<ID>): FacadeConnection<RatingConnection<ID>>;
|
|
22
|
+
export declare function tryCreateRating<ID extends StableID>(options: RatingOptions<ID>): Result<FacadeConnection<RatingConnection<ID>>>;
|
|
23
|
+
//# sourceMappingURL=rating.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rating.d.ts","sourceRoot":"","sources":["../src/rating.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAErF,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACrE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAkD,KAAK,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1G,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAC3D,MAAM,MAAM,aAAa,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ,IAAI,IAAI,CAAC,iBAAiB,CAAC,EAAE,CAAC,EAAE,aAAa,GAAG,eAAe,CAAC,GAAG;IAAE,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,IAAI,CAAA;CAAE,CAAC;AAEjN,MAAM,MAAM,wBAAwB,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ,IAAI,WAAW,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC;AACvH,MAAM,WAAW,gBAAgB,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ;IAAI,WAAW,IAAI,gBAAgB,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;IAAC,oBAAoB,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC;QAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,EAAE,GAAG,IAAI,CAAA;KAAE,GAAG,MAAM,CAAC,gBAAgB,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAAC,WAAW,CAAC,KAAK,EAAE,WAAW,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC;IAAC,mBAAmB,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAA;CAAE;AAChX,wBAAgB,YAAY,CAAC,EAAE,SAAS,QAAQ,EAAE,OAAO,EAAE,aAAa,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAEpH;AAED,wBAAgB,eAAe,CAAC,EAAE,SAAS,QAAQ,EAAE,OAAO,EAAE,aAAa,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,CAE/H"}
|
package/dist/rating.js
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { createFacadeConnection } from './internal/facade.js';
|
|
2
|
+
import { unwrap } from '@sectile/core/result';
|
|
3
|
+
import { tryCreateRadioGroup } from './radio-group.js';
|
|
4
|
+
export function createRating(options) {
|
|
5
|
+
return unwrap(tryCreateRating(options));
|
|
6
|
+
}
|
|
7
|
+
export function tryCreateRating(options) {
|
|
8
|
+
return createFacadeConnection(options, (options) => tryCreateRatingConnection(options));
|
|
9
|
+
}
|
|
10
|
+
function tryCreateRatingConnection(options) {
|
|
11
|
+
const uncontrolled = options.value === undefined;
|
|
12
|
+
let value = options.value ?? options.defaultValue ?? null;
|
|
13
|
+
let highlightedValue = options.highlightedValue ?? options.defaultHighlightedValue ?? value;
|
|
14
|
+
let base;
|
|
15
|
+
const result = tryCreateRadioGroup({ ...options, orientation: 'horizontal', value, highlightedValue, onValueChange: (next) => { options.onValueChange?.(next); if (uncontrolled) {
|
|
16
|
+
value = next;
|
|
17
|
+
queueMicrotask(sync);
|
|
18
|
+
} }, onHighlightedValueChange: (next) => { highlightedValue = next; queueMicrotask(sync); } });
|
|
19
|
+
if (!result.ok)
|
|
20
|
+
return result;
|
|
21
|
+
base = result.value;
|
|
22
|
+
function sync() { base.syncControlledValues({ value, highlightedValue }); }
|
|
23
|
+
return { ok: true, value: Object.freeze({ getSnapshot: () => base.getSnapshot(), syncControlledValues: (values) => { if (values.value !== undefined)
|
|
24
|
+
value = values.value; if (values.highlightedValue !== undefined)
|
|
25
|
+
highlightedValue = values.highlightedValue; return base.syncControlledValues({ value, highlightedValue }); }, handleEvent: (event) => { if (event === 'clear') {
|
|
26
|
+
if (options.clearable !== true)
|
|
27
|
+
return false;
|
|
28
|
+
options.onValueChange?.(null);
|
|
29
|
+
if (uncontrolled) {
|
|
30
|
+
value = null;
|
|
31
|
+
return base.syncControlledValues({ value, highlightedValue }).ok;
|
|
32
|
+
}
|
|
33
|
+
return true;
|
|
34
|
+
} return base.handleEvent(mapEvent(event)); }, handleKeyboardInput: (input) => base.handleKeyboardInput(input) }) };
|
|
35
|
+
}
|
|
36
|
+
function mapEvent(event) { if (typeof event === 'object')
|
|
37
|
+
return event.type === 'set' ? { type: 'check', id: event.id } : event; return event === 'increase' ? 'next' : event === 'decrease' ? 'previous' : event === 'minimum' ? 'first' : event === 'maximum' ? 'last' : 'check'; }
|
|
38
|
+
//# sourceMappingURL=rating.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rating.js","sourceRoot":"","sources":["../src/rating.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { Result, StableID } from '@sectile/core';
|
|
2
|
+
import { type SequenceReorderEvent, type SequenceReorderState, type TreeReorderEvent, type TreeReorderState } from '@sectile/core/reorder';
|
|
3
|
+
import type { RevisionSnapshot } from '@sectile/core/revision';
|
|
4
|
+
import type { TreeNodeInput } from '@sectile/core/tree';
|
|
5
|
+
import type { TerminalKeyboardInput } from './keyboard.js';
|
|
6
|
+
export interface TerminalSequenceReorderOptions<ID extends StableID = StableID> {
|
|
7
|
+
readonly ids: readonly ID[];
|
|
8
|
+
readonly currentID?: ID | null;
|
|
9
|
+
readonly disabled?: boolean;
|
|
10
|
+
readonly onOrderChange?: (ids: readonly ID[]) => void;
|
|
11
|
+
readonly onCurrentChange?: (id: ID | null) => void;
|
|
12
|
+
readonly onUpdate?: () => void;
|
|
13
|
+
}
|
|
14
|
+
export interface TerminalSequenceReorderConnection<ID extends StableID = StableID> {
|
|
15
|
+
readonly currentID: ID | null;
|
|
16
|
+
getSnapshot(): RevisionSnapshot<SequenceReorderState<ID>>;
|
|
17
|
+
focus(id: ID): boolean;
|
|
18
|
+
handleEvent(event: SequenceReorderEvent<ID>): boolean;
|
|
19
|
+
handleKeyboardInput(input: TerminalKeyboardInput): boolean;
|
|
20
|
+
syncOrder(ids: readonly ID[]): Result<RevisionSnapshot<SequenceReorderState<ID>>>;
|
|
21
|
+
}
|
|
22
|
+
export interface TerminalTreeReorderOptions<ID extends StableID = StableID> {
|
|
23
|
+
readonly nodes: readonly TreeNodeInput<ID>[];
|
|
24
|
+
readonly currentID?: ID | null;
|
|
25
|
+
readonly disabled?: boolean;
|
|
26
|
+
readonly onOrderChange?: (nodes: readonly TreeNodeInput<ID>[]) => void;
|
|
27
|
+
readonly onCurrentChange?: (id: ID | null) => void;
|
|
28
|
+
readonly onUpdate?: () => void;
|
|
29
|
+
}
|
|
30
|
+
export interface TerminalTreeReorderConnection<ID extends StableID = StableID> {
|
|
31
|
+
readonly currentID: ID | null;
|
|
32
|
+
getSnapshot(): RevisionSnapshot<TreeReorderState<ID>>;
|
|
33
|
+
focus(id: ID): boolean;
|
|
34
|
+
handleEvent(event: TreeReorderEvent<ID>): boolean;
|
|
35
|
+
handleKeyboardInput(input: TerminalKeyboardInput): boolean;
|
|
36
|
+
syncOrder(nodes: readonly TreeNodeInput<ID>[]): Result<RevisionSnapshot<TreeReorderState<ID>>>;
|
|
37
|
+
}
|
|
38
|
+
export declare function createReorder<ID extends StableID>(options: TerminalSequenceReorderOptions<ID>): TerminalSequenceReorderConnection<ID>;
|
|
39
|
+
export declare function createReorder<ID extends StableID>(options: TerminalTreeReorderOptions<ID>): TerminalTreeReorderConnection<ID>;
|
|
40
|
+
export declare function tryCreateReorder<ID extends StableID>(options: TerminalSequenceReorderOptions<ID>): Result<TerminalSequenceReorderConnection<ID>>;
|
|
41
|
+
export declare function tryCreateReorder<ID extends StableID>(options: TerminalTreeReorderOptions<ID>): Result<TerminalTreeReorderConnection<ID>>;
|
|
42
|
+
//# sourceMappingURL=reorder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reorder.d.ts","sourceRoot":"","sources":["../src/reorder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAKL,KAAK,oBAAoB,EAEzB,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EAErB,KAAK,gBAAgB,EACtB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAG3D,MAAM,WAAW,8BAA8B,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ;IAC5E,QAAQ,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,KAAK,IAAI,CAAC;IACtD,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,KAAK,IAAI,CAAC;IACnD,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,iCAAiC,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ;IAC/E,QAAQ,CAAC,SAAS,EAAE,EAAE,GAAG,IAAI,CAAC;IAC9B,WAAW,IAAI,gBAAgB,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,CAAC;IAC1D,KAAK,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC;IACvB,WAAW,CAAC,KAAK,EAAE,oBAAoB,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC;IACtD,mBAAmB,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC;IAC3D,SAAS,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,GAAG,MAAM,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;CACnF;AAED,MAAM,WAAW,0BAA0B,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ;IACxE,QAAQ,CAAC,KAAK,EAAE,SAAS,aAAa,CAAC,EAAE,CAAC,EAAE,CAAC;IAC7C,QAAQ,CAAC,SAAS,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC;IAC/B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,aAAa,CAAC,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC;IACvE,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,GAAG,IAAI,KAAK,IAAI,CAAC;IACnD,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,6BAA6B,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ;IAC3E,QAAQ,CAAC,SAAS,EAAE,EAAE,GAAG,IAAI,CAAC;IAC9B,WAAW,IAAI,gBAAgB,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC;IACtD,KAAK,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC;IACvB,WAAW,CAAC,KAAK,EAAE,gBAAgB,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC;IAClD,mBAAmB,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC;IAC3D,SAAS,CAAC,KAAK,EAAE,SAAS,aAAa,CAAC,EAAE,CAAC,EAAE,GAAG,MAAM,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;CAChG;AAED,wBAAgB,aAAa,CAAC,EAAE,SAAS,QAAQ,EAC/C,OAAO,EAAE,8BAA8B,CAAC,EAAE,CAAC,GAC1C,iCAAiC,CAAC,EAAE,CAAC,CAAC;AACzC,wBAAgB,aAAa,CAAC,EAAE,SAAS,QAAQ,EAC/C,OAAO,EAAE,0BAA0B,CAAC,EAAE,CAAC,GACtC,6BAA6B,CAAC,EAAE,CAAC,CAAC;AAOrC,wBAAgB,gBAAgB,CAAC,EAAE,SAAS,QAAQ,EAClD,OAAO,EAAE,8BAA8B,CAAC,EAAE,CAAC,GAC1C,MAAM,CAAC,iCAAiC,CAAC,EAAE,CAAC,CAAC,CAAC;AACjD,wBAAgB,gBAAgB,CAAC,EAAE,SAAS,QAAQ,EAClD,OAAO,EAAE,0BAA0B,CAAC,EAAE,CAAC,GACtC,MAAM,CAAC,6BAA6B,CAAC,EAAE,CAAC,CAAC,CAAC"}
|
package/dist/reorder.js
ADDED
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
import { applySequenceReorderEvent, applyTreeReorderEvent, tryCreateSequenceReorderState, tryCreateTreeReorderState, } from '@sectile/core/reorder';
|
|
2
|
+
import { unwrap } from '@sectile/core/result';
|
|
3
|
+
import { createSemanticController } from './internal/semantic-controller.js';
|
|
4
|
+
export function createReorder(options) {
|
|
5
|
+
return 'nodes' in options ? createTreeReorder(options) : createSequenceReorder(options);
|
|
6
|
+
}
|
|
7
|
+
export function tryCreateReorder(options) {
|
|
8
|
+
return 'nodes' in options ? tryCreateTreeReorder(options) : tryCreateSequenceReorder(options);
|
|
9
|
+
}
|
|
10
|
+
function createSequenceReorder(options) {
|
|
11
|
+
return unwrap(tryCreateSequenceReorder(options));
|
|
12
|
+
}
|
|
13
|
+
function tryCreateSequenceReorder(options) {
|
|
14
|
+
const runtime = createSemanticController({
|
|
15
|
+
initial: tryCreateSequenceReorderState(options.ids),
|
|
16
|
+
reducer: applySequenceReorderEvent,
|
|
17
|
+
notify: (previous, proposed) => {
|
|
18
|
+
if (!sameIDs(previous.ids, proposed.ids))
|
|
19
|
+
options.onOrderChange?.(proposed.ids);
|
|
20
|
+
},
|
|
21
|
+
toEffect: (command) => command,
|
|
22
|
+
interaction: options,
|
|
23
|
+
});
|
|
24
|
+
return runtime.ok
|
|
25
|
+
? { ok: true, value: new TerminalSequenceReorder(options, runtime.value) }
|
|
26
|
+
: runtime;
|
|
27
|
+
}
|
|
28
|
+
function createTreeReorder(options) {
|
|
29
|
+
return unwrap(tryCreateTreeReorder(options));
|
|
30
|
+
}
|
|
31
|
+
function tryCreateTreeReorder(options) {
|
|
32
|
+
const runtime = createSemanticController({
|
|
33
|
+
initial: tryCreateTreeReorderState(options.nodes),
|
|
34
|
+
reducer: applyTreeReorderEvent,
|
|
35
|
+
notify: (previous, proposed) => {
|
|
36
|
+
if (!sameNodes(previous.nodes, proposed.nodes))
|
|
37
|
+
options.onOrderChange?.(proposed.nodes);
|
|
38
|
+
},
|
|
39
|
+
toEffect: (command) => command,
|
|
40
|
+
interaction: options,
|
|
41
|
+
});
|
|
42
|
+
return runtime.ok
|
|
43
|
+
? { ok: true, value: new TerminalTreeReorder(options, runtime.value) }
|
|
44
|
+
: runtime;
|
|
45
|
+
}
|
|
46
|
+
class TerminalSequenceReorder {
|
|
47
|
+
#options;
|
|
48
|
+
#runtime;
|
|
49
|
+
#currentID;
|
|
50
|
+
constructor(options, runtime) {
|
|
51
|
+
this.#options = options;
|
|
52
|
+
this.#runtime = runtime;
|
|
53
|
+
this.#currentID = options.currentID ?? options.ids[0] ?? null;
|
|
54
|
+
}
|
|
55
|
+
get currentID() { return this.#currentID; }
|
|
56
|
+
getSnapshot() { return this.#runtime.getSnapshot(); }
|
|
57
|
+
focus(id) {
|
|
58
|
+
if (!this.getSnapshot().state.ids.includes(id))
|
|
59
|
+
return false;
|
|
60
|
+
this.#currentID = id;
|
|
61
|
+
this.#options.onCurrentChange?.(id);
|
|
62
|
+
this.#options.onUpdate?.();
|
|
63
|
+
return true;
|
|
64
|
+
}
|
|
65
|
+
handleEvent(event) {
|
|
66
|
+
const result = this.#runtime.handle(event);
|
|
67
|
+
if (result.ok)
|
|
68
|
+
this.#options.onUpdate?.();
|
|
69
|
+
return result.ok;
|
|
70
|
+
}
|
|
71
|
+
handleKeyboardInput(input) {
|
|
72
|
+
const id = this.#currentID;
|
|
73
|
+
if (id === null)
|
|
74
|
+
return false;
|
|
75
|
+
const ids = this.getSnapshot().state.ids;
|
|
76
|
+
const index = ids.indexOf(id);
|
|
77
|
+
if (input.key === 'move-start')
|
|
78
|
+
return this.handleEvent({ type: 'move-to-start', id });
|
|
79
|
+
if (input.key === 'move-end')
|
|
80
|
+
return this.handleEvent({ type: 'move-to-end', id });
|
|
81
|
+
if (input.key === 'move-up' && index > 0)
|
|
82
|
+
return this.handleEvent({ type: 'move-before', id, targetID: ids[index - 1] });
|
|
83
|
+
if (input.key === 'move-down' && index < ids.length - 1)
|
|
84
|
+
return this.handleEvent({ type: 'move-after', id, targetID: ids[index + 1] });
|
|
85
|
+
return false;
|
|
86
|
+
}
|
|
87
|
+
syncOrder(ids) {
|
|
88
|
+
const result = this.#runtime.replace(tryCreateSequenceReorderState(ids));
|
|
89
|
+
if (result.ok && this.#currentID !== null && !ids.includes(this.#currentID)) {
|
|
90
|
+
this.#currentID = ids[0] ?? null;
|
|
91
|
+
this.#options.onCurrentChange?.(this.#currentID);
|
|
92
|
+
}
|
|
93
|
+
return result;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
class TerminalTreeReorder {
|
|
97
|
+
#options;
|
|
98
|
+
#runtime;
|
|
99
|
+
#currentID;
|
|
100
|
+
constructor(options, runtime) {
|
|
101
|
+
this.#options = options;
|
|
102
|
+
this.#runtime = runtime;
|
|
103
|
+
this.#currentID = options.currentID ?? options.nodes[0]?.id ?? null;
|
|
104
|
+
}
|
|
105
|
+
get currentID() { return this.#currentID; }
|
|
106
|
+
getSnapshot() { return this.#runtime.getSnapshot(); }
|
|
107
|
+
focus(id) {
|
|
108
|
+
if (!this.getSnapshot().state.nodes.some((node) => node.id === id))
|
|
109
|
+
return false;
|
|
110
|
+
this.#currentID = id;
|
|
111
|
+
this.#options.onCurrentChange?.(id);
|
|
112
|
+
this.#options.onUpdate?.();
|
|
113
|
+
return true;
|
|
114
|
+
}
|
|
115
|
+
handleEvent(event) {
|
|
116
|
+
const result = this.#runtime.handle(event);
|
|
117
|
+
if (result.ok)
|
|
118
|
+
this.#options.onUpdate?.();
|
|
119
|
+
return result.ok;
|
|
120
|
+
}
|
|
121
|
+
handleKeyboardInput(input) {
|
|
122
|
+
const id = this.#currentID;
|
|
123
|
+
if (id === null)
|
|
124
|
+
return false;
|
|
125
|
+
const nodes = this.getSnapshot().state.nodes;
|
|
126
|
+
const node = nodes.find((candidate) => candidate.id === id);
|
|
127
|
+
if (node === undefined)
|
|
128
|
+
return false;
|
|
129
|
+
const siblings = nodes.filter((candidate) => candidate.parentID === node.parentID);
|
|
130
|
+
const index = siblings.findIndex((candidate) => candidate.id === id);
|
|
131
|
+
if (input.key === 'move-start')
|
|
132
|
+
return this.handleEvent({ type: 'move-node', id, parentID: node.parentID, beforeID: siblings[0]?.id ?? null });
|
|
133
|
+
if (input.key === 'move-end')
|
|
134
|
+
return this.handleEvent({ type: 'move-node', id, parentID: node.parentID, beforeID: null });
|
|
135
|
+
if (input.key === 'move-up' && index > 0)
|
|
136
|
+
return this.handleEvent({ type: 'move-node', id, parentID: node.parentID, beforeID: siblings[index - 1].id });
|
|
137
|
+
if (input.key === 'move-down' && index < siblings.length - 1)
|
|
138
|
+
return this.handleEvent({ type: 'move-node', id, parentID: node.parentID, beforeID: siblings[index + 2]?.id ?? null });
|
|
139
|
+
if (input.key === 'indent' && index > 0)
|
|
140
|
+
return this.handleEvent({ type: 'move-node', id, parentID: siblings[index - 1].id, beforeID: null });
|
|
141
|
+
if (input.key === 'outdent' && node.parentID !== null) {
|
|
142
|
+
const parent = nodes.find((candidate) => candidate.id === node.parentID);
|
|
143
|
+
if (parent === undefined)
|
|
144
|
+
return false;
|
|
145
|
+
const parentSiblings = nodes.filter((candidate) => candidate.parentID === parent.parentID);
|
|
146
|
+
const parentIndex = parentSiblings.findIndex((candidate) => candidate.id === parent.id);
|
|
147
|
+
return this.handleEvent({ type: 'move-node', id, parentID: parent.parentID, beforeID: parentSiblings[parentIndex + 1]?.id ?? null });
|
|
148
|
+
}
|
|
149
|
+
return false;
|
|
150
|
+
}
|
|
151
|
+
syncOrder(nodes) {
|
|
152
|
+
const result = this.#runtime.replace(tryCreateTreeReorderState(nodes));
|
|
153
|
+
if (result.ok && this.#currentID !== null && !nodes.some((node) => node.id === this.#currentID)) {
|
|
154
|
+
this.#currentID = nodes[0]?.id ?? null;
|
|
155
|
+
this.#options.onCurrentChange?.(this.#currentID);
|
|
156
|
+
}
|
|
157
|
+
return result;
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
function sameIDs(left, right) {
|
|
161
|
+
return left.length === right.length && left.every((id, index) => id === right[index]);
|
|
162
|
+
}
|
|
163
|
+
function sameNodes(left, right) {
|
|
164
|
+
return left.length === right.length && left.every((node, index) => node.id === right[index]?.id && node.parentID === right[index]?.parentID);
|
|
165
|
+
}
|
|
166
|
+
//# sourceMappingURL=reorder.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reorder.js","sourceRoot":"","sources":["../src/reorder.ts"],"names":[],"mappings":"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"}
|
package/dist/screen.d.ts
ADDED
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import type { TerminalAppearance, TerminalStyleReference } from './appearance.js';
|
|
2
|
+
export type TerminalDimension = number | 'auto' | 'fill';
|
|
3
|
+
export type TerminalAlignment = 'start' | 'center' | 'end' | 'stretch';
|
|
4
|
+
export type TerminalJustification = 'start' | 'center' | 'end' | 'space-between';
|
|
5
|
+
export type TerminalCursorShape = 'block' | 'bar' | 'underline';
|
|
6
|
+
export type TerminalBorder = 'none' | 'single' | 'double' | 'rounded';
|
|
7
|
+
export interface TerminalSpacing {
|
|
8
|
+
readonly top: number;
|
|
9
|
+
readonly right: number;
|
|
10
|
+
readonly bottom: number;
|
|
11
|
+
readonly left: number;
|
|
12
|
+
}
|
|
13
|
+
export type TerminalSpacingInput = number | Partial<TerminalSpacing>;
|
|
14
|
+
export interface TerminalCursorSpec {
|
|
15
|
+
readonly codeUnitOffset: number;
|
|
16
|
+
readonly visible?: boolean;
|
|
17
|
+
readonly shape?: TerminalCursorShape;
|
|
18
|
+
readonly blink?: boolean;
|
|
19
|
+
}
|
|
20
|
+
interface TerminalNodeBase {
|
|
21
|
+
readonly width?: TerminalDimension;
|
|
22
|
+
readonly height?: TerminalDimension;
|
|
23
|
+
readonly style?: TerminalStyleReference;
|
|
24
|
+
}
|
|
25
|
+
export interface TerminalTextNode extends TerminalNodeBase {
|
|
26
|
+
readonly type: 'text';
|
|
27
|
+
readonly value: string;
|
|
28
|
+
readonly wrap?: boolean;
|
|
29
|
+
readonly cursor?: TerminalCursorSpec;
|
|
30
|
+
}
|
|
31
|
+
export interface TerminalRowNode extends TerminalNodeBase {
|
|
32
|
+
readonly type: 'row';
|
|
33
|
+
readonly children: readonly TerminalScreenNode[];
|
|
34
|
+
readonly gap?: number;
|
|
35
|
+
readonly padding?: TerminalSpacingInput;
|
|
36
|
+
readonly align?: TerminalAlignment;
|
|
37
|
+
readonly justify?: TerminalJustification;
|
|
38
|
+
}
|
|
39
|
+
export interface TerminalColumnNode extends TerminalNodeBase {
|
|
40
|
+
readonly type: 'column';
|
|
41
|
+
readonly children: readonly TerminalScreenNode[];
|
|
42
|
+
readonly gap?: number;
|
|
43
|
+
readonly padding?: TerminalSpacingInput;
|
|
44
|
+
readonly align?: TerminalAlignment;
|
|
45
|
+
readonly justify?: TerminalJustification;
|
|
46
|
+
}
|
|
47
|
+
export interface TerminalBoxNode extends TerminalNodeBase {
|
|
48
|
+
readonly type: 'box';
|
|
49
|
+
readonly child?: TerminalScreenNode;
|
|
50
|
+
readonly border?: TerminalBorder;
|
|
51
|
+
readonly borderStyle?: TerminalStyleReference;
|
|
52
|
+
readonly title?: string;
|
|
53
|
+
readonly padding?: TerminalSpacingInput;
|
|
54
|
+
}
|
|
55
|
+
export interface TerminalSpacerNode extends TerminalNodeBase {
|
|
56
|
+
readonly type: 'spacer';
|
|
57
|
+
}
|
|
58
|
+
export type TerminalScreenNode = TerminalTextNode | TerminalRowNode | TerminalColumnNode | TerminalBoxNode | TerminalSpacerNode;
|
|
59
|
+
export interface TerminalTextOptions extends TerminalNodeBase {
|
|
60
|
+
readonly wrap?: boolean;
|
|
61
|
+
readonly cursor?: TerminalCursorSpec;
|
|
62
|
+
}
|
|
63
|
+
export interface TerminalContainerOptions extends TerminalNodeBase {
|
|
64
|
+
readonly gap?: number;
|
|
65
|
+
readonly padding?: TerminalSpacingInput;
|
|
66
|
+
readonly align?: TerminalAlignment;
|
|
67
|
+
readonly justify?: TerminalJustification;
|
|
68
|
+
}
|
|
69
|
+
export interface TerminalBoxOptions extends TerminalNodeBase {
|
|
70
|
+
readonly border?: TerminalBorder;
|
|
71
|
+
readonly borderStyle?: TerminalStyleReference;
|
|
72
|
+
readonly title?: string;
|
|
73
|
+
readonly padding?: TerminalSpacingInput;
|
|
74
|
+
}
|
|
75
|
+
export interface TerminalSpacerOptions extends TerminalNodeBase {
|
|
76
|
+
}
|
|
77
|
+
export interface TerminalFrameCell {
|
|
78
|
+
readonly text: string;
|
|
79
|
+
readonly style?: TerminalStyleReference;
|
|
80
|
+
readonly continuation?: boolean;
|
|
81
|
+
}
|
|
82
|
+
export interface TerminalFrameCursor {
|
|
83
|
+
readonly row: number;
|
|
84
|
+
readonly column: number;
|
|
85
|
+
readonly visible: boolean;
|
|
86
|
+
readonly shape: TerminalCursorShape;
|
|
87
|
+
readonly blink: boolean;
|
|
88
|
+
}
|
|
89
|
+
export interface TerminalFrame {
|
|
90
|
+
readonly columns: number;
|
|
91
|
+
readonly rows: number;
|
|
92
|
+
readonly cells: readonly (readonly TerminalFrameCell[])[];
|
|
93
|
+
readonly cursor: TerminalFrameCursor | null;
|
|
94
|
+
}
|
|
95
|
+
export interface RenderTerminalScreenOptions {
|
|
96
|
+
readonly columns: number;
|
|
97
|
+
readonly rows: number;
|
|
98
|
+
readonly appearance?: TerminalAppearance;
|
|
99
|
+
}
|
|
100
|
+
export declare function terminalText(value: string, options?: TerminalTextOptions): TerminalTextNode;
|
|
101
|
+
export declare function terminalRow(children: readonly TerminalScreenNode[], options?: TerminalContainerOptions): TerminalRowNode;
|
|
102
|
+
export declare function terminalColumn(children: readonly TerminalScreenNode[], options?: TerminalContainerOptions): TerminalColumnNode;
|
|
103
|
+
export declare function terminalBox(child: TerminalScreenNode | undefined, options?: TerminalBoxOptions): TerminalBoxNode;
|
|
104
|
+
export declare function terminalSpacer(options?: TerminalSpacerOptions): TerminalSpacerNode;
|
|
105
|
+
export declare function renderTerminalScreen(node: TerminalScreenNode, options: RenderTerminalScreenOptions): TerminalFrame;
|
|
106
|
+
export declare function serializeTerminalFrame(frame: TerminalFrame, appearance?: TerminalAppearance): readonly string[];
|
|
107
|
+
export {};
|
|
108
|
+
//# sourceMappingURL=screen.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"screen.d.ts","sourceRoot":"","sources":["../src/screen.ts"],"names":[],"mappings":"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"}
|