@sectile/core 0.2.0 → 0.2.1
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/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 +1 -1
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { Result, StableID } from './shared.js';
|
|
2
|
+
import type { Sequence } from './structures/sequence.js';
|
|
3
|
+
import { type LinearActionPolicies } from './internal/composites/linear-action.js';
|
|
4
|
+
import { type CursorState } from './internal/state/cursor.js';
|
|
5
|
+
export type AccordionEvent<ID extends StableID = StableID> = 'next' | 'previous' | 'first' | 'last' | 'toggle' | {
|
|
6
|
+
readonly type: 'focus';
|
|
7
|
+
readonly id: ID;
|
|
8
|
+
} | {
|
|
9
|
+
readonly type: 'toggle';
|
|
10
|
+
readonly id: ID;
|
|
11
|
+
} | {
|
|
12
|
+
readonly type: 'set-open';
|
|
13
|
+
readonly id: ID;
|
|
14
|
+
readonly open: boolean;
|
|
15
|
+
};
|
|
16
|
+
export type AccordionCommand<ID extends StableID = StableID> = {
|
|
17
|
+
readonly type: 'focus';
|
|
18
|
+
readonly id: ID;
|
|
19
|
+
} | {
|
|
20
|
+
readonly type: 'open-changed';
|
|
21
|
+
readonly id: ID;
|
|
22
|
+
readonly open: boolean;
|
|
23
|
+
};
|
|
24
|
+
export interface AccordionState<ID extends StableID = StableID> {
|
|
25
|
+
readonly cursor: CursorState<ID>;
|
|
26
|
+
readonly openIDs: readonly ID[];
|
|
27
|
+
has(id: ID): boolean;
|
|
28
|
+
}
|
|
29
|
+
export interface AccordionStateInput<ID extends StableID = StableID> {
|
|
30
|
+
readonly current?: ID | null;
|
|
31
|
+
readonly openIDs?: readonly ID[];
|
|
32
|
+
}
|
|
33
|
+
export interface AccordionPolicies<ID extends StableID = StableID> extends LinearActionPolicies<ID> {
|
|
34
|
+
readonly expansion?: 'single' | 'multiple';
|
|
35
|
+
readonly collapsible?: boolean;
|
|
36
|
+
}
|
|
37
|
+
export interface AccordionUpdate<ID extends StableID = StableID> {
|
|
38
|
+
readonly state: AccordionState<ID>;
|
|
39
|
+
readonly commands: readonly AccordionCommand<ID>[];
|
|
40
|
+
}
|
|
41
|
+
export declare function createAccordionState<ID extends StableID>(domain: Sequence<ID>, input?: AccordionStateInput<ID>, policies?: AccordionPolicies<ID>): AccordionState<ID>;
|
|
42
|
+
export declare function tryCreateAccordionState<ID extends StableID>(domain: Sequence<ID>, input?: AccordionStateInput<ID>, policies?: AccordionPolicies<ID>): Result<AccordionState<ID>>;
|
|
43
|
+
export declare function applyAccordionEvent<ID extends StableID>(domain: Sequence<ID>, state: AccordionState<ID>, event: AccordionEvent<ID>, policies?: AccordionPolicies<ID>): Result<AccordionUpdate<ID>>;
|
|
44
|
+
//# sourceMappingURL=accordion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accordion.d.ts","sourceRoot":"","sources":["../src/accordion.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAkB,MAAM,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACpE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAGzD,OAAO,EAGL,KAAK,oBAAoB,EAC1B,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEjF,MAAM,MAAM,cAAc,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ,IACrD,MAAM,GAAG,UAAU,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,GACjD;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAA;CAAE,GAC3C;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAA;CAAE,GAC5C;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC;AAC3E,MAAM,MAAM,gBAAgB,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ,IACvD;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAA;CAAE,GAC3C;IAAE,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC;AAC/E,MAAM,WAAW,cAAc,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ;IAC5D,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,CAAC;IAChC,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC;CACtB;AACD,MAAM,WAAW,mBAAmB,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ;IACjE,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC;IAC7B,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,EAAE,CAAC;CAClC;AACD,MAAM,WAAW,iBAAiB,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ,CAC/D,SAAQ,oBAAoB,CAAC,EAAE,CAAC;IAChC,QAAQ,CAAC,SAAS,CAAC,EAAE,QAAQ,GAAG,UAAU,CAAC;IAC3C,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;CAChC;AACD,MAAM,WAAW,eAAe,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ;IAC7D,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE,SAAS,gBAAgB,CAAC,EAAE,CAAC,EAAE,CAAC;CACpD;AAED,wBAAgB,oBAAoB,CAAC,EAAE,SAAS,QAAQ,EACtD,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,EACpB,KAAK,GAAE,mBAAmB,CAAC,EAAE,CAAM,EACnC,QAAQ,GAAE,iBAAiB,CAAC,EAAE,CAAM,GACnC,cAAc,CAAC,EAAE,CAAC,CAEpB;AAED,wBAAgB,uBAAuB,CAAC,EAAE,SAAS,QAAQ,EACzD,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,EACpB,KAAK,GAAE,mBAAmB,CAAC,EAAE,CAAM,EACnC,QAAQ,GAAE,iBAAiB,CAAC,EAAE,CAAM,GACnC,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAsB5B;AAED,wBAAgB,mBAAmB,CAAC,EAAE,SAAS,QAAQ,EACrD,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,cAAc,CAAC,EAAE,CAAC,EAC1E,QAAQ,GAAE,iBAAiB,CAAC,EAAE,CAAM,GACnC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,CA+C7B"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
import { unwrap } from './result.js';
|
|
2
|
+
import { fail, ok } from './internal/kernel/foundation.js';
|
|
3
|
+
import { createMachineUpdate } from './internal/kernel/machine.js';
|
|
4
|
+
import { applyLinearActionEvent, createLinearActionState, } from './internal/composites/linear-action.js';
|
|
5
|
+
import { createCursorState } from './internal/state/cursor.js';
|
|
6
|
+
export function createAccordionState(domain, input = {}, policies = {}) {
|
|
7
|
+
return unwrap(tryCreateAccordionState(domain, input, policies));
|
|
8
|
+
}
|
|
9
|
+
export function tryCreateAccordionState(domain, input = {}, policies = {}) {
|
|
10
|
+
const current = input.current ?? null;
|
|
11
|
+
if (current !== null && !domain.contains(current)) {
|
|
12
|
+
return fail('construction', 'accordion-cursor-outside-domain', 'Accordion cursor must exist in its domain.');
|
|
13
|
+
}
|
|
14
|
+
const expansion = policies.expansion ?? 'single';
|
|
15
|
+
const collapsible = policies.collapsible ?? true;
|
|
16
|
+
if (!validPolicies(expansion, collapsible)) {
|
|
17
|
+
return fail('construction', 'invalid-accordion-policy', 'Accordion expansion and collapsible policies are invalid.');
|
|
18
|
+
}
|
|
19
|
+
const openIDs = input.openIDs ?? [];
|
|
20
|
+
const unique = new Set(openIDs);
|
|
21
|
+
if (unique.size !== openIDs.length || openIDs.some((id) => !domain.contains(id))) {
|
|
22
|
+
return fail('construction', 'invalid-accordion-open-set', 'Accordion open identities must be unique domain members.');
|
|
23
|
+
}
|
|
24
|
+
if (expansion === 'single' && openIDs.length > 1) {
|
|
25
|
+
return fail('construction', 'accordion-single-expansion', 'Single accordion state permits at most one open item.');
|
|
26
|
+
}
|
|
27
|
+
if (!collapsible && domain.size > 0 && openIDs.length === 0) {
|
|
28
|
+
return fail('construction', 'accordion-open-item-required', 'A non-collapsible accordion requires an open item.');
|
|
29
|
+
}
|
|
30
|
+
return ok(accordionState(current, openIDs));
|
|
31
|
+
}
|
|
32
|
+
export function applyAccordionEvent(domain, state, event, policies = {}) {
|
|
33
|
+
const normalized = tryCreateAccordionState(domain, {
|
|
34
|
+
current: state.cursor.current, openIDs: state.openIDs,
|
|
35
|
+
}, policies);
|
|
36
|
+
if (!normalized.ok)
|
|
37
|
+
return { ok: false, error: { ...normalized.error, class: 'transition-rejection' } };
|
|
38
|
+
if (typeof event === 'string' && ['next', 'previous', 'first', 'last'].includes(event)) {
|
|
39
|
+
const moved = applyLinearActionEvent(domain, { cursor: state.cursor }, event, policies);
|
|
40
|
+
if (!moved.ok)
|
|
41
|
+
return moved;
|
|
42
|
+
return createMachineUpdate(accordionState(moved.value.state.cursor.current, state.openIDs), moved.value.commands.map((command) => ({ type: 'focus', id: command.id })));
|
|
43
|
+
}
|
|
44
|
+
if (typeof event === 'object' && event.type === 'focus') {
|
|
45
|
+
const moved = applyLinearActionEvent(domain, { cursor: state.cursor }, event, policies);
|
|
46
|
+
if (!moved.ok)
|
|
47
|
+
return moved;
|
|
48
|
+
return createMachineUpdate(accordionState(event.id, state.openIDs), [{ type: 'focus', id: event.id }]);
|
|
49
|
+
}
|
|
50
|
+
const target = typeof event === 'object' ? event.id : state.cursor.current;
|
|
51
|
+
if (target === null)
|
|
52
|
+
return fail('transition-rejection', 'no-cursor', 'Accordion toggle requires a cursor.');
|
|
53
|
+
if (!domain.contains(target) || policies.eligible?.(target) === false) {
|
|
54
|
+
return fail('transition-rejection', 'accordion-target-unavailable', 'Accordion target must be eligible.');
|
|
55
|
+
}
|
|
56
|
+
const open = typeof event === 'object' && event.type === 'set-open'
|
|
57
|
+
? event.open
|
|
58
|
+
: !state.has(target);
|
|
59
|
+
if (typeof open !== 'boolean') {
|
|
60
|
+
return fail('transition-rejection', 'invalid-accordion-event', 'Accordion event is not accepted.');
|
|
61
|
+
}
|
|
62
|
+
if (!open && policies.collapsible === false && state.openIDs.length === 1 && state.has(target)) {
|
|
63
|
+
return fail('transition-rejection', 'accordion-collapse-forbidden', 'The last open item cannot collapse.');
|
|
64
|
+
}
|
|
65
|
+
const nextOpen = open
|
|
66
|
+
? policies.expansion === 'multiple'
|
|
67
|
+
? state.has(target) ? state.openIDs : [...state.openIDs, target]
|
|
68
|
+
: [target]
|
|
69
|
+
: state.openIDs.filter((id) => id !== target);
|
|
70
|
+
const cursorChanged = state.cursor.current !== target;
|
|
71
|
+
const openChanged = state.has(target) !== open;
|
|
72
|
+
const commands = [];
|
|
73
|
+
if (cursorChanged)
|
|
74
|
+
commands.push({ type: 'focus', id: target });
|
|
75
|
+
if (openChanged)
|
|
76
|
+
commands.push({ type: 'open-changed', id: target, open });
|
|
77
|
+
return createMachineUpdate(accordionState(target, nextOpen), commands);
|
|
78
|
+
}
|
|
79
|
+
function accordionState(current, openIDs) {
|
|
80
|
+
const ids = Object.freeze([...openIDs]);
|
|
81
|
+
const membership = new Set(ids);
|
|
82
|
+
return Object.freeze({ cursor: createCursorState(current), openIDs: ids, has: (id) => membership.has(id) });
|
|
83
|
+
}
|
|
84
|
+
function validPolicies(expansion, collapsible) {
|
|
85
|
+
return (expansion === 'single' || expansion === 'multiple') && typeof collapsible === 'boolean';
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=accordion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accordion.js","sourceRoot":"","sources":["../src/accordion.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { Result } from './shared.js';
|
|
2
|
+
import { createDialogState, tryCreateDialogState, type DialogEvent, type DialogState } from './dialog.js';
|
|
3
|
+
export type AlertDialogState = DialogState;
|
|
4
|
+
export type AlertDialogEvent = DialogEvent;
|
|
5
|
+
export type AlertDialogCommand = {
|
|
6
|
+
readonly type: 'request-initial-focus';
|
|
7
|
+
} | {
|
|
8
|
+
readonly type: 'request-focus-restore';
|
|
9
|
+
} | {
|
|
10
|
+
readonly type: 'announce-alert';
|
|
11
|
+
};
|
|
12
|
+
export interface AlertDialogUpdate {
|
|
13
|
+
readonly state: AlertDialogState;
|
|
14
|
+
readonly commands: readonly AlertDialogCommand[];
|
|
15
|
+
}
|
|
16
|
+
export declare const createAlertDialogState: typeof createDialogState;
|
|
17
|
+
export declare const tryCreateAlertDialogState: typeof tryCreateDialogState;
|
|
18
|
+
export declare function applyAlertDialogEvent(state: AlertDialogState, event: AlertDialogEvent): Result<AlertDialogUpdate>;
|
|
19
|
+
//# sourceMappingURL=alert-dialog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alert-dialog.d.ts","sourceRoot":"","sources":["../src/alert-dialog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAI,EAAC,MAAM,EAAC,MAAI,aAAa,CAAC;AAAA,OAAM,EAAkB,iBAAiB,EAAC,oBAAoB,EAAC,KAAK,WAAW,EAAC,KAAK,WAAW,EAAC,MAAI,aAAa,CAAC;AACxJ,MAAM,MAAM,gBAAgB,GAAC,WAAW,CAAC;AAAA,MAAM,MAAM,gBAAgB,GAAC,WAAW,CAAC;AAAA,MAAM,MAAM,kBAAkB,GAAC;IAAC,QAAQ,CAAC,IAAI,EAAC,uBAAuB,CAAA;CAAC,GAAC;IAAC,QAAQ,CAAC,IAAI,EAAC,uBAAuB,CAAA;CAAC,GAAC;IAAC,QAAQ,CAAC,IAAI,EAAC,gBAAgB,CAAA;CAAC,CAAC;AAAA,MAAM,WAAW,iBAAiB;IAAC,QAAQ,CAAC,KAAK,EAAC,gBAAgB,CAAC;IAAA,QAAQ,CAAC,QAAQ,EAAC,SAAS,kBAAkB,EAAE,CAAA;CAAC;AACrV,eAAO,MAAM,sBAAsB,EAAC,OAAO,iBAAmC,CAAC;AAAA,eAAO,MAAM,yBAAyB,EAAC,OAAO,oBAAyC,CAAC;AAAA,wBAAgB,qBAAqB,CAAC,KAAK,EAAC,gBAAgB,EAAC,KAAK,EAAC,gBAAgB,GAAE,MAAM,CAAC,iBAAiB,CAAC,CAAyT"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { applyDialogEvent, createDialogState, tryCreateDialogState } from './dialog.js';
|
|
2
|
+
export const createAlertDialogState = createDialogState;
|
|
3
|
+
export const tryCreateAlertDialogState = tryCreateDialogState;
|
|
4
|
+
export function applyAlertDialogEvent(state, event) { const r = applyDialogEvent(state, event); if (!r.ok)
|
|
5
|
+
return r; const commands = []; for (const c of r.value.commands) {
|
|
6
|
+
commands.push(c);
|
|
7
|
+
if (c.type === 'request-initial-focus')
|
|
8
|
+
commands.push({ type: 'announce-alert' });
|
|
9
|
+
} return { ok: true, value: Object.freeze({ state: r.value.state, commands: Object.freeze(commands) }) }; }
|
|
10
|
+
//# sourceMappingURL=alert-dialog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"alert-dialog.js","sourceRoot":"","sources":["../src/alert-dialog.ts"],"names":[],"mappings":"AAAqC,OAAM,EAAC,gBAAgB,EAAC,iBAAiB,EAAC,oBAAoB,EAAmC,MAAI,aAAa,CAAC;AAExJ,MAAM,CAAC,MAAM,sBAAsB,GAA0B,iBAAiB,CAAC;AAAA,MAAM,CAAC,MAAM,yBAAyB,GAA6B,oBAAoB,CAAC;AAAA,MAAM,UAAU,qBAAqB,CAAC,KAAsB,EAAC,KAAsB,IAA4B,MAAM,CAAC,GAAC,gBAAgB,CAAC,KAAK,EAAC,KAAK,CAAC,CAAC,CAAA,IAAG,CAAC,CAAC,CAAC,EAAE;IAAC,OAAO,CAAC,CAAC,CAAA,MAAM,QAAQ,GAAsB,EAAE,CAAC,CAAA,KAAI,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAC,CAAC;IAAA,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAAA,IAAG,CAAC,CAAC,IAAI,KAAG,uBAAuB;QAAC,QAAQ,CAAC,IAAI,CAAC,EAAC,IAAI,EAAC,gBAAgB,EAAC,CAAC,CAAA;AAAA,CAAC,CAAA,OAAM,EAAC,EAAE,EAAC,IAAI,EAAC,KAAK,EAAC,MAAM,CAAC,MAAM,CAAC,EAAC,KAAK,EAAC,CAAC,CAAC,KAAK,CAAC,KAAK,EAAC,QAAQ,EAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAC,CAAC,EAAC,CAAA,CAAA,CAAC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { applyCalendarEvent, createCalendarState, type CalendarCommand, type CalendarEvent, type CalendarPolicies, type CalendarState, type CalendarStateInput, type CalendarUpdate, } from './internal/composites/calendar.js';
|
|
2
|
+
export { tryCreateCalendarState } from './internal/composites/calendar.js';
|
|
3
|
+
//# sourceMappingURL=calendar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../src/calendar.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,mBAAmB,EACnB,KAAK,eAAe,EACpB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,cAAc,GACpB,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC"}
|
package/dist/calendar.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calendar.js","sourceRoot":"","sources":["../src/calendar.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,mBAAmB,GAOpB,MAAM,mCAAmC,CAAC;AAE3C,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { Result, StableID } from './shared.js';
|
|
2
|
+
import type { Sequence } from './structures/sequence.js';
|
|
3
|
+
import { type CursorState } from './internal/state/cursor.js';
|
|
4
|
+
export type CarouselPauseReason = 'focus' | 'hover' | 'visibility';
|
|
5
|
+
export interface CarouselState<ID extends StableID = StableID> {
|
|
6
|
+
readonly cursor: CursorState<ID>;
|
|
7
|
+
/** User-owned pause state. Host-owned temporary pauses live in pauseReasons. */
|
|
8
|
+
readonly paused: boolean;
|
|
9
|
+
readonly pauseReasons: readonly CarouselPauseReason[];
|
|
10
|
+
}
|
|
11
|
+
export type CarouselEvent<ID extends StableID = StableID> = 'next' | 'previous' | 'first' | 'last' | 'pause' | 'resume' | 'toggle-pause' | {
|
|
12
|
+
readonly type: 'focus';
|
|
13
|
+
readonly id: ID;
|
|
14
|
+
} | {
|
|
15
|
+
readonly type: 'pause-for';
|
|
16
|
+
readonly reason: CarouselPauseReason;
|
|
17
|
+
} | {
|
|
18
|
+
readonly type: 'resume-for';
|
|
19
|
+
readonly reason: CarouselPauseReason;
|
|
20
|
+
};
|
|
21
|
+
export type CarouselCommand<ID extends StableID = StableID> = {
|
|
22
|
+
readonly type: 'announce-slide';
|
|
23
|
+
readonly id: ID;
|
|
24
|
+
};
|
|
25
|
+
export interface CarouselPolicies {
|
|
26
|
+
readonly wrap?: boolean;
|
|
27
|
+
}
|
|
28
|
+
export interface CarouselPosition {
|
|
29
|
+
readonly index: number | null;
|
|
30
|
+
readonly count: number;
|
|
31
|
+
}
|
|
32
|
+
export interface CarouselUpdate<ID extends StableID = StableID> {
|
|
33
|
+
readonly state: CarouselState<ID>;
|
|
34
|
+
readonly commands: readonly CarouselCommand<ID>[];
|
|
35
|
+
}
|
|
36
|
+
export declare function createCarouselState<ID extends StableID>(slides: Sequence<ID>, current?: ID | null, paused?: boolean, pauseReasons?: readonly CarouselPauseReason[]): CarouselState<ID>;
|
|
37
|
+
export declare function tryCreateCarouselState<ID extends StableID>(slides: Sequence<ID>, current?: ID | null, paused?: boolean, pauseReasons?: readonly CarouselPauseReason[]): Result<CarouselState<ID>>;
|
|
38
|
+
export declare function getCarouselPosition<ID extends StableID>(slides: Sequence<ID>, state: CarouselState<ID>): CarouselPosition;
|
|
39
|
+
export declare function isCarouselRotationPaused(state: CarouselState): boolean;
|
|
40
|
+
export declare function applyCarouselEvent<ID extends StableID>(slides: Sequence<ID>, state: CarouselState<ID>, event: CarouselEvent<ID>, policies?: CarouselPolicies): Result<CarouselUpdate<ID>>;
|
|
41
|
+
//# sourceMappingURL=carousel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"carousel.d.ts","sourceRoot":"","sources":["../src/carousel.ts"],"names":[],"mappings":"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"}
|
package/dist/carousel.js
ADDED
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { unwrap } from './result.js';
|
|
2
|
+
import { fail, ok } from './internal/kernel/foundation.js';
|
|
3
|
+
import { createMachineUpdate } from './internal/kernel/machine.js';
|
|
4
|
+
import { createCursorState } from './internal/state/cursor.js';
|
|
5
|
+
export function createCarouselState(slides, current = null, paused = false, pauseReasons = []) {
|
|
6
|
+
return unwrap(tryCreateCarouselState(slides, current, paused, pauseReasons));
|
|
7
|
+
}
|
|
8
|
+
export function tryCreateCarouselState(slides, current = null, paused = false, pauseReasons = []) {
|
|
9
|
+
if (current !== null && !slides.contains(current))
|
|
10
|
+
return fail('construction', 'carousel-cursor-outside-slides', 'Carousel cursor must identify a slide.');
|
|
11
|
+
return ok(Object.freeze({ cursor: createCursorState(current), paused, pauseReasons: Object.freeze([...new Set(pauseReasons)]) }));
|
|
12
|
+
}
|
|
13
|
+
export function getCarouselPosition(slides, state) {
|
|
14
|
+
return Object.freeze({ index: state.cursor.current === null ? null : slides.indexOf(state.cursor.current), count: slides.size });
|
|
15
|
+
}
|
|
16
|
+
export function isCarouselRotationPaused(state) {
|
|
17
|
+
return state.paused || state.pauseReasons.length > 0;
|
|
18
|
+
}
|
|
19
|
+
export function applyCarouselEvent(slides, state, event, policies = {}) {
|
|
20
|
+
const valid = tryCreateCarouselState(slides, state.cursor.current, state.paused, state.pauseReasons);
|
|
21
|
+
if (!valid.ok)
|
|
22
|
+
return { ok: false, error: { ...valid.error, class: 'transition-rejection' } };
|
|
23
|
+
if (event === 'pause' || event === 'resume' || event === 'toggle-pause') {
|
|
24
|
+
const paused = event === 'pause' ? true : event === 'resume' ? false : !state.paused;
|
|
25
|
+
return createMachineUpdate(Object.freeze({ cursor: state.cursor, paused, pauseReasons: state.pauseReasons }));
|
|
26
|
+
}
|
|
27
|
+
if (typeof event === 'object' && (event.type === 'pause-for' || event.type === 'resume-for')) {
|
|
28
|
+
const pauseReasons = event.type === 'pause-for'
|
|
29
|
+
? state.pauseReasons.includes(event.reason) ? state.pauseReasons : Object.freeze([...state.pauseReasons, event.reason])
|
|
30
|
+
: Object.freeze(state.pauseReasons.filter((reason) => reason !== event.reason));
|
|
31
|
+
if (pauseReasons === state.pauseReasons)
|
|
32
|
+
return createMachineUpdate(state);
|
|
33
|
+
return createMachineUpdate(Object.freeze({ cursor: state.cursor, paused: state.paused, pauseReasons }));
|
|
34
|
+
}
|
|
35
|
+
let id;
|
|
36
|
+
if (typeof event === 'object') {
|
|
37
|
+
if (!slides.contains(event.id))
|
|
38
|
+
return fail('transition-rejection', 'carousel-target-unavailable', 'Direct carousel focus requires a slide.');
|
|
39
|
+
id = event.id;
|
|
40
|
+
}
|
|
41
|
+
else if (event === 'first')
|
|
42
|
+
id = slides.at(0);
|
|
43
|
+
else if (event === 'last')
|
|
44
|
+
id = slides.at(slides.size - 1);
|
|
45
|
+
else if (state.cursor.current === null)
|
|
46
|
+
id = slides.at(event === 'next' ? 0 : slides.size - 1);
|
|
47
|
+
else {
|
|
48
|
+
const moved = slides.move(state.cursor.current, event === 'next' ? 1 : -1, policies.wrap === false ? 'stop' : 'wrap');
|
|
49
|
+
id = moved.kind === 'found' ? moved.id : state.cursor.current;
|
|
50
|
+
}
|
|
51
|
+
if (id === null || id === state.cursor.current)
|
|
52
|
+
return createMachineUpdate(state);
|
|
53
|
+
return createMachineUpdate(Object.freeze({ cursor: createCursorState(id), paused: state.paused, pauseReasons: state.pauseReasons }), [{ type: 'announce-slide', id }]);
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=carousel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"carousel.js","sourceRoot":"","sources":["../src/carousel.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import type { Result, StableID } from './shared.js';
|
|
2
|
+
import type { Tree } from './structures/tree.js';
|
|
3
|
+
export type CascadeSelectEvent<ID extends StableID = StableID> = 'open' | 'close' | 'toggle' | 'next' | 'previous' | 'first' | 'last' | 'right' | 'left' | 'select' | {
|
|
4
|
+
readonly type: 'focus';
|
|
5
|
+
readonly id: ID;
|
|
6
|
+
} | {
|
|
7
|
+
readonly type: 'select';
|
|
8
|
+
readonly id: ID;
|
|
9
|
+
};
|
|
10
|
+
export type CascadeSelectCommand<ID extends StableID = StableID> = {
|
|
11
|
+
readonly type: 'focus';
|
|
12
|
+
readonly id: ID;
|
|
13
|
+
} | {
|
|
14
|
+
readonly type: 'select-value';
|
|
15
|
+
readonly id: ID;
|
|
16
|
+
} | {
|
|
17
|
+
readonly type: 'close-popup';
|
|
18
|
+
};
|
|
19
|
+
export interface CascadeSelectState<ID extends StableID = StableID> {
|
|
20
|
+
readonly open: boolean;
|
|
21
|
+
readonly value: ID | null;
|
|
22
|
+
readonly highlighted: ID | null;
|
|
23
|
+
/** Open branch IDs from the root to the deepest visible column. */
|
|
24
|
+
readonly path: readonly ID[];
|
|
25
|
+
}
|
|
26
|
+
export interface CascadeSelectStateInput<ID extends StableID = StableID> {
|
|
27
|
+
readonly open?: boolean;
|
|
28
|
+
readonly value?: ID | null;
|
|
29
|
+
readonly highlighted?: ID | null;
|
|
30
|
+
readonly path?: readonly ID[];
|
|
31
|
+
}
|
|
32
|
+
export interface CascadeSelectPolicies<ID extends StableID = StableID> {
|
|
33
|
+
readonly eligible?: (id: ID) => boolean;
|
|
34
|
+
/** Defaults to leaf-only selection. */
|
|
35
|
+
readonly selectable?: (id: ID, leaf: boolean) => boolean;
|
|
36
|
+
}
|
|
37
|
+
export type CascadeSelectEligiblePredicate<ID extends StableID = StableID> = NonNullable<CascadeSelectPolicies<ID>['eligible']>;
|
|
38
|
+
export type CascadeSelectSelectablePredicate<ID extends StableID = StableID> = NonNullable<CascadeSelectPolicies<ID>['selectable']>;
|
|
39
|
+
export interface CascadeSelectUpdate<ID extends StableID = StableID> {
|
|
40
|
+
readonly state: CascadeSelectState<ID>;
|
|
41
|
+
readonly commands: readonly CascadeSelectCommand<ID>[];
|
|
42
|
+
}
|
|
43
|
+
export declare function createCascadeSelectState<ID extends StableID>(tree: Tree<ID>, input?: CascadeSelectStateInput<ID>): CascadeSelectState<ID>;
|
|
44
|
+
export declare function tryCreateCascadeSelectState<ID extends StableID>(tree: Tree<ID>, input?: CascadeSelectStateInput<ID>): Result<CascadeSelectState<ID>>;
|
|
45
|
+
export declare function getCascadeSelectColumns<ID extends StableID>(tree: Tree<ID>, state: CascadeSelectState<ID>): readonly (readonly ID[])[];
|
|
46
|
+
export declare function getCascadeSelectValuePath<ID extends StableID>(tree: Tree<ID>, value: ID | null): readonly ID[];
|
|
47
|
+
export declare function applyCascadeSelectEvent<ID extends StableID>(tree: Tree<ID>, state: CascadeSelectState<ID>, event: CascadeSelectEvent<ID>, policies?: CascadeSelectPolicies<ID>): Result<CascadeSelectUpdate<ID>>;
|
|
48
|
+
//# sourceMappingURL=cascade-select.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cascade-select.d.ts","sourceRoot":"","sources":["../src/cascade-select.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import { unwrap } from './result.js';
|
|
2
|
+
import { fail, freezeArray, ok } from './internal/kernel/foundation.js';
|
|
3
|
+
import { createMachineUpdate } from './internal/kernel/machine.js';
|
|
4
|
+
export function createCascadeSelectState(tree, input = {}) {
|
|
5
|
+
return unwrap(tryCreateCascadeSelectState(tree, input));
|
|
6
|
+
}
|
|
7
|
+
export function tryCreateCascadeSelectState(tree, input = {}) {
|
|
8
|
+
if (input.open !== undefined && typeof input.open !== 'boolean') {
|
|
9
|
+
return fail('construction', 'invalid-cascade-select-open', 'Cascade select open state must be boolean.');
|
|
10
|
+
}
|
|
11
|
+
const value = input.value ?? null;
|
|
12
|
+
const highlighted = input.highlighted ?? value;
|
|
13
|
+
if (value !== null && !tree.has(value)) {
|
|
14
|
+
return fail('construction', 'cascade-select-value-outside-tree', 'Cascade select value must exist in the tree.', { value });
|
|
15
|
+
}
|
|
16
|
+
if (highlighted !== null && !tree.has(highlighted)) {
|
|
17
|
+
return fail('construction', 'cascade-select-highlight-outside-tree', 'Cascade select highlight must exist in the tree.', { highlighted });
|
|
18
|
+
}
|
|
19
|
+
const inferredPath = value === null ? [] : [...(tree.ancestorsOf(value) ?? [])].reverse();
|
|
20
|
+
const path = input.path === undefined ? inferredPath : [...input.path];
|
|
21
|
+
const pathError = validatePath(tree, path);
|
|
22
|
+
if (pathError !== null)
|
|
23
|
+
return pathError;
|
|
24
|
+
return ok(Object.freeze({ open: input.open ?? false, value, highlighted, path: freezeArray(path) }));
|
|
25
|
+
}
|
|
26
|
+
export function getCascadeSelectColumns(tree, state) {
|
|
27
|
+
const columns = [tree.roots.ids];
|
|
28
|
+
for (const id of state.path) {
|
|
29
|
+
const children = tree.childrenOf(id)?.ids ?? [];
|
|
30
|
+
if (children.length > 0)
|
|
31
|
+
columns.push(children);
|
|
32
|
+
}
|
|
33
|
+
return freezeArray(columns.map((column) => freezeArray(column)));
|
|
34
|
+
}
|
|
35
|
+
export function getCascadeSelectValuePath(tree, value) {
|
|
36
|
+
return value === null
|
|
37
|
+
? freezeArray([])
|
|
38
|
+
: freezeArray([...(tree.ancestorsOf(value) ?? [])].reverse().concat(value));
|
|
39
|
+
}
|
|
40
|
+
export function applyCascadeSelectEvent(tree, state, event, policies = {}) {
|
|
41
|
+
const valid = tryCreateCascadeSelectState(tree, state);
|
|
42
|
+
if (!valid.ok)
|
|
43
|
+
return { ok: false, error: { ...valid.error, class: 'transition-rejection' } };
|
|
44
|
+
if (event === 'open' || event === 'close' || event === 'toggle') {
|
|
45
|
+
const open = event === 'toggle' ? !state.open : event === 'open';
|
|
46
|
+
return createMachineUpdate(open === state.open ? state : cascadeState(state, { open }));
|
|
47
|
+
}
|
|
48
|
+
if (typeof event === 'object') {
|
|
49
|
+
if (!tree.has(event.id))
|
|
50
|
+
return fail('transition-rejection', 'cascade-select-target-unavailable', 'Cascade select target must exist in the tree.');
|
|
51
|
+
if (!isEligible(event.id, policies))
|
|
52
|
+
return fail('transition-rejection', 'cascade-select-target-disabled', 'Cascade select target must be eligible.');
|
|
53
|
+
return event.type === 'focus'
|
|
54
|
+
? focus(tree, state, event.id)
|
|
55
|
+
: choose(tree, state, event.id, policies);
|
|
56
|
+
}
|
|
57
|
+
if (event === 'left') {
|
|
58
|
+
const parent = state.highlighted === null ? null : tree.parentOf(state.highlighted);
|
|
59
|
+
if (parent === null)
|
|
60
|
+
return createMachineUpdate(state);
|
|
61
|
+
return focus(tree, cascadeState(state, { path: ancestors(tree, parent) }), parent);
|
|
62
|
+
}
|
|
63
|
+
if (event === 'right') {
|
|
64
|
+
if (state.highlighted === null || tree.isLeaf(state.highlighted) !== false)
|
|
65
|
+
return createMachineUpdate(state);
|
|
66
|
+
const child = firstEligible(tree.childrenOf(state.highlighted)?.ids ?? [], policies);
|
|
67
|
+
if (child === null)
|
|
68
|
+
return createMachineUpdate(state);
|
|
69
|
+
return focus(tree, cascadeState(state, { path: [...ancestors(tree, state.highlighted), state.highlighted] }), child);
|
|
70
|
+
}
|
|
71
|
+
if (event === 'select') {
|
|
72
|
+
return state.highlighted === null ? createMachineUpdate(state) : choose(tree, state, state.highlighted, policies);
|
|
73
|
+
}
|
|
74
|
+
const siblings = siblingsOf(tree, state.highlighted, state.path);
|
|
75
|
+
const eligible = siblings.filter((id) => isEligible(id, policies));
|
|
76
|
+
if (eligible.length === 0)
|
|
77
|
+
return createMachineUpdate(state);
|
|
78
|
+
const currentIndex = state.highlighted === null ? -1 : eligible.indexOf(state.highlighted);
|
|
79
|
+
let next;
|
|
80
|
+
if (event === 'first')
|
|
81
|
+
next = eligible[0];
|
|
82
|
+
else if (event === 'last')
|
|
83
|
+
next = eligible[eligible.length - 1];
|
|
84
|
+
else {
|
|
85
|
+
const delta = event === 'next' ? 1 : -1;
|
|
86
|
+
const fallback = delta > 0 ? 0 : eligible.length - 1;
|
|
87
|
+
const index = currentIndex < 0 ? fallback : Math.min(eligible.length - 1, Math.max(0, currentIndex + delta));
|
|
88
|
+
next = eligible[index];
|
|
89
|
+
}
|
|
90
|
+
return focus(tree, state, next);
|
|
91
|
+
}
|
|
92
|
+
function focus(tree, state, id) {
|
|
93
|
+
if (id === state.highlighted && state.open)
|
|
94
|
+
return createMachineUpdate(state);
|
|
95
|
+
return createMachineUpdate(cascadeState(state, { open: true, highlighted: id }), [{ type: 'focus', id }]);
|
|
96
|
+
}
|
|
97
|
+
function choose(tree, state, id, policies) {
|
|
98
|
+
const leaf = tree.isLeaf(id) === true;
|
|
99
|
+
if ((policies.selectable?.(id, leaf) ?? leaf) === true) {
|
|
100
|
+
const next = cascadeState(state, { open: false, value: id, highlighted: id, path: ancestors(tree, id) });
|
|
101
|
+
return createMachineUpdate(next, [{ type: 'select-value', id }, { type: 'close-popup' }]);
|
|
102
|
+
}
|
|
103
|
+
if (leaf)
|
|
104
|
+
return fail('transition-rejection', 'cascade-select-target-unselectable', 'Cascade select policy rejected the target.');
|
|
105
|
+
const child = firstEligible(tree.childrenOf(id)?.ids ?? [], policies);
|
|
106
|
+
const path = [...ancestors(tree, id), id];
|
|
107
|
+
const next = cascadeState(state, { open: true, highlighted: child ?? id, path });
|
|
108
|
+
return createMachineUpdate(next, child === null ? [] : [{ type: 'focus', id: child }]);
|
|
109
|
+
}
|
|
110
|
+
function validatePath(tree, path) {
|
|
111
|
+
for (let index = 0; index < path.length; index += 1) {
|
|
112
|
+
const id = path[index];
|
|
113
|
+
if (id === undefined || !tree.has(id))
|
|
114
|
+
return fail('construction', 'cascade-select-path-outside-tree', 'Every cascade select path item must exist in the tree.');
|
|
115
|
+
if (tree.isLeaf(id) !== false)
|
|
116
|
+
return fail('construction', 'cascade-select-leaf-in-path', 'Cascade select paths may contain only branches.', { id });
|
|
117
|
+
const expectedParent = index === 0 ? null : path[index - 1];
|
|
118
|
+
if (tree.parentOf(id) !== expectedParent)
|
|
119
|
+
return fail('construction', 'invalid-cascade-select-path', 'Cascade select path must form a direct root-to-branch chain.');
|
|
120
|
+
}
|
|
121
|
+
return null;
|
|
122
|
+
}
|
|
123
|
+
function cascadeState(state, patch) {
|
|
124
|
+
return Object.freeze({
|
|
125
|
+
open: patch.open ?? state.open,
|
|
126
|
+
value: patch.value === undefined ? state.value : patch.value,
|
|
127
|
+
highlighted: patch.highlighted === undefined ? state.highlighted : patch.highlighted,
|
|
128
|
+
path: freezeArray(patch.path ?? state.path),
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
function ancestors(tree, id) {
|
|
132
|
+
return freezeArray([...(tree.ancestorsOf(id) ?? [])].reverse());
|
|
133
|
+
}
|
|
134
|
+
function siblingsOf(tree, highlighted, path) {
|
|
135
|
+
if (highlighted !== null) {
|
|
136
|
+
const parent = tree.parentOf(highlighted);
|
|
137
|
+
return parent === null ? tree.roots.ids : tree.childrenOf(parent)?.ids ?? [];
|
|
138
|
+
}
|
|
139
|
+
const parent = path[path.length - 1];
|
|
140
|
+
return parent === undefined ? tree.roots.ids : tree.childrenOf(parent)?.ids ?? [];
|
|
141
|
+
}
|
|
142
|
+
function firstEligible(ids, policies) {
|
|
143
|
+
return ids.find((id) => isEligible(id, policies)) ?? null;
|
|
144
|
+
}
|
|
145
|
+
function isEligible(id, policies) {
|
|
146
|
+
return policies.eligible?.(id) ?? true;
|
|
147
|
+
}
|
|
148
|
+
//# sourceMappingURL=cascade-select.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cascade-select.js","sourceRoot":"","sources":["../src/cascade-select.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { Result, StableID } from './shared.js';
|
|
2
|
+
import type { Sequence } from './structures/sequence.js';
|
|
3
|
+
import { type ListboxCommand, type ListboxEvent, type ListboxPolicies, type ListboxState, type ListboxStateInput, type ListboxUpdate } from './internal/composites/listbox.js';
|
|
4
|
+
export type CheckboxGroupEvent<ID extends StableID = StableID> = Exclude<ListboxEvent<ID>, 'activate'>;
|
|
5
|
+
export type CheckboxGroupCommand<ID extends StableID = StableID> = ListboxCommand<ID>;
|
|
6
|
+
export type CheckboxGroupState<ID extends StableID = StableID> = ListboxState<ID>;
|
|
7
|
+
export type CheckboxGroupStateInput<ID extends StableID = StableID> = ListboxStateInput<ID>;
|
|
8
|
+
export type CheckboxGroupPolicies<ID extends StableID = StableID> = Omit<ListboxPolicies<ID>, 'selectionMode' | 'selectionFollowsFocus'>;
|
|
9
|
+
export type CheckboxGroupUpdate<ID extends StableID = StableID> = ListboxUpdate<ID>;
|
|
10
|
+
export declare function createCheckboxGroupState<ID extends StableID>(domain: Sequence<ID>, input?: CheckboxGroupStateInput<ID>): CheckboxGroupState<ID>;
|
|
11
|
+
export declare function tryCreateCheckboxGroupState<ID extends StableID>(domain: Sequence<ID>, input?: CheckboxGroupStateInput<ID>): Result<CheckboxGroupState<ID>>;
|
|
12
|
+
export declare function applyCheckboxGroupEvent<ID extends StableID>(domain: Sequence<ID>, state: CheckboxGroupState<ID>, event: CheckboxGroupEvent<ID>, policies?: CheckboxGroupPolicies<ID>): Result<CheckboxGroupUpdate<ID>>;
|
|
13
|
+
//# sourceMappingURL=checkbox-group.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkbox-group.d.ts","sourceRoot":"","sources":["../src/checkbox-group.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAGL,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,aAAa,EAEnB,MAAM,kCAAkC,CAAC;AAE1C,MAAM,MAAM,kBAAkB,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ,IAAI,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC;AACvG,MAAM,MAAM,oBAAoB,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ,IAAI,cAAc,CAAC,EAAE,CAAC,CAAC;AACtF,MAAM,MAAM,kBAAkB,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ,IAAI,YAAY,CAAC,EAAE,CAAC,CAAC;AAClF,MAAM,MAAM,uBAAuB,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ,IAAI,iBAAiB,CAAC,EAAE,CAAC,CAAC;AAC5F,MAAM,MAAM,qBAAqB,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ,IAAI,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,EAAE,eAAe,GAAG,uBAAuB,CAAC,CAAC;AACzI,MAAM,MAAM,mBAAmB,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ,IAAI,aAAa,CAAC,EAAE,CAAC,CAAC;AAEpF,wBAAgB,wBAAwB,CAAC,EAAE,SAAS,QAAQ,EAC1D,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,EACpB,KAAK,GAAE,uBAAuB,CAAC,EAAE,CAAM,GACtC,kBAAkB,CAAC,EAAE,CAAC,CAExB;AAED,wBAAgB,2BAA2B,CAAC,EAAE,SAAS,QAAQ,EAC7D,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,EACpB,KAAK,GAAE,uBAAuB,CAAC,EAAE,CAAM,GACtC,MAAM,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC,CAEhC;AAED,wBAAgB,uBAAuB,CAAC,EAAE,SAAS,QAAQ,EACzD,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,EACpB,KAAK,EAAE,kBAAkB,CAAC,EAAE,CAAC,EAC7B,KAAK,EAAE,kBAAkB,CAAC,EAAE,CAAC,EAC7B,QAAQ,GAAE,qBAAqB,CAAC,EAAE,CAAM,GACvC,MAAM,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAMjC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { unwrap } from './result.js';
|
|
2
|
+
import { applyListboxEvent, createListboxState, tryCreateListboxState, } from './internal/composites/listbox.js';
|
|
3
|
+
export function createCheckboxGroupState(domain, input = {}) {
|
|
4
|
+
return unwrap(tryCreateCheckboxGroupState(domain, input));
|
|
5
|
+
}
|
|
6
|
+
export function tryCreateCheckboxGroupState(domain, input = {}) {
|
|
7
|
+
return tryCreateListboxState(domain, input, 'multiple');
|
|
8
|
+
}
|
|
9
|
+
export function applyCheckboxGroupEvent(domain, state, event, policies = {}) {
|
|
10
|
+
return applyListboxEvent(domain, state, event, {
|
|
11
|
+
...policies,
|
|
12
|
+
selectionMode: 'multiple',
|
|
13
|
+
selectionFollowsFocus: false,
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=checkbox-group.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkbox-group.js","sourceRoot":"","sources":["../src/checkbox-group.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAGrC,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAOlB,qBAAqB,GACtB,MAAM,kCAAkC,CAAC;AAS1C,MAAM,UAAU,wBAAwB,CACtC,MAAoB,EACpB,KAAK,GAAgC,EAAE;IAEvC,OAAO,MAAM,CAAC,2BAA2B,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,2BAA2B,CACzC,MAAoB,EACpB,KAAK,GAAgC,EAAE;IAEvC,OAAO,qBAAqB,CAAC,MAAM,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,MAAoB,EACpB,KAA6B,EAC7B,KAA6B,EAC7B,QAAQ,GAA8B,EAAE;IAExC,OAAO,iBAAiB,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE;QAC7C,GAAG,QAAQ;QACX,aAAa,EAAE,UAAU;QACzB,qBAAqB,EAAE,KAAK;KAC7B,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { applyCheckedEvent as applyCheckboxEvent, createCheckedState as createCheckboxState, type CheckedCommand as CheckboxCommand, type CheckedEvent as CheckboxEvent, type CheckedPolicies as CheckboxPolicies, type CheckedState as CheckboxState, type CheckedValue as CheckboxValue, } from './internal/state/checked.js';
|
|
2
|
+
export { tryCreateCheckedState as tryCreateCheckboxState } from './internal/state/checked.js';
|
|
3
|
+
//# sourceMappingURL=checkbox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkbox.d.ts","sourceRoot":"","sources":["../src/checkbox.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,IAAI,kBAAkB,EACvC,kBAAkB,IAAI,mBAAmB,EACzC,KAAK,cAAc,IAAI,eAAe,EACtC,KAAK,YAAY,IAAI,aAAa,EAClC,KAAK,eAAe,IAAI,gBAAgB,EACxC,KAAK,YAAY,IAAI,aAAa,EAClC,KAAK,YAAY,IAAI,aAAa,GACnC,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,qBAAqB,IAAI,sBAAsB,EAAE,MAAM,6BAA6B,CAAC"}
|
package/dist/checkbox.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"checkbox.js","sourceRoot":"","sources":["../src/checkbox.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,IAAI,kBAAkB,EACvC,kBAAkB,IAAI,mBAAmB,GAM1C,MAAM,6BAA6B,CAAC;AAErC,OAAO,EAAE,qBAAqB,IAAI,sBAAsB,EAAE,MAAM,6BAA6B,CAAC"}
|