@sectile/terminal 0.7.0 → 0.8.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 +0 -1
- package/dist/alert-dialog.d.ts +0 -1
- package/dist/appearance.d.ts +0 -1
- package/dist/calendar.d.ts +0 -1
- package/dist/carousel.d.ts +0 -1
- package/dist/cascade-list.d.ts +38 -0
- package/dist/cascade-list.js +102 -0
- package/dist/cascade-list.js.map +1 -0
- package/dist/cascade-select.d.ts +1 -2
- package/dist/cascade-select.js +11 -31
- package/dist/cascade-select.js.map +1 -1
- package/dist/checkbox-group.d.ts +0 -1
- package/dist/checkbox.d.ts +0 -1
- package/dist/color-picker.d.ts +0 -1
- package/dist/combobox.d.ts +0 -1
- package/dist/date-field.d.ts +0 -1
- package/dist/date-picker.d.ts +0 -1
- package/dist/date-range-field.d.ts +0 -1
- package/dist/date-range-picker.d.ts +0 -1
- package/dist/date-time-field.d.ts +0 -1
- package/dist/date-time-picker.d.ts +0 -1
- package/dist/date-time-range-picker.d.ts +0 -1
- package/dist/dialog.d.ts +0 -1
- package/dist/disclosure.d.ts +0 -1
- package/dist/drawer.d.ts +0 -1
- package/dist/editable.d.ts +0 -1
- package/dist/feed.d.ts +0 -1
- package/dist/grid.d.ts +2 -2
- package/dist/grid.js +7 -6
- package/dist/grid.js.map +1 -1
- package/dist/index.d.ts +5 -2
- package/dist/index.js +4 -1
- package/dist/index.js.map +1 -1
- package/dist/internal/cascade-choice.d.ts +21 -0
- package/dist/internal/cascade-choice.js +36 -0
- package/dist/internal/cascade-choice.js.map +1 -0
- package/dist/internal/checked-control.d.ts +2 -3
- package/dist/internal/checked-control.js +3 -5
- package/dist/internal/checked-control.js.map +1 -1
- package/dist/internal/disabled-items.d.ts +0 -1
- package/dist/internal/disabled-items.js +2 -12
- package/dist/internal/disabled-items.js.map +1 -1
- package/dist/internal/grapheme.d.ts +2 -1
- package/dist/internal/grapheme.js +67 -0
- package/dist/internal/grapheme.js.map +1 -1
- package/dist/internal/menu-control.d.ts +0 -1
- package/dist/internal/menu-control.js +14 -41
- package/dist/internal/menu-control.js.map +1 -1
- package/dist/internal/popup-control.d.ts +2 -3
- package/dist/internal/popup-control.js +3 -5
- package/dist/internal/popup-control.js.map +1 -1
- package/dist/internal/reference-date.d.ts +0 -1
- package/dist/internal/result.d.ts +0 -1
- package/dist/internal/text-input.d.ts +0 -1
- package/dist/keyboard.d.ts +0 -1
- package/dist/layer-stack.d.ts +0 -1
- package/dist/layout.d.ts +0 -1
- package/dist/layout.js +4 -5
- package/dist/layout.js.map +1 -1
- package/dist/listbox.d.ts +0 -1
- package/dist/menu-button.d.ts +0 -1
- package/dist/menu.d.ts +0 -1
- package/dist/menubar.d.ts +0 -1
- package/dist/meter-group.d.ts +28 -0
- package/dist/meter-group.js +120 -0
- package/dist/meter-group.js.map +1 -0
- package/dist/meter.d.ts +21 -0
- package/dist/meter.js +98 -0
- package/dist/meter.js.map +1 -0
- package/dist/month-picker.d.ts +0 -1
- package/dist/month-range-picker.d.ts +0 -1
- package/dist/multi-thumb-slider.d.ts +0 -1
- package/dist/navigation-menu.d.ts +0 -1
- package/dist/node.d.ts +0 -1
- package/dist/number-field.d.ts +0 -1
- package/dist/pagination.d.ts +0 -1
- package/dist/pin-input.d.ts +0 -1
- package/dist/popover.d.ts +0 -1
- package/dist/progress.d.ts +22 -0
- package/dist/progress.js +76 -0
- package/dist/progress.js.map +1 -0
- package/dist/quantity-field.d.ts +0 -1
- package/dist/radio-group.d.ts +0 -1
- package/dist/radio-group.js +9 -1
- package/dist/radio-group.js.map +1 -1
- package/dist/range-calendar.d.ts +0 -1
- package/dist/rating.d.ts +2 -3
- package/dist/rating.js +125 -28
- package/dist/rating.js.map +1 -1
- package/dist/reorder.d.ts +0 -1
- package/dist/screen.d.ts +0 -1
- package/dist/screen.js +107 -67
- package/dist/screen.js.map +1 -1
- package/dist/select.d.ts +0 -1
- package/dist/slider.d.ts +0 -1
- package/dist/spin-button.d.ts +0 -1
- package/dist/stepper.d.ts +0 -1
- package/dist/switch.d.ts +0 -1
- package/dist/tabs.d.ts +0 -1
- package/dist/tabs.js +7 -1
- package/dist/tabs.js.map +1 -1
- package/dist/tags-input.d.ts +0 -1
- package/dist/text.d.ts +0 -1
- package/dist/time-field.d.ts +0 -1
- package/dist/time-range-field.d.ts +0 -1
- package/dist/timer.d.ts +0 -1
- package/dist/toast.d.ts +0 -1
- package/dist/toggle-button.d.ts +0 -1
- package/dist/toggle-group.d.ts +0 -1
- package/dist/toolbar.d.ts +0 -1
- package/dist/tooltip.d.ts +0 -1
- package/dist/tree-grid.d.ts +0 -1
- package/dist/tree-view.d.ts +0 -1
- package/dist/tree-view.js +5 -5
- package/dist/tree-view.js.map +1 -1
- package/dist/window-splitter.d.ts +0 -1
- package/dist/year-picker.d.ts +0 -1
- package/dist/year-range-picker.d.ts +0 -1
- package/package.json +26 -12
- package/dist/accordion.d.ts.map +0 -1
- package/dist/alert-dialog.d.ts.map +0 -1
- package/dist/appearance.d.ts.map +0 -1
- package/dist/calendar.d.ts.map +0 -1
- package/dist/carousel.d.ts.map +0 -1
- package/dist/cascade-select.d.ts.map +0 -1
- package/dist/checkbox-group.d.ts.map +0 -1
- package/dist/checkbox.d.ts.map +0 -1
- package/dist/color-picker.d.ts.map +0 -1
- package/dist/combobox.d.ts.map +0 -1
- package/dist/date-field.d.ts.map +0 -1
- package/dist/date-picker.d.ts.map +0 -1
- package/dist/date-range-field.d.ts.map +0 -1
- package/dist/date-range-picker.d.ts.map +0 -1
- package/dist/date-time-field.d.ts.map +0 -1
- package/dist/date-time-picker.d.ts.map +0 -1
- package/dist/date-time-range-picker.d.ts.map +0 -1
- package/dist/dialog.d.ts.map +0 -1
- package/dist/disclosure.d.ts.map +0 -1
- package/dist/drawer.d.ts.map +0 -1
- package/dist/editable.d.ts.map +0 -1
- package/dist/feed.d.ts.map +0 -1
- package/dist/form.d.ts +0 -65
- package/dist/form.d.ts.map +0 -1
- package/dist/form.js +0 -234
- package/dist/form.js.map +0 -1
- package/dist/grid.d.ts.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/internal/checked-control.d.ts.map +0 -1
- package/dist/internal/disabled-items.d.ts.map +0 -1
- package/dist/internal/grapheme.d.ts.map +0 -1
- package/dist/internal/menu-control.d.ts.map +0 -1
- package/dist/internal/popup-control.d.ts.map +0 -1
- package/dist/internal/reference-date.d.ts.map +0 -1
- package/dist/internal/result.d.ts.map +0 -1
- package/dist/internal/text-input.d.ts.map +0 -1
- package/dist/keyboard.d.ts.map +0 -1
- package/dist/layer-stack.d.ts.map +0 -1
- package/dist/layout.d.ts.map +0 -1
- package/dist/listbox.d.ts.map +0 -1
- package/dist/menu-button.d.ts.map +0 -1
- package/dist/menu.d.ts.map +0 -1
- package/dist/menubar.d.ts.map +0 -1
- package/dist/month-picker.d.ts.map +0 -1
- package/dist/month-range-picker.d.ts.map +0 -1
- package/dist/multi-thumb-slider.d.ts.map +0 -1
- package/dist/navigation-menu.d.ts.map +0 -1
- package/dist/node.d.ts.map +0 -1
- package/dist/number-field.d.ts.map +0 -1
- package/dist/pagination.d.ts.map +0 -1
- package/dist/pin-input.d.ts.map +0 -1
- package/dist/popover.d.ts.map +0 -1
- package/dist/quantity-field.d.ts.map +0 -1
- package/dist/radio-group.d.ts.map +0 -1
- package/dist/range-calendar.d.ts.map +0 -1
- package/dist/rating.d.ts.map +0 -1
- package/dist/reorder.d.ts.map +0 -1
- package/dist/screen.d.ts.map +0 -1
- package/dist/select.d.ts.map +0 -1
- package/dist/slider.d.ts.map +0 -1
- package/dist/spin-button.d.ts.map +0 -1
- package/dist/stepper.d.ts.map +0 -1
- package/dist/switch.d.ts.map +0 -1
- package/dist/tabs.d.ts.map +0 -1
- package/dist/tags-input.d.ts.map +0 -1
- package/dist/text.d.ts.map +0 -1
- package/dist/time-field.d.ts.map +0 -1
- package/dist/time-range-field.d.ts.map +0 -1
- package/dist/timer.d.ts.map +0 -1
- package/dist/toast.d.ts.map +0 -1
- package/dist/toggle-button.d.ts.map +0 -1
- package/dist/toggle-group.d.ts.map +0 -1
- package/dist/toolbar.d.ts.map +0 -1
- package/dist/tooltip.d.ts.map +0 -1
- package/dist/tree-grid.d.ts.map +0 -1
- package/dist/tree-view.d.ts.map +0 -1
- package/dist/window-splitter.d.ts.map +0 -1
- package/dist/year-picker.d.ts.map +0 -1
- package/dist/year-range-picker.d.ts.map +0 -1
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { tryCreateMeterGroupState, } from '@sectile/core/meter-group';
|
|
2
|
+
import { createRevisionSnapshot } from '@sectile/core/revision';
|
|
3
|
+
import { unwrap } from '@sectile/core/result';
|
|
4
|
+
export function createMeterGroup(options) {
|
|
5
|
+
return unwrap(tryCreateMeterGroup(options));
|
|
6
|
+
}
|
|
7
|
+
export function tryCreateMeterGroup(options) {
|
|
8
|
+
const initial = tryCreateMeterGroupState(options);
|
|
9
|
+
if (!initial.ok)
|
|
10
|
+
return initial;
|
|
11
|
+
return { ok: true, value: new TerminalMeterGroup(options, createRevisionSnapshot(initial.value)) };
|
|
12
|
+
}
|
|
13
|
+
class TerminalMeterGroup {
|
|
14
|
+
#onUpdate;
|
|
15
|
+
#snapshot;
|
|
16
|
+
constructor(options, snapshot) {
|
|
17
|
+
this.#onUpdate = options.onUpdate;
|
|
18
|
+
this.#snapshot = snapshot;
|
|
19
|
+
}
|
|
20
|
+
getSnapshot() {
|
|
21
|
+
return this.#snapshot;
|
|
22
|
+
}
|
|
23
|
+
syncControlledValues(values) {
|
|
24
|
+
const next = tryCreateMeterGroupState(values);
|
|
25
|
+
if (!next.ok)
|
|
26
|
+
return next;
|
|
27
|
+
if (this.#snapshot.revision === Number.MAX_SAFE_INTEGER)
|
|
28
|
+
return revisionCeiling();
|
|
29
|
+
this.#snapshot = createRevisionSnapshot(next.value, this.#snapshot.revision + 1);
|
|
30
|
+
this.#onUpdate?.();
|
|
31
|
+
return { ok: true, value: this.#snapshot };
|
|
32
|
+
}
|
|
33
|
+
getRenderPlan(width) {
|
|
34
|
+
const widthError = validateWidth(width);
|
|
35
|
+
if (widthError !== null)
|
|
36
|
+
return widthError;
|
|
37
|
+
const state = this.#snapshot.state;
|
|
38
|
+
const buckets = [
|
|
39
|
+
...state.segments.map((segment) => ({
|
|
40
|
+
id: segment.id,
|
|
41
|
+
numerator: segment.valueRatio.numerator,
|
|
42
|
+
denominator: segment.valueRatio.denominator,
|
|
43
|
+
})),
|
|
44
|
+
{ id: null, numerator: state.max === state.remaining ? 1n : remainingNumerator(state), denominator: state.ratio.denominator },
|
|
45
|
+
];
|
|
46
|
+
const counts = allocateLargestRemainder(buckets, width);
|
|
47
|
+
const segments = [];
|
|
48
|
+
let startCell = 0;
|
|
49
|
+
for (let index = 0; index < state.segments.length; index += 1) {
|
|
50
|
+
const segment = state.segments[index];
|
|
51
|
+
if (segment === undefined)
|
|
52
|
+
throw new Error('Internal invariant breach: MeterGroup segment allocation failed.');
|
|
53
|
+
const cellCount = counts[index] ?? 0;
|
|
54
|
+
segments.push(Object.freeze({ id: segment.id, startCell, cellCount }));
|
|
55
|
+
startCell += cellCount;
|
|
56
|
+
}
|
|
57
|
+
return {
|
|
58
|
+
ok: true,
|
|
59
|
+
value: Object.freeze({
|
|
60
|
+
width,
|
|
61
|
+
segments: Object.freeze(segments),
|
|
62
|
+
remainingStartCell: startCell,
|
|
63
|
+
remainingCells: counts[counts.length - 1] ?? width,
|
|
64
|
+
zone: state.zone,
|
|
65
|
+
}),
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
function remainingNumerator(state) {
|
|
70
|
+
return state.ratio.denominator - state.ratio.numerator;
|
|
71
|
+
}
|
|
72
|
+
function allocateLargestRemainder(buckets, width) {
|
|
73
|
+
const allocations = buckets.map((bucket, index) => {
|
|
74
|
+
const scaled = bucket.numerator * BigInt(width);
|
|
75
|
+
return {
|
|
76
|
+
index,
|
|
77
|
+
floor: scaled / bucket.denominator,
|
|
78
|
+
remainderNumerator: scaled % bucket.denominator,
|
|
79
|
+
remainderDenominator: bucket.denominator,
|
|
80
|
+
};
|
|
81
|
+
});
|
|
82
|
+
const counts = allocations.map((allocation) => Number(allocation.floor));
|
|
83
|
+
let remaining = width - counts.reduce((sum, count) => sum + count, 0);
|
|
84
|
+
const order = [...allocations].sort((left, right) => {
|
|
85
|
+
const comparison = left.remainderNumerator * right.remainderDenominator
|
|
86
|
+
- right.remainderNumerator * left.remainderDenominator;
|
|
87
|
+
return comparison === 0n ? left.index - right.index : comparison > 0n ? -1 : 1;
|
|
88
|
+
});
|
|
89
|
+
for (let index = 0; index < remaining; index += 1) {
|
|
90
|
+
const allocation = order[index];
|
|
91
|
+
if (allocation === undefined)
|
|
92
|
+
throw new Error('Internal invariant breach: cell remainder exceeds bucket count.');
|
|
93
|
+
counts[allocation.index] = (counts[allocation.index] ?? 0) + 1;
|
|
94
|
+
}
|
|
95
|
+
return Object.freeze(counts);
|
|
96
|
+
}
|
|
97
|
+
function validateWidth(width) {
|
|
98
|
+
if (Number.isSafeInteger(width) && width >= 0)
|
|
99
|
+
return null;
|
|
100
|
+
return {
|
|
101
|
+
ok: false,
|
|
102
|
+
error: {
|
|
103
|
+
class: 'construction',
|
|
104
|
+
code: 'invalid-count',
|
|
105
|
+
message: 'MeterGroup render width must be a non-negative safe integer.',
|
|
106
|
+
details: { width },
|
|
107
|
+
},
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
function revisionCeiling() {
|
|
111
|
+
return {
|
|
112
|
+
ok: false,
|
|
113
|
+
error: {
|
|
114
|
+
class: 'resource-rejection',
|
|
115
|
+
code: 'revision-ceiling-reached',
|
|
116
|
+
message: 'MeterGroup revision cannot advance beyond the safe-integer ceiling.',
|
|
117
|
+
},
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
//# sourceMappingURL=meter-group.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"meter-group.js","sourceRoot":"","sources":["../src/meter-group.ts"],"names":[],"mappings":"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"}
|
package/dist/meter.d.ts
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { Result, TiePolicy } from '@sectile/core';
|
|
2
|
+
import { type MeterInput, type MeterState, type MeterZone } from '@sectile/core/meter';
|
|
3
|
+
import { type RevisionSnapshot } from '@sectile/core/revision';
|
|
4
|
+
export interface MeterControlledValues extends MeterInput {
|
|
5
|
+
}
|
|
6
|
+
export interface MeterOptions extends MeterControlledValues {
|
|
7
|
+
readonly onUpdate?: () => void;
|
|
8
|
+
}
|
|
9
|
+
export interface MeterRenderPlan {
|
|
10
|
+
readonly width: number;
|
|
11
|
+
readonly filledCells: number;
|
|
12
|
+
readonly emptyCells: number;
|
|
13
|
+
readonly zone: MeterZone;
|
|
14
|
+
}
|
|
15
|
+
export interface MeterConnection {
|
|
16
|
+
getSnapshot(): RevisionSnapshot<MeterState>;
|
|
17
|
+
syncControlledValues(values: MeterControlledValues): Result<RevisionSnapshot<MeterState>>;
|
|
18
|
+
getRenderPlan(width: number, tiePolicy?: TiePolicy): Result<MeterRenderPlan>;
|
|
19
|
+
}
|
|
20
|
+
export declare function createMeter(options: MeterOptions): MeterConnection;
|
|
21
|
+
export declare function tryCreateMeter(options: MeterOptions): Result<MeterConnection>;
|
package/dist/meter.js
ADDED
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { tryCreateMeterState } from '@sectile/core/meter';
|
|
2
|
+
import { createRevisionSnapshot } from '@sectile/core/revision';
|
|
3
|
+
import { unwrap } from '@sectile/core/result';
|
|
4
|
+
export function createMeter(options) {
|
|
5
|
+
return unwrap(tryCreateMeter(options));
|
|
6
|
+
}
|
|
7
|
+
export function tryCreateMeter(options) {
|
|
8
|
+
const initial = tryCreateMeterState(options);
|
|
9
|
+
if (!initial.ok)
|
|
10
|
+
return initial;
|
|
11
|
+
return { ok: true, value: new TerminalMeter(options, createRevisionSnapshot(initial.value)) };
|
|
12
|
+
}
|
|
13
|
+
class TerminalMeter {
|
|
14
|
+
#onUpdate;
|
|
15
|
+
#snapshot;
|
|
16
|
+
constructor(options, snapshot) {
|
|
17
|
+
this.#onUpdate = options.onUpdate;
|
|
18
|
+
this.#snapshot = snapshot;
|
|
19
|
+
}
|
|
20
|
+
getSnapshot() {
|
|
21
|
+
return this.#snapshot;
|
|
22
|
+
}
|
|
23
|
+
syncControlledValues(values) {
|
|
24
|
+
const next = tryCreateMeterState(values);
|
|
25
|
+
if (!next.ok)
|
|
26
|
+
return next;
|
|
27
|
+
if (this.#snapshot.revision === Number.MAX_SAFE_INTEGER)
|
|
28
|
+
return revisionCeiling();
|
|
29
|
+
this.#snapshot = createRevisionSnapshot(next.value, this.#snapshot.revision + 1);
|
|
30
|
+
this.#onUpdate?.();
|
|
31
|
+
return { ok: true, value: this.#snapshot };
|
|
32
|
+
}
|
|
33
|
+
getRenderPlan(width, tiePolicy = 'lower') {
|
|
34
|
+
const widthError = validateWidth(width);
|
|
35
|
+
if (widthError !== null)
|
|
36
|
+
return widthError;
|
|
37
|
+
if (tiePolicy !== 'lower' && tiePolicy !== 'upper' && tiePolicy !== 'even-tick') {
|
|
38
|
+
return invalidTiePolicy();
|
|
39
|
+
}
|
|
40
|
+
const state = this.#snapshot.state;
|
|
41
|
+
const filledCells = allocateCells(state.ratio.numerator, state.ratio.denominator, width, tiePolicy);
|
|
42
|
+
return {
|
|
43
|
+
ok: true,
|
|
44
|
+
value: Object.freeze({ width, filledCells, emptyCells: width - filledCells, zone: state.zone }),
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
function allocateCells(numerator, denominator, width, tiePolicy) {
|
|
49
|
+
const scaled = numerator * BigInt(width);
|
|
50
|
+
const floor = scaled / denominator;
|
|
51
|
+
const remainder = scaled % denominator;
|
|
52
|
+
if (remainder === 0n)
|
|
53
|
+
return Number(floor);
|
|
54
|
+
const comparison = remainder * 2n - denominator;
|
|
55
|
+
if (comparison < 0n)
|
|
56
|
+
return Number(floor);
|
|
57
|
+
if (comparison > 0n)
|
|
58
|
+
return Number(floor + 1n);
|
|
59
|
+
if (tiePolicy === 'lower')
|
|
60
|
+
return Number(floor);
|
|
61
|
+
if (tiePolicy === 'upper')
|
|
62
|
+
return Number(floor + 1n);
|
|
63
|
+
return Number(floor % 2n === 0n ? floor : floor + 1n);
|
|
64
|
+
}
|
|
65
|
+
function validateWidth(width) {
|
|
66
|
+
if (Number.isSafeInteger(width) && width >= 0)
|
|
67
|
+
return null;
|
|
68
|
+
return {
|
|
69
|
+
ok: false,
|
|
70
|
+
error: {
|
|
71
|
+
class: 'construction',
|
|
72
|
+
code: 'invalid-count',
|
|
73
|
+
message: 'Meter render width must be a non-negative safe integer.',
|
|
74
|
+
details: { width },
|
|
75
|
+
},
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
function invalidTiePolicy() {
|
|
79
|
+
return {
|
|
80
|
+
ok: false,
|
|
81
|
+
error: {
|
|
82
|
+
class: 'construction',
|
|
83
|
+
code: 'invalid-boundary',
|
|
84
|
+
message: 'Meter render tie policy must be lower, upper, or even-tick.',
|
|
85
|
+
},
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
function revisionCeiling() {
|
|
89
|
+
return {
|
|
90
|
+
ok: false,
|
|
91
|
+
error: {
|
|
92
|
+
class: 'resource-rejection',
|
|
93
|
+
code: 'revision-ceiling-reached',
|
|
94
|
+
message: 'Meter revision cannot advance beyond the safe-integer ceiling.',
|
|
95
|
+
},
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=meter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"meter.js","sourceRoot":"","sources":["../src/meter.ts"],"names":[],"mappings":"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"}
|
package/dist/month-picker.d.ts
CHANGED
|
@@ -1,3 +1,2 @@
|
|
|
1
1
|
export { createDatePicker as createMonthPicker, tryCreateDatePicker as tryCreateMonthPicker, toDatePickerEvent as toMonthPickerEvent, } from './date-picker.js';
|
|
2
2
|
export type { DatePickerConnection as MonthPickerConnection, DatePickerControlledValues as MonthPickerControlledValues, DatePickerOptions as MonthPickerOptions, } from './date-picker.js';
|
|
3
|
-
//# sourceMappingURL=month-picker.d.ts.map
|
|
@@ -1,3 +1,2 @@
|
|
|
1
1
|
export { createDateRangePicker as createMonthRangePicker, tryCreateDateRangePicker as tryCreateMonthRangePicker, } from './date-range-picker.js';
|
|
2
2
|
export type { DateRangePickerConnection as MonthRangePickerConnection, DateRangePickerControlledValues as MonthRangePickerControlledValues, DateRangePickerOptions as MonthRangePickerOptions, } from './date-range-picker.js';
|
|
3
|
-
//# sourceMappingURL=month-range-picker.d.ts.map
|
|
@@ -31,4 +31,3 @@ export interface MultiThumbSliderConnection<ID extends StableID = StableID> {
|
|
|
31
31
|
}
|
|
32
32
|
export declare function createMultiThumbSlider<ID extends StableID>(options: MultiThumbSliderOptions<ID>): FacadeConnection<MultiThumbSliderConnection<ID>>;
|
|
33
33
|
export declare function tryCreateMultiThumbSlider<ID extends StableID>(options: MultiThumbSliderOptions<ID>): Result<FacadeConnection<MultiThumbSliderConnection<ID>>>;
|
|
34
|
-
//# sourceMappingURL=multi-thumb-slider.d.ts.map
|
|
@@ -5,4 +5,3 @@ export type NavigationMenuOptions<ID extends StableID = StableID> = Omit<MenuCon
|
|
|
5
5
|
export type NavigationMenuConnection<ID extends StableID = StableID> = MenuControl<ID>;
|
|
6
6
|
export declare function createNavigationMenu<ID extends StableID>(options: NavigationMenuOptions<ID>): FacadeConnection<NavigationMenuConnection<ID>>;
|
|
7
7
|
export declare function tryCreateNavigationMenu<ID extends StableID>(options: NavigationMenuOptions<ID>): Result<FacadeConnection<NavigationMenuConnection<ID>>>;
|
|
8
|
-
//# sourceMappingURL=navigation-menu.d.ts.map
|
package/dist/node.d.ts
CHANGED
|
@@ -40,4 +40,3 @@ export declare function toTerminalKeyboardInput(value: string | undefined, keypr
|
|
|
40
40
|
export declare function createTTYKeyboard(input: ReadStream, listener: TTYKeyboardInputHandler): Result<TTYKeyboard>;
|
|
41
41
|
export declare function detectTerminalCapabilities(output: NodeTerminalOutput, environment?: NodeTerminalEnvironment): TerminalCapabilities;
|
|
42
42
|
export declare function createTerminalScreenWriter(output: NodeTerminalOutput, options?: TerminalScreenWriterOptions): TerminalScreenWriter;
|
|
43
|
-
//# sourceMappingURL=node.d.ts.map
|
package/dist/number-field.d.ts
CHANGED
|
@@ -44,4 +44,3 @@ export interface NumberFieldConnection {
|
|
|
44
44
|
}
|
|
45
45
|
export declare function createNumberField(options?: NumberFieldOptions): FacadeConnection<NumberFieldConnection>;
|
|
46
46
|
export declare function tryCreateNumberField(options?: NumberFieldOptions): Result<FacadeConnection<NumberFieldConnection>>;
|
|
47
|
-
//# sourceMappingURL=number-field.d.ts.map
|
package/dist/pagination.d.ts
CHANGED
|
@@ -35,4 +35,3 @@ export interface PaginationConnection {
|
|
|
35
35
|
}
|
|
36
36
|
export declare function createPagination(options: PaginationOptions): FacadeConnection<PaginationConnection>;
|
|
37
37
|
export declare function tryCreatePagination(options: PaginationOptions): Result<FacadeConnection<PaginationConnection>>;
|
|
38
|
-
//# sourceMappingURL=pagination.d.ts.map
|
package/dist/pin-input.d.ts
CHANGED
|
@@ -25,4 +25,3 @@ export interface PinInputConnection {
|
|
|
25
25
|
}
|
|
26
26
|
export declare function createPinInput(options: PinInputOptions): FacadeConnection<PinInputConnection>;
|
|
27
27
|
export declare function tryCreatePinInput(options: PinInputOptions): Result<FacadeConnection<PinInputConnection>>;
|
|
28
|
-
//# sourceMappingURL=pin-input.d.ts.map
|
package/dist/popover.d.ts
CHANGED
|
@@ -18,4 +18,3 @@ export type PopoverUpdateHandler = NonNullable<PopoverOptions['onUpdate']>;
|
|
|
18
18
|
export type PopoverConnection = TerminalPopupConnection<PopoverState, PopoverEvent>;
|
|
19
19
|
export declare function createPopover(options?: PopoverOptions): FacadeConnection<PopoverConnection>;
|
|
20
20
|
export declare function tryCreatePopover(options?: PopoverOptions): Result<FacadeConnection<PopoverConnection>>;
|
|
21
|
-
//# sourceMappingURL=popover.d.ts.map
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { Result, TiePolicy } from '@sectile/core';
|
|
2
|
+
import { type ProgressInput, type ProgressState, type ProgressStatus } from '@sectile/core/progress';
|
|
3
|
+
import { type RevisionSnapshot } from '@sectile/core/revision';
|
|
4
|
+
export interface ProgressControlledValues extends ProgressInput {
|
|
5
|
+
}
|
|
6
|
+
export interface ProgressOptions extends ProgressControlledValues {
|
|
7
|
+
readonly onUpdate?: () => void;
|
|
8
|
+
}
|
|
9
|
+
export interface ProgressRenderPlan {
|
|
10
|
+
readonly mode: 'determinate' | 'indeterminate';
|
|
11
|
+
readonly width: number;
|
|
12
|
+
readonly filledCells: number | null;
|
|
13
|
+
readonly emptyCells: number | null;
|
|
14
|
+
readonly status: ProgressStatus;
|
|
15
|
+
}
|
|
16
|
+
export interface ProgressConnection {
|
|
17
|
+
getSnapshot(): RevisionSnapshot<ProgressState>;
|
|
18
|
+
syncControlledValues(values: ProgressControlledValues): Result<RevisionSnapshot<ProgressState>>;
|
|
19
|
+
getRenderPlan(width: number, tiePolicy?: TiePolicy): Result<ProgressRenderPlan>;
|
|
20
|
+
}
|
|
21
|
+
export declare function createProgress(options?: ProgressOptions): ProgressConnection;
|
|
22
|
+
export declare function tryCreateProgress(options?: ProgressOptions): Result<ProgressConnection>;
|
package/dist/progress.js
ADDED
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { tryCreateProgressState } from '@sectile/core/progress';
|
|
2
|
+
import { createRevisionSnapshot } from '@sectile/core/revision';
|
|
3
|
+
import { unwrap } from '@sectile/core/result';
|
|
4
|
+
export function createProgress(options = {}) {
|
|
5
|
+
return unwrap(tryCreateProgress(options));
|
|
6
|
+
}
|
|
7
|
+
export function tryCreateProgress(options = {}) {
|
|
8
|
+
const initial = tryCreateProgressState(options);
|
|
9
|
+
if (!initial.ok)
|
|
10
|
+
return initial;
|
|
11
|
+
return { ok: true, value: new TerminalProgress(options, createRevisionSnapshot(initial.value)) };
|
|
12
|
+
}
|
|
13
|
+
class TerminalProgress {
|
|
14
|
+
#onUpdate;
|
|
15
|
+
#snapshot;
|
|
16
|
+
constructor(options, snapshot) {
|
|
17
|
+
this.#onUpdate = options.onUpdate;
|
|
18
|
+
this.#snapshot = snapshot;
|
|
19
|
+
}
|
|
20
|
+
getSnapshot() { return this.#snapshot; }
|
|
21
|
+
syncControlledValues(values) {
|
|
22
|
+
const next = tryCreateProgressState(values);
|
|
23
|
+
if (!next.ok)
|
|
24
|
+
return next;
|
|
25
|
+
if (this.#snapshot.revision === Number.MAX_SAFE_INTEGER)
|
|
26
|
+
return revisionCeiling();
|
|
27
|
+
this.#snapshot = createRevisionSnapshot(next.value, this.#snapshot.revision + 1);
|
|
28
|
+
this.#onUpdate?.();
|
|
29
|
+
return { ok: true, value: this.#snapshot };
|
|
30
|
+
}
|
|
31
|
+
getRenderPlan(width, tiePolicy = 'lower') {
|
|
32
|
+
const widthError = validateWidth(width);
|
|
33
|
+
if (widthError !== null)
|
|
34
|
+
return widthError;
|
|
35
|
+
if (tiePolicy !== 'lower' && tiePolicy !== 'upper' && tiePolicy !== 'even-tick')
|
|
36
|
+
return invalidTiePolicy();
|
|
37
|
+
const state = this.#snapshot.state;
|
|
38
|
+
if (state.ratio === null) {
|
|
39
|
+
return { ok: true, value: Object.freeze({ mode: 'indeterminate', width, filledCells: null, emptyCells: null, status: state.status }) };
|
|
40
|
+
}
|
|
41
|
+
const filledCells = allocateCells(state.ratio.numerator, state.ratio.denominator, width, tiePolicy);
|
|
42
|
+
return {
|
|
43
|
+
ok: true,
|
|
44
|
+
value: Object.freeze({ mode: 'determinate', width, filledCells, emptyCells: width - filledCells, status: state.status }),
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
function allocateCells(numerator, denominator, width, tiePolicy) {
|
|
49
|
+
const scaled = numerator * BigInt(width);
|
|
50
|
+
const floor = scaled / denominator;
|
|
51
|
+
const remainder = scaled % denominator;
|
|
52
|
+
if (remainder === 0n)
|
|
53
|
+
return Number(floor);
|
|
54
|
+
const comparison = remainder * 2n - denominator;
|
|
55
|
+
if (comparison < 0n)
|
|
56
|
+
return Number(floor);
|
|
57
|
+
if (comparison > 0n)
|
|
58
|
+
return Number(floor + 1n);
|
|
59
|
+
if (tiePolicy === 'lower')
|
|
60
|
+
return Number(floor);
|
|
61
|
+
if (tiePolicy === 'upper')
|
|
62
|
+
return Number(floor + 1n);
|
|
63
|
+
return Number(floor % 2n === 0n ? floor : floor + 1n);
|
|
64
|
+
}
|
|
65
|
+
function validateWidth(width) {
|
|
66
|
+
if (Number.isSafeInteger(width) && width >= 0)
|
|
67
|
+
return null;
|
|
68
|
+
return { ok: false, error: { class: 'construction', code: 'invalid-count', message: 'Progress render width must be a non-negative safe integer.', details: { width } } };
|
|
69
|
+
}
|
|
70
|
+
function invalidTiePolicy() {
|
|
71
|
+
return { ok: false, error: { class: 'construction', code: 'invalid-boundary', message: 'Progress render tie policy must be lower, upper, or even-tick.' } };
|
|
72
|
+
}
|
|
73
|
+
function revisionCeiling() {
|
|
74
|
+
return { ok: false, error: { class: 'resource-rejection', code: 'revision-ceiling-reached', message: 'Progress revision cannot advance beyond the safe-integer ceiling.' } };
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=progress.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"progress.js","sourceRoot":"","sources":["../src/progress.ts"],"names":[],"mappings":"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"}
|
package/dist/quantity-field.d.ts
CHANGED
|
@@ -46,4 +46,3 @@ export interface QuantityFieldConnection {
|
|
|
46
46
|
}
|
|
47
47
|
export declare function createQuantityField(options: QuantityFieldOptions): FacadeConnection<QuantityFieldConnection>;
|
|
48
48
|
export declare function tryCreateQuantityField(options: QuantityFieldOptions): Result<FacadeConnection<QuantityFieldConnection>>;
|
|
49
|
-
//# sourceMappingURL=quantity-field.d.ts.map
|
package/dist/radio-group.d.ts
CHANGED
|
@@ -37,4 +37,3 @@ export interface RadioGroupConnection<ID extends StableID = StableID> {
|
|
|
37
37
|
export declare function createRadioGroup<ID extends StableID>(options: RadioGroupOptions<ID>): FacadeConnection<RadioGroupConnection<ID>>;
|
|
38
38
|
export declare function tryCreateRadioGroup<ID extends StableID>(options: RadioGroupOptions<ID>): Result<FacadeConnection<RadioGroupConnection<ID>>>;
|
|
39
39
|
export declare function toRadioGroupEvent<ID extends StableID = StableID>(input: TerminalKeyboardInput, orientation?: 'horizontal' | 'vertical'): RadioGroupEvent<ID> | null;
|
|
40
|
-
//# sourceMappingURL=radio-group.d.ts.map
|
package/dist/radio-group.js
CHANGED
|
@@ -38,6 +38,9 @@ function tryCreateRadioGroupConnection(options) {
|
|
|
38
38
|
selected: valueControlled || options.readOnly === true
|
|
39
39
|
? previous.selection.selected
|
|
40
40
|
: proposed.selection.selected,
|
|
41
|
+
anchor: valueControlled || options.readOnly === true
|
|
42
|
+
? previous.selection.anchor
|
|
43
|
+
: proposed.selection.anchor,
|
|
41
44
|
current: highlightControlled ? previous.cursor.current : proposed.cursor.current,
|
|
42
45
|
}),
|
|
43
46
|
notify: (previous, proposed) => {
|
|
@@ -94,8 +97,13 @@ class TerminalRadioGroupConnection {
|
|
|
94
97
|
} };
|
|
95
98
|
}
|
|
96
99
|
const state = this.#runtime.getSnapshot().state;
|
|
100
|
+
const nextSelected = this.#valueControlled ? selected(values.value ?? null) : state.selection.selected;
|
|
101
|
+
const nextID = nextSelected[0] ?? null;
|
|
97
102
|
const result = this.#runtime.replace(tryCreateRadioGroupState(this.#domain, {
|
|
98
|
-
selected:
|
|
103
|
+
selected: nextSelected,
|
|
104
|
+
anchor: this.#valueControlled && state.selection.selected[0] !== nextID
|
|
105
|
+
? nextID
|
|
106
|
+
: state.selection.anchor,
|
|
99
107
|
current: this.#highlightControlled ? (values.highlightedValue ?? null) : state.cursor.current,
|
|
100
108
|
}));
|
|
101
109
|
if (result.ok)
|
package/dist/radio-group.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"radio-group.js","sourceRoot":"","sources":["../src/radio-group.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAyB,MAAM,+BAA+B,CAAC;AAC9F,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,OAAO,EAAE,iBAAiB,EAAiB,MAAM,wBAAwB,CAAC;AAE1E,OAAO,EACL,oBAAoB,EACpB,wBAAwB,GAKzB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,wBAAwB,EAA2B,MAAM,+BAA+B,CAAC;AAClG,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAmCnE,MAAM,UAAU,gBAAgB,CAC9B,OAA8B;IAE9B,OAAO,MAAM,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,OAA8B;IAE9B,OAAO,sBAAsB,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,6BAA6B,CAAC,OAAO,CAAC,CAAC,CAAC;AAC9F,CAAC;AAED,SAAS,6BAA6B,CACpC,OAA8B;IAE9B,MAAM,MAAM,GAAG,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAChD,IAAI,CAAC,MAAM,CAAC,EAAE;QAAE,OAAO,MAAM,CAAC;IAC9B,MAAM,QAAQ,GAAG,mBAAmB,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IAC1E,IAAI,CAAC,QAAQ,CAAC,EAAE;QAAE,OAAO,QAAQ,CAAC;IAClC,MAAM,mBAAmB,GAAG,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC;IACvD,MAAM,QAAQ,GAA2B,MAAM,CAAC,MAAM,CAAC;QACrD,GAAG,OAAO,CAAC,QAAQ;QACnB,QAAQ,EAAE,CAAC,EAAM,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC;KACrF,CAAC,CAAC;IACH,MAAM,eAAe,GAAG,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC;IACpD,MAAM,mBAAmB,GAAG,OAAO,CAAC,gBAAgB,KAAK,SAAS,CAAC;IACnE,MAAM,OAAO,GAAG,wBAAwB,CAEtC;QACA,WAAW,EAAE,OAAO;QACpB,iBAAiB,EAAE,gBAAgB;QACnC,OAAO,EAAE,wBAAwB,CAAC,MAAM,CAAC,KAAK,EAAE;YAC9C,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC;YACjE,OAAO,EAAE,OAAO,CAAC,gBAAgB,KAAK,SAAS;gBAC7C,CAAC,CAAC,OAAO,CAAC,gBAAgB;gBAC1B,CAAC,CAAC,OAAO,CAAC,uBAAuB,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,YAAY,IAAI,IAAI;SACrF,CAAC;QACF,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,oBAAoB,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC;QACrF,SAAS,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,CAAC,wBAAwB,CAAC,MAAM,CAAC,KAAK,EAAE;YACxE,QAAQ,EAAE,eAAe,IAAI,OAAO,CAAC,QAAQ,KAAK,IAAI;gBACpD,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ;gBAC7B,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ;YAC/B,OAAO,EAAE,mBAAmB,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO;SACjF,CAAC;QACF,MAAM,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE;YAC7B,IAAI,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtE,OAAO,CAAC,aAAa,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;YAClE,CAAC;YACD,IAAI,QAAQ,CAAC,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACxD,OAAO,CAAC,wBAAwB,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC;QACD,QAAQ,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC;KACvF,CAAC,CAAC;IACH,IAAI,CAAC,OAAO,CAAC,EAAE;QAAE,OAAO,OAAO,CAAC;IAChC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,4BAA4B,CACxD,OAAO,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,eAAe,EAAE,mBAAmB,CAC3E,EAAE,CAAC;AACN,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,KAA4B,EAC5B,WAAW,GAA8B,UAAU;IAEnD,IAAI,KAAK,CAAC,GAAG,KAAK,MAAM;QAAE,OAAO,OAAO,CAAC;IACzC,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK;QAAE,OAAO,MAAM,CAAC;IACvC,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO;QAAE,OAAO,OAAO,CAAC;IACnE,IAAI,WAAW,KAAK,YAAY,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO;QAAE,OAAO,MAAM,CAAC;IACzE,IAAI,WAAW,KAAK,YAAY,IAAI,KAAK,CAAC,GAAG,KAAK,MAAM;QAAE,OAAO,UAAU,CAAC;IAC5E,IAAI,WAAW,KAAK,UAAU,IAAI,KAAK,CAAC,GAAG,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC;IACtE,IAAI,WAAW,KAAK,UAAU,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI;QAAE,OAAO,UAAU,CAAC;IACxE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,4BAA4B;IACvB,QAAQ,CAAwB;IAChC,OAAO,CAAe;IACtB,QAAQ,CAAqF;IAC7F,gBAAgB,CAAU;IAC1B,oBAAoB,CAAU;IAEvC,YACE,OAA8B,EAAE,MAAoB,EACpD,OAA2F,EAC3F,eAAwB,EAAE,mBAA4B;QAEtD,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC;QACxC,IAAI,CAAC,oBAAoB,GAAG,mBAAmB,CAAC;IAClD,CAAC;IAEM,WAAW,KAA4C,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAE5F,oBAAoB,CAAC,MAG3B;QACC,IAAI,IAAI,CAAC,gBAAgB,KAAK,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC;eACrD,IAAI,CAAC,oBAAoB,KAAK,CAAC,MAAM,CAAC,gBAAgB,KAAK,SAAS,CAAC,EAAE,CAAC;YAC3E,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;oBACzB,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,2BAA2B;oBACxD,OAAO,EAAE,4EAA4E;iBACtF,EAAE,CAAC;QACN,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC;QAChD,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,wBAAwB,CAAC,IAAI,CAAC,OAAO,EAAE;YAC1E,QAAQ,EAAE,IAAI,CAAC,gBAAgB,
|
|
1
|
+
{"version":3,"file":"radio-group.js","sourceRoot":"","sources":["../src/radio-group.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAyB,MAAM,+BAA+B,CAAC;AAC9F,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,OAAO,EAAE,iBAAiB,EAAiB,MAAM,wBAAwB,CAAC;AAE1E,OAAO,EACL,oBAAoB,EACpB,wBAAwB,GAKzB,MAAM,2BAA2B,CAAC;AAEnC,OAAO,EAAE,wBAAwB,EAA2B,MAAM,+BAA+B,CAAC;AAClG,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AAmCnE,MAAM,UAAU,gBAAgB,CAC9B,OAA8B;IAE9B,OAAO,MAAM,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,OAA8B;IAE9B,OAAO,sBAAsB,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,6BAA6B,CAAC,OAAO,CAAC,CAAC,CAAC;AAC9F,CAAC;AAED,SAAS,6BAA6B,CACpC,OAA8B;IAE9B,MAAM,MAAM,GAAG,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAChD,IAAI,CAAC,MAAM,CAAC,EAAE;QAAE,OAAO,MAAM,CAAC;IAC9B,MAAM,QAAQ,GAAG,mBAAmB,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IAC1E,IAAI,CAAC,QAAQ,CAAC,EAAE;QAAE,OAAO,QAAQ,CAAC;IAClC,MAAM,mBAAmB,GAAG,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC;IACvD,MAAM,QAAQ,GAA2B,MAAM,CAAC,MAAM,CAAC;QACrD,GAAG,OAAO,CAAC,QAAQ;QACnB,QAAQ,EAAE,CAAC,EAAM,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC;KACrF,CAAC,CAAC;IACH,MAAM,eAAe,GAAG,OAAO,CAAC,KAAK,KAAK,SAAS,CAAC;IACpD,MAAM,mBAAmB,GAAG,OAAO,CAAC,gBAAgB,KAAK,SAAS,CAAC;IACnE,MAAM,OAAO,GAAG,wBAAwB,CAEtC;QACA,WAAW,EAAE,OAAO;QACpB,iBAAiB,EAAE,gBAAgB;QACnC,OAAO,EAAE,wBAAwB,CAAC,MAAM,CAAC,KAAK,EAAE;YAC9C,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,YAAY,IAAI,IAAI,CAAC;YACjE,OAAO,EAAE,OAAO,CAAC,gBAAgB,KAAK,SAAS;gBAC7C,CAAC,CAAC,OAAO,CAAC,gBAAgB;gBAC1B,CAAC,CAAC,OAAO,CAAC,uBAAuB,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,YAAY,IAAI,IAAI;SACrF,CAAC;QACF,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,oBAAoB,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC;QACrF,SAAS,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,CAAC,wBAAwB,CAAC,MAAM,CAAC,KAAK,EAAE;YACxE,QAAQ,EAAE,eAAe,IAAI,OAAO,CAAC,QAAQ,KAAK,IAAI;gBACpD,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ;gBAC7B,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ;YAC/B,MAAM,EAAE,eAAe,IAAI,OAAO,CAAC,QAAQ,KAAK,IAAI;gBAClD,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM;gBAC3B,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM;YAC7B,OAAO,EAAE,mBAAmB,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO;SACjF,CAAC;QACF,MAAM,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE;YAC7B,IAAI,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;gBACtE,OAAO,CAAC,aAAa,EAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;YAClE,CAAC;YACD,IAAI,QAAQ,CAAC,MAAM,CAAC,OAAO,KAAK,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACxD,OAAO,CAAC,wBAAwB,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YAC9D,CAAC;QACH,CAAC;QACD,QAAQ,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,sBAAsB,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC;KACvF,CAAC,CAAC;IACH,IAAI,CAAC,OAAO,CAAC,EAAE;QAAE,OAAO,OAAO,CAAC;IAChC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,4BAA4B,CACxD,OAAO,EAAE,MAAM,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,eAAe,EAAE,mBAAmB,CAC3E,EAAE,CAAC;AACN,CAAC;AAED,MAAM,UAAU,iBAAiB,CAC/B,KAA4B,EAC5B,WAAW,GAA8B,UAAU;IAEnD,IAAI,KAAK,CAAC,GAAG,KAAK,MAAM;QAAE,OAAO,OAAO,CAAC;IACzC,IAAI,KAAK,CAAC,GAAG,KAAK,KAAK;QAAE,OAAO,MAAM,CAAC;IACvC,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO;QAAE,OAAO,OAAO,CAAC;IACnE,IAAI,WAAW,KAAK,YAAY,IAAI,KAAK,CAAC,GAAG,KAAK,OAAO;QAAE,OAAO,MAAM,CAAC;IACzE,IAAI,WAAW,KAAK,YAAY,IAAI,KAAK,CAAC,GAAG,KAAK,MAAM;QAAE,OAAO,UAAU,CAAC;IAC5E,IAAI,WAAW,KAAK,UAAU,IAAI,KAAK,CAAC,GAAG,KAAK,MAAM;QAAE,OAAO,MAAM,CAAC;IACtE,IAAI,WAAW,KAAK,UAAU,IAAI,KAAK,CAAC,GAAG,KAAK,IAAI;QAAE,OAAO,UAAU,CAAC;IACxE,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,4BAA4B;IACvB,QAAQ,CAAwB;IAChC,OAAO,CAAe;IACtB,QAAQ,CAAqF;IAC7F,gBAAgB,CAAU;IAC1B,oBAAoB,CAAU;IAEvC,YACE,OAA8B,EAAE,MAAoB,EACpD,OAA2F,EAC3F,eAAwB,EAAE,mBAA4B;QAEtD,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,gBAAgB,GAAG,eAAe,CAAC;QACxC,IAAI,CAAC,oBAAoB,GAAG,mBAAmB,CAAC;IAClD,CAAC;IAEM,WAAW,KAA4C,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAE5F,oBAAoB,CAAC,MAG3B;QACC,IAAI,IAAI,CAAC,gBAAgB,KAAK,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,CAAC;eACrD,IAAI,CAAC,oBAAoB,KAAK,CAAC,MAAM,CAAC,gBAAgB,KAAK,SAAS,CAAC,EAAE,CAAC;YAC3E,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE;oBACzB,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,2BAA2B;oBACxD,OAAO,EAAE,4EAA4E;iBACtF,EAAE,CAAC;QACN,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC;QAChD,MAAM,YAAY,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC;QACvG,MAAM,MAAM,GAAG,YAAY,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;QACvC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,wBAAwB,CAAC,IAAI,CAAC,OAAO,EAAE;YAC1E,QAAQ,EAAE,YAAY;YACtB,MAAM,EAAE,IAAI,CAAC,gBAAgB,IAAI,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,MAAM;gBACrE,CAAC,CAAC,MAAM;gBACR,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM;YAC1B,OAAO,EAAE,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,gBAAgB,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO;SAC9F,CAAC,CAAC,CAAC;QACJ,IAAI,MAAM,CAAC,EAAE;YAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC;QAC1C,OAAO,MAAM,CAAC;IAChB,CAAC;IAEM,WAAW,CAAC,KAA0B;QAC3C,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;IAEM,mBAAmB,CAAC,KAA4B;QACrD,MAAM,KAAK,GAAG,iBAAiB,CAAK,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;QACtE,IAAI,KAAK,KAAK,IAAI;YAAE,OAAO,KAAK,CAAC;QACjC,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;CACF;AAED,SAAS,gBAAgB,CAAsB,KAA0B;IACvE,OAAO,KAAK,KAAK,OAAO,IAAI,CAAC,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC;QAC/E,CAAC,CAAC,QAAQ;QACV,CAAC,CAAC,UAAU,CAAC;AACjB,CAAC;AAED,SAAS,QAAQ,CAAsB,KAAgB;IACrD,OAAO,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACvC,CAAC"}
|
package/dist/range-calendar.d.ts
CHANGED
|
@@ -1,3 +1,2 @@
|
|
|
1
1
|
export { createDateRangePicker as createRangeCalendar, tryCreateDateRangePicker as tryCreateRangeCalendar, } from './date-range-picker.js';
|
|
2
2
|
export type { DateRangePickerConnection as RangeCalendarConnection, DateRangePickerControlledValues as RangeCalendarControlledValues, DateRangePickerOptions as RangeCalendarOptions, } from './date-range-picker.js';
|
|
3
|
-
//# sourceMappingURL=range-calendar.d.ts.map
|
package/dist/rating.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { type FacadeConnection } from '@sectile/core/adapter-runtime';
|
|
2
2
|
import type { Result, StableID } from '@sectile/core';
|
|
3
|
-
import type { RatingEvent, RatingState } from '@sectile/core/rating';
|
|
4
3
|
import type { RevisionSnapshot } from '@sectile/core/revision';
|
|
5
|
-
import { type
|
|
4
|
+
import { type RatingEvent, type RatingState } from '@sectile/core/rating';
|
|
5
|
+
import type { RadioGroupOptions } from './radio-group.js';
|
|
6
6
|
import type { TerminalKeyboardInput } from './keyboard.js';
|
|
7
7
|
export type RatingOptions<ID extends StableID = StableID> = Omit<RadioGroupOptions<ID>, 'orientation' | 'onValueChange'> & {
|
|
8
8
|
readonly clearable?: boolean;
|
|
@@ -20,4 +20,3 @@ export interface RatingConnection<ID extends StableID = StableID> {
|
|
|
20
20
|
}
|
|
21
21
|
export declare function createRating<ID extends StableID>(options: RatingOptions<ID>): FacadeConnection<RatingConnection<ID>>;
|
|
22
22
|
export declare function tryCreateRating<ID extends StableID>(options: RatingOptions<ID>): Result<FacadeConnection<RatingConnection<ID>>>;
|
|
23
|
-
//# sourceMappingURL=rating.d.ts.map
|