@sectile/core 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 +44 -0
- package/dist/accordion.d.ts.map +1 -0
- package/dist/accordion.js +87 -0
- package/dist/accordion.js.map +1 -0
- package/dist/alert-dialog.d.ts +19 -0
- package/dist/alert-dialog.d.ts.map +1 -0
- package/dist/alert-dialog.js +10 -0
- package/dist/alert-dialog.js.map +1 -0
- package/dist/calendar.d.ts +3 -0
- package/dist/calendar.d.ts.map +1 -0
- package/dist/calendar.js +3 -0
- package/dist/calendar.js.map +1 -0
- package/dist/carousel.d.ts +41 -0
- package/dist/carousel.d.ts.map +1 -0
- package/dist/carousel.js +55 -0
- package/dist/carousel.js.map +1 -0
- package/dist/cascade-select.d.ts +48 -0
- package/dist/cascade-select.d.ts.map +1 -0
- package/dist/cascade-select.js +148 -0
- package/dist/cascade-select.js.map +1 -0
- package/dist/checkbox-group.d.ts +13 -0
- package/dist/checkbox-group.d.ts.map +1 -0
- package/dist/checkbox-group.js +16 -0
- package/dist/checkbox-group.js.map +1 -0
- package/dist/checkbox.d.ts +3 -0
- package/dist/checkbox.d.ts.map +1 -0
- package/dist/checkbox.js +3 -0
- package/dist/checkbox.js.map +1 -0
- package/dist/collection-window.d.ts +51 -0
- package/dist/collection-window.d.ts.map +1 -0
- package/dist/collection-window.js +111 -0
- package/dist/collection-window.js.map +1 -0
- package/dist/color-picker.d.ts +101 -0
- package/dist/color-picker.d.ts.map +1 -0
- package/dist/color-picker.js +503 -0
- package/dist/color-picker.js.map +1 -0
- package/dist/combobox.d.ts +17 -0
- package/dist/combobox.d.ts.map +1 -0
- package/dist/combobox.js +46 -0
- package/dist/combobox.js.map +1 -0
- package/dist/date-field.d.ts +62 -0
- package/dist/date-field.d.ts.map +1 -0
- package/dist/date-field.js +245 -0
- package/dist/date-field.js.map +1 -0
- package/dist/date-picker.d.ts +76 -0
- package/dist/date-picker.d.ts.map +1 -0
- package/dist/date-picker.js +261 -0
- package/dist/date-picker.js.map +1 -0
- package/dist/date-range-field.d.ts +47 -0
- package/dist/date-range-field.d.ts.map +1 -0
- package/dist/date-range-field.js +66 -0
- package/dist/date-range-field.js.map +1 -0
- package/dist/date-range-picker.d.ts +29 -0
- package/dist/date-range-picker.d.ts.map +1 -0
- package/dist/date-range-picker.js +89 -0
- package/dist/date-range-picker.js.map +1 -0
- package/dist/date-time-field.d.ts +57 -0
- package/dist/date-time-field.d.ts.map +1 -0
- package/dist/date-time-field.js +267 -0
- package/dist/date-time-field.js.map +1 -0
- package/dist/date-time-picker.d.ts +71 -0
- package/dist/date-time-picker.d.ts.map +1 -0
- package/dist/date-time-picker.js +156 -0
- package/dist/date-time-picker.js.map +1 -0
- package/dist/date-time-range-picker.d.ts +87 -0
- package/dist/date-time-range-picker.d.ts.map +1 -0
- package/dist/date-time-range-picker.js +252 -0
- package/dist/date-time-range-picker.js.map +1 -0
- package/dist/dialog.d.ts +17 -0
- package/dist/dialog.d.ts.map +1 -0
- package/dist/dialog.js +6 -0
- package/dist/dialog.js.map +1 -0
- package/dist/disclosure.d.ts +3 -0
- package/dist/disclosure.d.ts.map +1 -0
- package/dist/disclosure.js +3 -0
- package/dist/disclosure.js.map +1 -0
- package/dist/drawer.d.ts +24 -0
- package/dist/drawer.d.ts.map +1 -0
- package/dist/drawer.js +36 -0
- package/dist/drawer.js.map +1 -0
- package/dist/editable.d.ts +29 -0
- package/dist/editable.d.ts.map +1 -0
- package/dist/editable.js +34 -0
- package/dist/editable.js.map +1 -0
- package/dist/feed.d.ts +49 -0
- package/dist/feed.d.ts.map +1 -0
- package/dist/feed.js +124 -0
- package/dist/feed.js.map +1 -0
- package/dist/form.d.ts +135 -0
- package/dist/form.d.ts.map +1 -0
- package/dist/form.js +627 -0
- package/dist/form.js.map +1 -0
- package/dist/index.d.ts +37 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -0
- package/dist/interaction.d.ts +15 -0
- package/dist/interaction.d.ts.map +1 -0
- package/dist/interaction.js +42 -0
- package/dist/interaction.js.map +1 -0
- package/dist/internal/composites/calendar.d.ts +36 -0
- package/dist/internal/composites/calendar.d.ts.map +1 -0
- package/dist/internal/composites/calendar.js +143 -0
- package/dist/internal/composites/calendar.js.map +1 -0
- package/dist/internal/composites/combobox.d.ts +42 -0
- package/dist/internal/composites/combobox.d.ts.map +1 -0
- package/dist/internal/composites/combobox.js +188 -0
- package/dist/internal/composites/combobox.js.map +1 -0
- package/dist/internal/composites/grid-control.d.ts +37 -0
- package/dist/internal/composites/grid-control.d.ts.map +1 -0
- package/dist/internal/composites/grid-control.js +90 -0
- package/dist/internal/composites/grid-control.js.map +1 -0
- package/dist/internal/composites/linear-action.d.ts +36 -0
- package/dist/internal/composites/linear-action.d.ts.map +1 -0
- package/dist/internal/composites/linear-action.js +96 -0
- package/dist/internal/composites/linear-action.js.map +1 -0
- package/dist/internal/composites/linear-choice.d.ts +41 -0
- package/dist/internal/composites/linear-choice.d.ts.map +1 -0
- package/dist/internal/composites/linear-choice.js +139 -0
- package/dist/internal/composites/linear-choice.js.map +1 -0
- package/dist/internal/composites/listbox.d.ts +52 -0
- package/dist/internal/composites/listbox.d.ts.map +1 -0
- package/dist/internal/composites/listbox.js +251 -0
- package/dist/internal/composites/listbox.js.map +1 -0
- package/dist/internal/composites/menu.d.ts +29 -0
- package/dist/internal/composites/menu.d.ts.map +1 -0
- package/dist/internal/composites/menu.js +76 -0
- package/dist/internal/composites/menu.js.map +1 -0
- package/dist/internal/composites/popup.d.ts +21 -0
- package/dist/internal/composites/popup.d.ts.map +1 -0
- package/dist/internal/composites/popup.js +10 -0
- package/dist/internal/composites/popup.js.map +1 -0
- package/dist/internal/composites/slider.d.ts +21 -0
- package/dist/internal/composites/slider.d.ts.map +1 -0
- package/dist/internal/composites/slider.js +73 -0
- package/dist/internal/composites/slider.js.map +1 -0
- package/dist/internal/composites/tree-grid.d.ts +67 -0
- package/dist/internal/composites/tree-grid.d.ts.map +1 -0
- package/dist/internal/composites/tree-grid.js +281 -0
- package/dist/internal/composites/tree-grid.js.map +1 -0
- package/dist/internal/composites/tree-view.d.ts +42 -0
- package/dist/internal/composites/tree-view.d.ts.map +1 -0
- package/dist/internal/composites/tree-view.js +196 -0
- package/dist/internal/composites/tree-view.js.map +1 -0
- package/dist/internal/editing/text.d.ts +66 -0
- package/dist/internal/editing/text.d.ts.map +1 -0
- package/dist/internal/editing/text.js +248 -0
- package/dist/internal/editing/text.js.map +1 -0
- package/dist/internal/kernel/decimal.d.ts +22 -0
- package/dist/internal/kernel/decimal.d.ts.map +1 -0
- package/dist/internal/kernel/decimal.js +137 -0
- package/dist/internal/kernel/decimal.js.map +1 -0
- package/dist/internal/kernel/foundation.d.ts +12 -0
- package/dist/internal/kernel/foundation.d.ts.map +1 -0
- package/dist/internal/kernel/foundation.js +132 -0
- package/dist/internal/kernel/foundation.js.map +1 -0
- package/dist/internal/kernel/indexed-sequence.d.ts +26 -0
- package/dist/internal/kernel/indexed-sequence.d.ts.map +1 -0
- package/dist/internal/kernel/indexed-sequence.js +117 -0
- package/dist/internal/kernel/indexed-sequence.js.map +1 -0
- package/dist/internal/kernel/machine.d.ts +8 -0
- package/dist/internal/kernel/machine.d.ts.map +1 -0
- package/dist/internal/kernel/machine.js +6 -0
- package/dist/internal/kernel/machine.js.map +1 -0
- package/dist/internal/runtime/revision.d.ts +23 -0
- package/dist/internal/runtime/revision.d.ts.map +1 -0
- package/dist/internal/runtime/revision.js +76 -0
- package/dist/internal/runtime/revision.js.map +1 -0
- package/dist/internal/state/checked.d.ts +22 -0
- package/dist/internal/state/checked.d.ts.map +1 -0
- package/dist/internal/state/checked.js +33 -0
- package/dist/internal/state/checked.js.map +1 -0
- package/dist/internal/state/cursor.d.ts +13 -0
- package/dist/internal/state/cursor.d.ts.map +1 -0
- package/dist/internal/state/cursor.js +24 -0
- package/dist/internal/state/cursor.js.map +1 -0
- package/dist/internal/state/expansion.d.ts +8 -0
- package/dist/internal/state/expansion.d.ts.map +1 -0
- package/dist/internal/state/expansion.js +23 -0
- package/dist/internal/state/expansion.js.map +1 -0
- package/dist/internal/state/open-state.d.ts +17 -0
- package/dist/internal/state/open-state.d.ts.map +1 -0
- package/dist/internal/state/open-state.js +29 -0
- package/dist/internal/state/open-state.js.map +1 -0
- package/dist/internal/state/selection.d.ts +23 -0
- package/dist/internal/state/selection.d.ts.map +1 -0
- package/dist/internal/state/selection.js +110 -0
- package/dist/internal/state/selection.js.map +1 -0
- package/dist/layer-stack.d.ts +47 -0
- package/dist/layer-stack.d.ts.map +1 -0
- package/dist/layer-stack.js +115 -0
- package/dist/layer-stack.js.map +1 -0
- package/dist/listbox.d.ts +3 -0
- package/dist/listbox.d.ts.map +1 -0
- package/dist/listbox.js +3 -0
- package/dist/listbox.js.map +1 -0
- package/dist/menu-button.d.ts +5 -0
- package/dist/menu-button.d.ts.map +1 -0
- package/dist/menu-button.js +5 -0
- package/dist/menu-button.js.map +1 -0
- package/dist/menu.d.ts +10 -0
- package/dist/menu.d.ts.map +1 -0
- package/dist/menu.js +9 -0
- package/dist/menu.js.map +1 -0
- package/dist/menubar.d.ts +5 -0
- package/dist/menubar.d.ts.map +1 -0
- package/dist/menubar.js +5 -0
- package/dist/menubar.js.map +1 -0
- package/dist/month-picker.d.ts +5 -0
- package/dist/month-picker.d.ts.map +1 -0
- package/dist/month-picker.js +4 -0
- package/dist/month-picker.js.map +1 -0
- package/dist/month-range-picker.d.ts +6 -0
- package/dist/month-range-picker.d.ts.map +1 -0
- package/dist/month-range-picker.js +5 -0
- package/dist/month-range-picker.js.map +1 -0
- package/dist/multi-thumb-slider.d.ts +36 -0
- package/dist/multi-thumb-slider.d.ts.map +1 -0
- package/dist/multi-thumb-slider.js +72 -0
- package/dist/multi-thumb-slider.js.map +1 -0
- package/dist/navigation-menu.d.ts +6 -0
- package/dist/navigation-menu.d.ts.map +1 -0
- package/dist/navigation-menu.js +5 -0
- package/dist/navigation-menu.js.map +1 -0
- package/dist/number-field.d.ts +51 -0
- package/dist/number-field.d.ts.map +1 -0
- package/dist/number-field.js +461 -0
- package/dist/number-field.js.map +1 -0
- package/dist/pagination.d.ts +65 -0
- package/dist/pagination.d.ts.map +1 -0
- package/dist/pagination.js +197 -0
- package/dist/pagination.js.map +1 -0
- package/dist/pin-input.d.ts +31 -0
- package/dist/pin-input.d.ts.map +1 -0
- package/dist/pin-input.js +53 -0
- package/dist/pin-input.js.map +1 -0
- package/dist/popover.d.ts +17 -0
- package/dist/popover.d.ts.map +1 -0
- package/dist/popover.js +6 -0
- package/dist/popover.js.map +1 -0
- package/dist/quantity-field.d.ts +59 -0
- package/dist/quantity-field.d.ts.map +1 -0
- package/dist/quantity-field.js +254 -0
- package/dist/quantity-field.js.map +1 -0
- package/dist/radio-group.d.ts +23 -0
- package/dist/radio-group.d.ts.map +1 -0
- package/dist/radio-group.js +20 -0
- package/dist/radio-group.js.map +1 -0
- package/dist/range-calendar.d.ts +6 -0
- package/dist/range-calendar.d.ts.map +1 -0
- package/dist/range-calendar.js +5 -0
- package/dist/range-calendar.js.map +1 -0
- package/dist/rating.d.ts +18 -0
- package/dist/rating.d.ts.map +1 -0
- package/dist/rating.js +19 -0
- package/dist/rating.js.map +1 -0
- package/dist/reorder.d.ts +47 -0
- package/dist/reorder.d.ts.map +1 -0
- package/dist/reorder.js +110 -0
- package/dist/reorder.js.map +1 -0
- package/dist/result.d.ts +10 -0
- package/dist/result.d.ts.map +1 -0
- package/dist/result.js +19 -0
- package/dist/result.js.map +1 -0
- package/dist/revision.d.ts +3 -0
- package/dist/revision.d.ts.map +1 -0
- package/dist/revision.js +3 -0
- package/dist/revision.js.map +1 -0
- package/dist/select.d.ts +31 -0
- package/dist/select.d.ts.map +1 -0
- package/dist/select.js +32 -0
- package/dist/select.js.map +1 -0
- package/dist/shared.d.ts +43 -0
- package/dist/shared.d.ts.map +1 -0
- package/dist/shared.js +3 -0
- package/dist/shared.js.map +1 -0
- package/dist/slider.d.ts +3 -0
- package/dist/slider.d.ts.map +1 -0
- package/dist/slider.js +3 -0
- package/dist/slider.js.map +1 -0
- package/dist/spin-button.d.ts +31 -0
- package/dist/spin-button.d.ts.map +1 -0
- package/dist/spin-button.js +65 -0
- package/dist/spin-button.js.map +1 -0
- package/dist/stepper.d.ts +18 -0
- package/dist/stepper.d.ts.map +1 -0
- package/dist/stepper.js +16 -0
- package/dist/stepper.js.map +1 -0
- package/dist/structures/grid.d.ts +29 -0
- package/dist/structures/grid.d.ts.map +1 -0
- package/dist/structures/grid.js +202 -0
- package/dist/structures/grid.js.map +1 -0
- package/dist/structures/range.d.ts +41 -0
- package/dist/structures/range.d.ts.map +1 -0
- package/dist/structures/range.js +249 -0
- package/dist/structures/range.js.map +1 -0
- package/dist/structures/sequence.d.ts +19 -0
- package/dist/structures/sequence.d.ts.map +1 -0
- package/dist/structures/sequence.js +28 -0
- package/dist/structures/sequence.js.map +1 -0
- package/dist/structures/tree.d.ts +33 -0
- package/dist/structures/tree.d.ts.map +1 -0
- package/dist/structures/tree.js +238 -0
- package/dist/structures/tree.js.map +1 -0
- package/dist/switch.d.ts +21 -0
- package/dist/switch.d.ts.map +1 -0
- package/dist/switch.js +8 -0
- package/dist/switch.js.map +1 -0
- package/dist/tabs.d.ts +16 -0
- package/dist/tabs.d.ts.map +1 -0
- package/dist/tabs.js +27 -0
- package/dist/tabs.js.map +1 -0
- package/dist/tags-input.d.ts +43 -0
- package/dist/tags-input.d.ts.map +1 -0
- package/dist/tags-input.js +48 -0
- package/dist/tags-input.js.map +1 -0
- package/dist/text.d.ts +4 -0
- package/dist/text.d.ts.map +1 -0
- package/dist/text.js +4 -0
- package/dist/text.js.map +1 -0
- package/dist/time-field.d.ts +48 -0
- package/dist/time-field.d.ts.map +1 -0
- package/dist/time-field.js +157 -0
- package/dist/time-field.js.map +1 -0
- package/dist/time-range-field.d.ts +53 -0
- package/dist/time-range-field.d.ts.map +1 -0
- package/dist/time-range-field.js +75 -0
- package/dist/time-range-field.js.map +1 -0
- package/dist/timer.d.ts +37 -0
- package/dist/timer.d.ts.map +1 -0
- package/dist/timer.js +84 -0
- package/dist/timer.js.map +1 -0
- package/dist/toast.d.ts +56 -0
- package/dist/toast.d.ts.map +1 -0
- package/dist/toast.js +87 -0
- package/dist/toast.js.map +1 -0
- package/dist/toggle-button.d.ts +20 -0
- package/dist/toggle-button.d.ts.map +1 -0
- package/dist/toggle-button.js +20 -0
- package/dist/toggle-button.js.map +1 -0
- package/dist/toggle-group.d.ts +25 -0
- package/dist/toggle-group.d.ts.map +1 -0
- package/dist/toggle-group.js +30 -0
- package/dist/toggle-group.js.map +1 -0
- package/dist/toolbar.d.ts +3 -0
- package/dist/toolbar.d.ts.map +1 -0
- package/dist/toolbar.js +3 -0
- package/dist/toolbar.js.map +1 -0
- package/dist/tooltip.d.ts +3 -0
- package/dist/tooltip.d.ts.map +1 -0
- package/dist/tooltip.js +3 -0
- package/dist/tooltip.js.map +1 -0
- package/dist/tree-grid.d.ts +13 -0
- package/dist/tree-grid.d.ts.map +1 -0
- package/dist/tree-grid.js +20 -0
- package/dist/tree-grid.js.map +1 -0
- package/dist/tree-view.d.ts +3 -0
- package/dist/tree-view.d.ts.map +1 -0
- package/dist/tree-view.js +3 -0
- package/dist/tree-view.js.map +1 -0
- package/dist/units.d.ts +77 -0
- package/dist/units.d.ts.map +1 -0
- package/dist/units.js +512 -0
- package/dist/units.js.map +1 -0
- package/dist/window-splitter.d.ts +3 -0
- package/dist/window-splitter.d.ts.map +1 -0
- package/dist/window-splitter.js +3 -0
- package/dist/window-splitter.js.map +1 -0
- package/dist/year-picker.d.ts +10 -0
- package/dist/year-picker.d.ts.map +1 -0
- package/dist/year-picker.js +27 -0
- package/dist/year-picker.js.map +1 -0
- package/dist/year-range-picker.d.ts +6 -0
- package/dist/year-range-picker.d.ts.map +1 -0
- package/dist/year-range-picker.js +5 -0
- package/dist/year-range-picker.js.map +1 -0
- package/package.json +7 -2
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import type { Result } from '../../shared.js';
|
|
2
|
+
export type TextSelectionDirection = 'none' | 'forward' | 'backward';
|
|
3
|
+
export interface TextSelectionInput {
|
|
4
|
+
readonly anchorCodeUnitOffset: number;
|
|
5
|
+
readonly focusCodeUnitOffset: number;
|
|
6
|
+
}
|
|
7
|
+
export interface TextSelection extends TextSelectionInput {
|
|
8
|
+
readonly startCodeUnitOffset: number;
|
|
9
|
+
readonly endCodeUnitOffset: number;
|
|
10
|
+
readonly direction: TextSelectionDirection;
|
|
11
|
+
}
|
|
12
|
+
export interface TextSnapshot {
|
|
13
|
+
readonly text: string;
|
|
14
|
+
readonly selection: TextSelection;
|
|
15
|
+
}
|
|
16
|
+
export interface TextComposition {
|
|
17
|
+
readonly baseline: TextSnapshot;
|
|
18
|
+
readonly startCodeUnitOffset: number;
|
|
19
|
+
readonly endCodeUnitOffset: number;
|
|
20
|
+
readonly composingText: string;
|
|
21
|
+
}
|
|
22
|
+
export interface TextEditingState {
|
|
23
|
+
readonly snapshot: TextSnapshot;
|
|
24
|
+
readonly composition: TextComposition | null;
|
|
25
|
+
}
|
|
26
|
+
export type TextEvent = {
|
|
27
|
+
readonly type: 'replace';
|
|
28
|
+
readonly startCodeUnitOffset: number;
|
|
29
|
+
readonly endCodeUnitOffset: number;
|
|
30
|
+
readonly text: string;
|
|
31
|
+
readonly selection: TextSelectionInput;
|
|
32
|
+
} | {
|
|
33
|
+
readonly type: 'composition-start';
|
|
34
|
+
readonly startCodeUnitOffset: number;
|
|
35
|
+
readonly endCodeUnitOffset: number;
|
|
36
|
+
readonly text: string;
|
|
37
|
+
readonly selection: TextSelectionInput;
|
|
38
|
+
} | {
|
|
39
|
+
readonly type: 'composition-update';
|
|
40
|
+
readonly text: string;
|
|
41
|
+
readonly selection: TextSelectionInput;
|
|
42
|
+
} | {
|
|
43
|
+
readonly type: 'composition-commit';
|
|
44
|
+
} | {
|
|
45
|
+
readonly type: 'composition-cancel';
|
|
46
|
+
};
|
|
47
|
+
export interface TextUpdate {
|
|
48
|
+
readonly state: TextEditingState;
|
|
49
|
+
readonly commands: readonly never[];
|
|
50
|
+
}
|
|
51
|
+
export declare function isWellFormedPlainText(text: string): boolean;
|
|
52
|
+
export declare function isTextCodeUnitBoundary(text: string, offset: number): boolean;
|
|
53
|
+
export declare function createTextSnapshot(text: string, selection: TextSelectionInput): TextSnapshot;
|
|
54
|
+
export declare function tryCreateTextSnapshot(text: string, selection: TextSelectionInput): Result<TextSnapshot>;
|
|
55
|
+
export declare function createTextEditingState(text?: string, selection?: TextSelectionInput): TextEditingState;
|
|
56
|
+
export declare function tryCreateTextEditingState(text?: string, selection?: TextSelectionInput): Result<TextEditingState>;
|
|
57
|
+
export declare function normalizeTextEditingState(state: TextEditingState): Result<TextEditingState>;
|
|
58
|
+
export declare function applyTextEvent(state: TextEditingState, event: TextEvent): Result<TextUpdate>;
|
|
59
|
+
export declare function slicePlainText(text: string, startCodeUnitOffset: number, endCodeUnitOffset: number): Result<string>;
|
|
60
|
+
export declare function replacePlainText(text: string, startCodeUnitOffset: number, endCodeUnitOffset: number, replacement: string): Result<string>;
|
|
61
|
+
export declare function replaceTextState(state: TextEditingState, startCodeUnitOffset: number, endCodeUnitOffset: number, replacement: string, selection: TextSelectionInput): Result<TextEditingState>;
|
|
62
|
+
export declare function startTextComposition(state: TextEditingState, startCodeUnitOffset: number, endCodeUnitOffset: number, composingText: string, selection: TextSelectionInput): Result<TextEditingState>;
|
|
63
|
+
export declare function updateTextComposition(state: TextEditingState, composingText: string, selection: TextSelectionInput): Result<TextEditingState>;
|
|
64
|
+
export declare function commitTextComposition(state: TextEditingState): Result<TextEditingState>;
|
|
65
|
+
export declare function cancelTextComposition(state: TextEditingState): Result<TextEditingState>;
|
|
66
|
+
//# sourceMappingURL=text.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../../src/internal/editing/text.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,248 @@
|
|
|
1
|
+
import { unwrap } from '../../result.js';
|
|
2
|
+
import { fail, isWellFormedUTF16, ok } from '../kernel/foundation.js';
|
|
3
|
+
import { createMachineUpdate } from '../kernel/machine.js';
|
|
4
|
+
export function isWellFormedPlainText(text) {
|
|
5
|
+
return typeof text === 'string' && isWellFormedUTF16(text);
|
|
6
|
+
}
|
|
7
|
+
export function isTextCodeUnitBoundary(text, offset) {
|
|
8
|
+
if (!isWellFormedPlainText(text) || !Number.isSafeInteger(offset))
|
|
9
|
+
return false;
|
|
10
|
+
if (offset < 0 || offset > text.length)
|
|
11
|
+
return false;
|
|
12
|
+
if (offset === 0 || offset === text.length)
|
|
13
|
+
return true;
|
|
14
|
+
return !(isHighSurrogate(text.charCodeAt(offset - 1)) && isLowSurrogate(text.charCodeAt(offset)));
|
|
15
|
+
}
|
|
16
|
+
export function createTextSnapshot(text, selection) {
|
|
17
|
+
return unwrap(tryCreateTextSnapshot(text, selection));
|
|
18
|
+
}
|
|
19
|
+
export function tryCreateTextSnapshot(text, selection) {
|
|
20
|
+
return createSnapshot(text, selection, 'construction');
|
|
21
|
+
}
|
|
22
|
+
export function createTextEditingState(text = '', selection = {
|
|
23
|
+
anchorCodeUnitOffset: 0,
|
|
24
|
+
focusCodeUnitOffset: 0,
|
|
25
|
+
}) {
|
|
26
|
+
return unwrap(tryCreateTextEditingState(text, selection));
|
|
27
|
+
}
|
|
28
|
+
export function tryCreateTextEditingState(text = '', selection = {
|
|
29
|
+
anchorCodeUnitOffset: 0,
|
|
30
|
+
focusCodeUnitOffset: 0,
|
|
31
|
+
}) {
|
|
32
|
+
const snapshot = createSnapshot(text, selection, 'construction');
|
|
33
|
+
return snapshot.ok ? ok(stateFromSnapshot(snapshot.value)) : snapshot;
|
|
34
|
+
}
|
|
35
|
+
export function normalizeTextEditingState(state) {
|
|
36
|
+
return normalizeEditingState(state, 'construction');
|
|
37
|
+
}
|
|
38
|
+
export function applyTextEvent(state, event) {
|
|
39
|
+
const normalized = normalizeEditingState(state, 'transition-rejection');
|
|
40
|
+
if (!normalized.ok)
|
|
41
|
+
return normalized;
|
|
42
|
+
if (!isObject(event) || typeof event.type !== 'string') {
|
|
43
|
+
return fail('transition-rejection', 'invalid-text-event', 'Text event must be a supported discriminated event object.');
|
|
44
|
+
}
|
|
45
|
+
let next;
|
|
46
|
+
switch (event.type) {
|
|
47
|
+
case 'replace':
|
|
48
|
+
next = replaceTextState(normalized.value, event.startCodeUnitOffset, event.endCodeUnitOffset, event.text, event.selection);
|
|
49
|
+
break;
|
|
50
|
+
case 'composition-start':
|
|
51
|
+
next = startTextComposition(normalized.value, event.startCodeUnitOffset, event.endCodeUnitOffset, event.text, event.selection);
|
|
52
|
+
break;
|
|
53
|
+
case 'composition-update':
|
|
54
|
+
next = updateTextComposition(normalized.value, event.text, event.selection);
|
|
55
|
+
break;
|
|
56
|
+
case 'composition-commit':
|
|
57
|
+
next = commitTextComposition(normalized.value);
|
|
58
|
+
break;
|
|
59
|
+
case 'composition-cancel':
|
|
60
|
+
next = cancelTextComposition(normalized.value);
|
|
61
|
+
break;
|
|
62
|
+
default:
|
|
63
|
+
return fail('transition-rejection', 'invalid-text-event', 'Text event type is not supported.');
|
|
64
|
+
}
|
|
65
|
+
return next.ok
|
|
66
|
+
? createMachineUpdate(next.value)
|
|
67
|
+
: next;
|
|
68
|
+
}
|
|
69
|
+
export function slicePlainText(text, startCodeUnitOffset, endCodeUnitOffset) {
|
|
70
|
+
const range = validateRange(text, startCodeUnitOffset, endCodeUnitOffset, 'construction');
|
|
71
|
+
return range.ok
|
|
72
|
+
? ok(text.slice(startCodeUnitOffset, endCodeUnitOffset))
|
|
73
|
+
: range;
|
|
74
|
+
}
|
|
75
|
+
export function replacePlainText(text, startCodeUnitOffset, endCodeUnitOffset, replacement) {
|
|
76
|
+
return replaceChecked(text, startCodeUnitOffset, endCodeUnitOffset, replacement, 'construction');
|
|
77
|
+
}
|
|
78
|
+
export function replaceTextState(state, startCodeUnitOffset, endCodeUnitOffset, replacement, selection) {
|
|
79
|
+
if (state.composition !== null) {
|
|
80
|
+
return fail('transition-rejection', 'composition-active', 'Stable replacement requires composition to be inactive.');
|
|
81
|
+
}
|
|
82
|
+
const replaced = replaceChecked(state.snapshot.text, startCodeUnitOffset, endCodeUnitOffset, replacement, 'transition-rejection');
|
|
83
|
+
if (!replaced.ok)
|
|
84
|
+
return replaced;
|
|
85
|
+
const snapshot = createSnapshot(replaced.value, selection, 'transition-rejection');
|
|
86
|
+
if (!snapshot.ok)
|
|
87
|
+
return snapshot;
|
|
88
|
+
return ok(sameSnapshot(state.snapshot, snapshot.value) ? state : stateFromSnapshot(snapshot.value));
|
|
89
|
+
}
|
|
90
|
+
export function startTextComposition(state, startCodeUnitOffset, endCodeUnitOffset, composingText, selection) {
|
|
91
|
+
if (state.composition !== null) {
|
|
92
|
+
return fail('transition-rejection', 'composition-active', 'A text composition is already active.');
|
|
93
|
+
}
|
|
94
|
+
const projected = replaceChecked(state.snapshot.text, startCodeUnitOffset, endCodeUnitOffset, composingText, 'transition-rejection');
|
|
95
|
+
if (!projected.ok)
|
|
96
|
+
return projected;
|
|
97
|
+
const snapshot = createSnapshot(projected.value, selection, 'transition-rejection');
|
|
98
|
+
if (!snapshot.ok)
|
|
99
|
+
return snapshot;
|
|
100
|
+
const composition = freezeComposition({
|
|
101
|
+
baseline: state.snapshot,
|
|
102
|
+
startCodeUnitOffset,
|
|
103
|
+
endCodeUnitOffset,
|
|
104
|
+
composingText,
|
|
105
|
+
});
|
|
106
|
+
return ok(Object.freeze({ snapshot: snapshot.value, composition }));
|
|
107
|
+
}
|
|
108
|
+
export function updateTextComposition(state, composingText, selection) {
|
|
109
|
+
const current = state.composition;
|
|
110
|
+
if (current === null) {
|
|
111
|
+
return fail('transition-rejection', 'composition-inactive', 'Text composition update requires an active composition.');
|
|
112
|
+
}
|
|
113
|
+
const projected = replaceChecked(current.baseline.text, current.startCodeUnitOffset, current.endCodeUnitOffset, composingText, 'transition-rejection');
|
|
114
|
+
if (!projected.ok)
|
|
115
|
+
return projected;
|
|
116
|
+
const snapshot = createSnapshot(projected.value, selection, 'transition-rejection');
|
|
117
|
+
if (!snapshot.ok)
|
|
118
|
+
return snapshot;
|
|
119
|
+
const composition = freezeComposition({ ...current, composingText });
|
|
120
|
+
return ok(Object.freeze({ snapshot: snapshot.value, composition }));
|
|
121
|
+
}
|
|
122
|
+
export function commitTextComposition(state) {
|
|
123
|
+
if (state.composition === null) {
|
|
124
|
+
return fail('transition-rejection', 'composition-inactive', 'Text composition commit requires an active composition.');
|
|
125
|
+
}
|
|
126
|
+
return ok(stateFromSnapshot(state.snapshot));
|
|
127
|
+
}
|
|
128
|
+
export function cancelTextComposition(state) {
|
|
129
|
+
if (state.composition === null) {
|
|
130
|
+
return fail('transition-rejection', 'composition-inactive', 'Text composition cancel requires an active composition.');
|
|
131
|
+
}
|
|
132
|
+
return ok(stateFromSnapshot(state.composition.baseline));
|
|
133
|
+
}
|
|
134
|
+
function createSnapshot(text, selection, errorClass) {
|
|
135
|
+
if (!isWellFormedPlainText(text)) {
|
|
136
|
+
return fail(errorClass, 'ill-formed-text', 'Plain text must be a well-formed UTF-16 string.');
|
|
137
|
+
}
|
|
138
|
+
if (!isObject(selection)) {
|
|
139
|
+
return fail(errorClass, 'invalid-text-selection', 'Text selection must provide anchor and focus code-unit offsets.');
|
|
140
|
+
}
|
|
141
|
+
const anchorError = validateOffset(text, selection.anchorCodeUnitOffset, 'anchorCodeUnitOffset', errorClass);
|
|
142
|
+
if (anchorError !== null)
|
|
143
|
+
return anchorError;
|
|
144
|
+
const focusError = validateOffset(text, selection.focusCodeUnitOffset, 'focusCodeUnitOffset', errorClass);
|
|
145
|
+
if (focusError !== null)
|
|
146
|
+
return focusError;
|
|
147
|
+
const anchor = selection.anchorCodeUnitOffset;
|
|
148
|
+
const focus = selection.focusCodeUnitOffset;
|
|
149
|
+
const textSelection = Object.freeze({
|
|
150
|
+
anchorCodeUnitOffset: anchor,
|
|
151
|
+
focusCodeUnitOffset: focus,
|
|
152
|
+
startCodeUnitOffset: Math.min(anchor, focus),
|
|
153
|
+
endCodeUnitOffset: Math.max(anchor, focus),
|
|
154
|
+
direction: anchor === focus ? 'none' : anchor < focus ? 'forward' : 'backward',
|
|
155
|
+
});
|
|
156
|
+
return ok(Object.freeze({ text, selection: textSelection }));
|
|
157
|
+
}
|
|
158
|
+
function normalizeEditingState(state, errorClass) {
|
|
159
|
+
if (!isObject(state)) {
|
|
160
|
+
return fail(errorClass, 'invalid-text-state', 'Text editing state must be an object.');
|
|
161
|
+
}
|
|
162
|
+
const snapshot = normalizeSnapshot(state.snapshot, errorClass);
|
|
163
|
+
if (!snapshot.ok)
|
|
164
|
+
return snapshot;
|
|
165
|
+
if (state.composition === null)
|
|
166
|
+
return ok(stateFromSnapshot(snapshot.value));
|
|
167
|
+
if (!isObject(state.composition)) {
|
|
168
|
+
return fail(errorClass, 'invalid-text-composition', 'Text composition must be null or a composition snapshot.');
|
|
169
|
+
}
|
|
170
|
+
const baseline = normalizeSnapshot(state.composition.baseline, errorClass);
|
|
171
|
+
if (!baseline.ok)
|
|
172
|
+
return baseline;
|
|
173
|
+
const projected = replaceChecked(baseline.value.text, state.composition.startCodeUnitOffset, state.composition.endCodeUnitOffset, state.composition.composingText, errorClass);
|
|
174
|
+
if (!projected.ok)
|
|
175
|
+
return projected;
|
|
176
|
+
if (projected.value !== snapshot.value.text) {
|
|
177
|
+
return fail(errorClass, 'inconsistent-composition-snapshot', 'Text composition snapshot must equal its baseline replacement.');
|
|
178
|
+
}
|
|
179
|
+
return ok(Object.freeze({
|
|
180
|
+
snapshot: snapshot.value,
|
|
181
|
+
composition: freezeComposition({
|
|
182
|
+
baseline: baseline.value,
|
|
183
|
+
startCodeUnitOffset: state.composition.startCodeUnitOffset,
|
|
184
|
+
endCodeUnitOffset: state.composition.endCodeUnitOffset,
|
|
185
|
+
composingText: state.composition.composingText,
|
|
186
|
+
}),
|
|
187
|
+
}));
|
|
188
|
+
}
|
|
189
|
+
function normalizeSnapshot(snapshot, errorClass) {
|
|
190
|
+
if (!isObject(snapshot)) {
|
|
191
|
+
return fail(errorClass, 'invalid-text-snapshot', 'Text snapshot must be an object.');
|
|
192
|
+
}
|
|
193
|
+
return createSnapshot(snapshot.text, snapshot.selection, errorClass);
|
|
194
|
+
}
|
|
195
|
+
function replaceChecked(text, startCodeUnitOffset, endCodeUnitOffset, replacement, errorClass) {
|
|
196
|
+
const range = validateRange(text, startCodeUnitOffset, endCodeUnitOffset, errorClass);
|
|
197
|
+
if (!range.ok)
|
|
198
|
+
return range;
|
|
199
|
+
if (!isWellFormedPlainText(replacement)) {
|
|
200
|
+
return fail(errorClass, 'ill-formed-replacement', 'Replacement text must be a well-formed UTF-16 string.');
|
|
201
|
+
}
|
|
202
|
+
return ok(text.slice(0, startCodeUnitOffset) + replacement + text.slice(endCodeUnitOffset));
|
|
203
|
+
}
|
|
204
|
+
function validateRange(text, startCodeUnitOffset, endCodeUnitOffset, errorClass) {
|
|
205
|
+
if (!isWellFormedPlainText(text)) {
|
|
206
|
+
return fail(errorClass, 'ill-formed-text', 'Plain text must be a well-formed UTF-16 string.');
|
|
207
|
+
}
|
|
208
|
+
const startError = validateOffset(text, startCodeUnitOffset, 'startCodeUnitOffset', errorClass);
|
|
209
|
+
if (startError !== null)
|
|
210
|
+
return startError;
|
|
211
|
+
const endError = validateOffset(text, endCodeUnitOffset, 'endCodeUnitOffset', errorClass);
|
|
212
|
+
if (endError !== null)
|
|
213
|
+
return endError;
|
|
214
|
+
if (startCodeUnitOffset > endCodeUnitOffset) {
|
|
215
|
+
return fail(errorClass, 'invalid-text-range', 'Text replacement start must not exceed its end.', { startCodeUnitOffset, endCodeUnitOffset });
|
|
216
|
+
}
|
|
217
|
+
return ok(true);
|
|
218
|
+
}
|
|
219
|
+
function validateOffset(text, offset, name, errorClass) {
|
|
220
|
+
if (!Number.isSafeInteger(offset) || offset < 0 || offset > text.length) {
|
|
221
|
+
return fail(errorClass, 'invalid-text-offset', `${name} must be a safe UTF-16 code-unit offset within the text.`, { [name]: offset, codeUnitLength: text.length });
|
|
222
|
+
}
|
|
223
|
+
if (!isTextCodeUnitBoundary(text, offset)) {
|
|
224
|
+
return fail(errorClass, 'surrogate-boundary', `${name} must not split a UTF-16 surrogate pair.`, { [name]: offset });
|
|
225
|
+
}
|
|
226
|
+
return null;
|
|
227
|
+
}
|
|
228
|
+
function stateFromSnapshot(snapshot) {
|
|
229
|
+
return Object.freeze({ snapshot, composition: null });
|
|
230
|
+
}
|
|
231
|
+
function freezeComposition(composition) {
|
|
232
|
+
return Object.freeze(composition);
|
|
233
|
+
}
|
|
234
|
+
function sameSnapshot(left, right) {
|
|
235
|
+
return (left.text === right.text &&
|
|
236
|
+
left.selection.anchorCodeUnitOffset === right.selection.anchorCodeUnitOffset &&
|
|
237
|
+
left.selection.focusCodeUnitOffset === right.selection.focusCodeUnitOffset);
|
|
238
|
+
}
|
|
239
|
+
function isHighSurrogate(code) {
|
|
240
|
+
return code >= 0xd800 && code <= 0xdbff;
|
|
241
|
+
}
|
|
242
|
+
function isLowSurrogate(code) {
|
|
243
|
+
return code >= 0xdc00 && code <= 0xdfff;
|
|
244
|
+
}
|
|
245
|
+
function isObject(value) {
|
|
246
|
+
return typeof value === 'object' && value !== null;
|
|
247
|
+
}
|
|
248
|
+
//# sourceMappingURL=text.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"text.js","sourceRoot":"","sources":["../../../src/internal/editing/text.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export interface ExactDecimal {
|
|
2
|
+
readonly coefficient: bigint;
|
|
3
|
+
readonly scale: number;
|
|
4
|
+
}
|
|
5
|
+
export type DecimalRounding = 'half-even' | 'half-up' | 'toward-zero';
|
|
6
|
+
export declare function parseDecimal(value: string): ExactDecimal | null;
|
|
7
|
+
export declare function decimalToString(value: ExactDecimal): string;
|
|
8
|
+
export declare function normalizeDecimal(value: ExactDecimal): ExactDecimal;
|
|
9
|
+
export declare function alignDecimals(left: ExactDecimal, right: ExactDecimal): readonly [bigint, bigint, number];
|
|
10
|
+
export declare function compareDecimal(left: ExactDecimal, right: ExactDecimal): -1 | 0 | 1;
|
|
11
|
+
export declare function addDecimal(left: ExactDecimal, right: ExactDecimal): ExactDecimal;
|
|
12
|
+
export declare function subtractDecimal(left: ExactDecimal, right: ExactDecimal): ExactDecimal;
|
|
13
|
+
export declare function negateDecimal(value: ExactDecimal): ExactDecimal;
|
|
14
|
+
export declare function multiplyDecimal(left: ExactDecimal, right: ExactDecimal): ExactDecimal;
|
|
15
|
+
export declare function multiplyDecimalByInteger(value: ExactDecimal, factor: bigint): ExactDecimal;
|
|
16
|
+
export declare function decimalQuotient(numerator: ExactDecimal, denominator: ExactDecimal): readonly [bigint, bigint];
|
|
17
|
+
export declare function divideDecimal(numerator: ExactDecimal, denominator: ExactDecimal, scale: number, rounding: DecimalRounding): ExactDecimal | null;
|
|
18
|
+
export declare function greatestCommonDivisor(left: bigint, right: bigint): bigint;
|
|
19
|
+
export declare function reduceFraction(numerator: bigint, denominator: bigint): readonly [bigint, bigint];
|
|
20
|
+
export declare function floorFraction(numerator: bigint, denominator: bigint): bigint;
|
|
21
|
+
export declare function pow10(exponent: number): bigint;
|
|
22
|
+
//# sourceMappingURL=decimal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decimal.d.ts","sourceRoot":"","sources":["../../../src/internal/kernel/decimal.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG,SAAS,GAAG,aAAa,CAAC;AAItE,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAc/D;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAQ3D;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,YAAY,GAAG,YAAY,CAQlE;AAED,wBAAgB,aAAa,CAC3B,IAAI,EAAE,YAAY,EAClB,KAAK,EAAE,YAAY,GAClB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAOnC;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAGlF;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,GAAG,YAAY,CAGhF;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,GAAG,YAAY,CAGrF;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,YAAY,GAAG,YAAY,CAE/D;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,GAAG,YAAY,CAKrF;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,YAAY,CAE1F;AAED,wBAAgB,eAAe,CAC7B,SAAS,EAAE,YAAY,EACvB,WAAW,EAAE,YAAY,GACxB,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAO3B;AAED,wBAAgB,aAAa,CAC3B,SAAS,EAAE,YAAY,EACvB,WAAW,EAAE,YAAY,EACzB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,eAAe,GACxB,YAAY,GAAG,IAAI,CAyBrB;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAKzE;AAED,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAMhG;AAED,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAI5E;AAED,wBAAgB,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAK9C"}
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
const DECIMAL = /^([+-]?)(?:(\d+)(?:\.(\d*))?|\.(\d+))$/u;
|
|
2
|
+
export function parseDecimal(value) {
|
|
3
|
+
const match = DECIMAL.exec(value);
|
|
4
|
+
if (match === null)
|
|
5
|
+
return null;
|
|
6
|
+
const sign = match[1] === '-' ? -1n : 1n;
|
|
7
|
+
const integer = match[2] ?? '0';
|
|
8
|
+
const fraction = match[3] ?? match[4] ?? '';
|
|
9
|
+
let coefficient = sign * BigInt(`${integer}${fraction}`);
|
|
10
|
+
let scale = fraction.length;
|
|
11
|
+
if (coefficient === 0n)
|
|
12
|
+
return { coefficient: 0n, scale: 0 };
|
|
13
|
+
while (scale > 0 && coefficient % 10n === 0n) {
|
|
14
|
+
coefficient /= 10n;
|
|
15
|
+
scale -= 1;
|
|
16
|
+
}
|
|
17
|
+
return { coefficient, scale };
|
|
18
|
+
}
|
|
19
|
+
export function decimalToString(value) {
|
|
20
|
+
const normalized = normalizeDecimal(value);
|
|
21
|
+
const negative = normalized.coefficient < 0n;
|
|
22
|
+
const digits = (negative ? -normalized.coefficient : normalized.coefficient).toString();
|
|
23
|
+
if (normalized.scale === 0)
|
|
24
|
+
return `${negative ? '-' : ''}${digits}`;
|
|
25
|
+
const padded = digits.padStart(normalized.scale + 1, '0');
|
|
26
|
+
const split = padded.length - normalized.scale;
|
|
27
|
+
return `${negative ? '-' : ''}${padded.slice(0, split)}.${padded.slice(split)}`;
|
|
28
|
+
}
|
|
29
|
+
export function normalizeDecimal(value) {
|
|
30
|
+
let { coefficient, scale } = value;
|
|
31
|
+
if (coefficient === 0n)
|
|
32
|
+
return { coefficient: 0n, scale: 0 };
|
|
33
|
+
while (scale > 0 && coefficient % 10n === 0n) {
|
|
34
|
+
coefficient /= 10n;
|
|
35
|
+
scale -= 1;
|
|
36
|
+
}
|
|
37
|
+
return { coefficient, scale };
|
|
38
|
+
}
|
|
39
|
+
export function alignDecimals(left, right) {
|
|
40
|
+
const scale = Math.max(left.scale, right.scale);
|
|
41
|
+
return [
|
|
42
|
+
left.coefficient * pow10(scale - left.scale),
|
|
43
|
+
right.coefficient * pow10(scale - right.scale),
|
|
44
|
+
scale,
|
|
45
|
+
];
|
|
46
|
+
}
|
|
47
|
+
export function compareDecimal(left, right) {
|
|
48
|
+
const [a, b] = alignDecimals(left, right);
|
|
49
|
+
return a === b ? 0 : a < b ? -1 : 1;
|
|
50
|
+
}
|
|
51
|
+
export function addDecimal(left, right) {
|
|
52
|
+
const [a, b, scale] = alignDecimals(left, right);
|
|
53
|
+
return normalizeDecimal({ coefficient: a + b, scale });
|
|
54
|
+
}
|
|
55
|
+
export function subtractDecimal(left, right) {
|
|
56
|
+
const [a, b, scale] = alignDecimals(left, right);
|
|
57
|
+
return normalizeDecimal({ coefficient: a - b, scale });
|
|
58
|
+
}
|
|
59
|
+
export function negateDecimal(value) {
|
|
60
|
+
return Object.freeze({ coefficient: -value.coefficient, scale: value.scale });
|
|
61
|
+
}
|
|
62
|
+
export function multiplyDecimal(left, right) {
|
|
63
|
+
return normalizeDecimal({
|
|
64
|
+
coefficient: left.coefficient * right.coefficient,
|
|
65
|
+
scale: left.scale + right.scale,
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
export function multiplyDecimalByInteger(value, factor) {
|
|
69
|
+
return normalizeDecimal({ coefficient: value.coefficient * factor, scale: value.scale });
|
|
70
|
+
}
|
|
71
|
+
export function decimalQuotient(numerator, denominator) {
|
|
72
|
+
const numeratorInteger = numerator.coefficient * pow10(denominator.scale);
|
|
73
|
+
const denominatorInteger = denominator.coefficient * pow10(numerator.scale);
|
|
74
|
+
if (denominatorInteger === 0n)
|
|
75
|
+
throw new RangeError('division by zero');
|
|
76
|
+
return denominatorInteger < 0n
|
|
77
|
+
? [-numeratorInteger, -denominatorInteger]
|
|
78
|
+
: [numeratorInteger, denominatorInteger];
|
|
79
|
+
}
|
|
80
|
+
export function divideDecimal(numerator, denominator, scale, rounding) {
|
|
81
|
+
if (!Number.isSafeInteger(scale) || scale < 0) {
|
|
82
|
+
throw new RangeError('division scale must be a non-negative safe integer');
|
|
83
|
+
}
|
|
84
|
+
if (!isDecimalRounding(rounding)) {
|
|
85
|
+
throw new RangeError('unsupported decimal rounding policy');
|
|
86
|
+
}
|
|
87
|
+
if (denominator.coefficient === 0n)
|
|
88
|
+
return null;
|
|
89
|
+
const [rawNumerator, rawDenominator] = decimalQuotient(numerator, denominator);
|
|
90
|
+
const negative = rawNumerator < 0n;
|
|
91
|
+
const absoluteNumerator = negative ? -rawNumerator : rawNumerator;
|
|
92
|
+
const scaled = absoluteNumerator * pow10(scale);
|
|
93
|
+
let coefficient = scaled / rawDenominator;
|
|
94
|
+
const remainder = scaled % rawDenominator;
|
|
95
|
+
if (rounding !== 'toward-zero' && remainder !== 0n) {
|
|
96
|
+
const comparison = remainder * 2n - rawDenominator;
|
|
97
|
+
if (comparison > 0n
|
|
98
|
+
|| (comparison === 0n && rounding === 'half-up')
|
|
99
|
+
|| (comparison === 0n && rounding === 'half-even' && coefficient % 2n !== 0n)) {
|
|
100
|
+
coefficient += 1n;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return normalizeDecimal({ coefficient: negative ? -coefficient : coefficient, scale });
|
|
104
|
+
}
|
|
105
|
+
export function greatestCommonDivisor(left, right) {
|
|
106
|
+
let a = left < 0n ? -left : left;
|
|
107
|
+
let b = right < 0n ? -right : right;
|
|
108
|
+
while (b !== 0n)
|
|
109
|
+
[a, b] = [b, a % b];
|
|
110
|
+
return a;
|
|
111
|
+
}
|
|
112
|
+
export function reduceFraction(numerator, denominator) {
|
|
113
|
+
if (denominator === 0n)
|
|
114
|
+
throw new RangeError('denominator must not be zero');
|
|
115
|
+
const sign = denominator < 0n ? -1n : 1n;
|
|
116
|
+
const gcd = greatestCommonDivisor(numerator, denominator);
|
|
117
|
+
if (gcd === 0n)
|
|
118
|
+
return [0n, 1n];
|
|
119
|
+
return [(numerator / gcd) * sign, (denominator / gcd) * sign];
|
|
120
|
+
}
|
|
121
|
+
export function floorFraction(numerator, denominator) {
|
|
122
|
+
if (denominator <= 0n)
|
|
123
|
+
throw new RangeError('positive denominator required');
|
|
124
|
+
if (numerator >= 0n)
|
|
125
|
+
return numerator / denominator;
|
|
126
|
+
return -((-numerator + denominator - 1n) / denominator);
|
|
127
|
+
}
|
|
128
|
+
export function pow10(exponent) {
|
|
129
|
+
if (!Number.isSafeInteger(exponent) || exponent < 0) {
|
|
130
|
+
throw new RangeError('decimal scale must be a non-negative safe integer');
|
|
131
|
+
}
|
|
132
|
+
return 10n ** BigInt(exponent);
|
|
133
|
+
}
|
|
134
|
+
function isDecimalRounding(value) {
|
|
135
|
+
return value === 'half-even' || value === 'half-up' || value === 'toward-zero';
|
|
136
|
+
}
|
|
137
|
+
//# sourceMappingURL=decimal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"decimal.js","sourceRoot":"","sources":["../../../src/internal/kernel/decimal.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type Result, type SectileError, type StableID } from '../../shared.js';
|
|
2
|
+
export declare function ok<T>(value: T): Result<T>;
|
|
3
|
+
export declare function fail<T = never>(errorClass: SectileError['class'], code: string, message: string, details?: Readonly<Record<string, unknown>>): Result<T>;
|
|
4
|
+
export declare function resourceError(code: string, message: string, details?: Readonly<Record<string, unknown>>): SectileError;
|
|
5
|
+
export declare function isWellFormedUTF16(value: string): boolean;
|
|
6
|
+
export declare function validateStableID(id: string, maxIDCodeUnits?: number): SectileError | null;
|
|
7
|
+
export declare function validateSafeCeiling(value: number, name: string, minimum?: number): SectileError | null;
|
|
8
|
+
export declare function normalizeMaxScan(maxScan: number | undefined): number | SectileError;
|
|
9
|
+
export declare function freezeArray<T>(values: readonly T[]): readonly T[];
|
|
10
|
+
export declare function assertNever(value: never): never;
|
|
11
|
+
export declare function validateUniqueIDs<ID extends StableID>(ids: readonly ID[], maxIDCodeUnits: number): Result<readonly ID[]>;
|
|
12
|
+
//# sourceMappingURL=foundation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"foundation.d.ts","sourceRoot":"","sources":["../../../src/internal/kernel/foundation.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,MAAM,EACX,KAAK,YAAY,EACjB,KAAK,QAAQ,EACd,MAAM,iBAAiB,CAAC;AAEzB,wBAAgB,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAEzC;AAED,wBAAgB,IAAI,CAAC,CAAC,GAAG,KAAK,EAC5B,UAAU,EAAE,YAAY,CAAC,OAAO,CAAC,EACjC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAC1C,MAAM,CAAC,CAAC,CAAC,CAUX;AAED,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAC1C,YAAY,CAOd;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAYxD;AAED,wBAAgB,gBAAgB,CAC9B,EAAE,EAAE,MAAM,EACV,cAAc,GAAE,MAAkC,GACjD,YAAY,GAAG,IAAI,CAyCrB;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,OAAO,SAAI,GACV,YAAY,GAAG,IAAI,CAUrB;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,YAAY,CAUnF;AAED,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,GAAG,SAAS,CAAC,EAAE,CAEjE;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CAE/C;AASD,wBAAgB,iBAAiB,CAAC,EAAE,SAAS,QAAQ,EACnD,GAAG,EAAE,SAAS,EAAE,EAAE,EAClB,cAAc,EAAE,MAAM,GACrB,MAAM,CAAC,SAAS,EAAE,EAAE,CAAC,CAkBvB"}
|