@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,29 @@
|
|
|
1
|
+
import { unwrap } from '../../result.js';
|
|
2
|
+
import { fail, ok } from '../kernel/foundation.js';
|
|
3
|
+
import { createMachineUpdate } from '../kernel/machine.js';
|
|
4
|
+
export function createOpenState(open = false) {
|
|
5
|
+
return unwrap(tryCreateOpenState(open));
|
|
6
|
+
}
|
|
7
|
+
export function tryCreateOpenState(open = false) {
|
|
8
|
+
return typeof open === 'boolean'
|
|
9
|
+
? ok(Object.freeze({ open }))
|
|
10
|
+
: fail('construction', 'invalid-open-state', 'Open state must be boolean.');
|
|
11
|
+
}
|
|
12
|
+
export function applyOpenEvent(state, event) {
|
|
13
|
+
if (typeof state.open !== 'boolean') {
|
|
14
|
+
return fail('transition-rejection', 'invalid-open-state', 'Open state must be boolean.');
|
|
15
|
+
}
|
|
16
|
+
const next = typeof event === 'object'
|
|
17
|
+
? event.type === 'set-open' && typeof event.open === 'boolean' ? event.open : null
|
|
18
|
+
: event === 'toggle' ? !state.open : event === 'open' ? true : event === 'close' ? false : null;
|
|
19
|
+
if (next === null) {
|
|
20
|
+
return fail('transition-rejection', 'invalid-open-event', 'Open event is not accepted.');
|
|
21
|
+
}
|
|
22
|
+
if (next === state.open)
|
|
23
|
+
return createMachineUpdate(state);
|
|
24
|
+
const created = tryCreateOpenState(next);
|
|
25
|
+
if (!created.ok)
|
|
26
|
+
return created;
|
|
27
|
+
return createMachineUpdate(created.value, [{ type: 'open-changed', open: next }]);
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=open-state.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"open-state.js","sourceRoot":"","sources":["../../../src/internal/state/open-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAEzC,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAsB,MAAM,sBAAsB,CAAC;AAM/E,MAAM,UAAU,eAAe,CAAC,IAAI,GAAG,KAAK;IAC1C,OAAO,MAAM,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC,CAAC;AAC1C,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,IAAI,GAAG,KAAK;IAC7C,OAAO,OAAO,IAAI,KAAK,SAAS;QAC9B,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;QAC7B,CAAC,CAAC,IAAI,CAAC,cAAc,EAAE,oBAAoB,EAAE,6BAA6B,CAAC,CAAC;AAChF,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,KAAgB,EAChB,KAAgB;IAEhB,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;QACpC,OAAO,IAAI,CAAC,sBAAsB,EAAE,oBAAoB,EAAE,6BAA6B,CAAC,CAAC;IAC3F,CAAC;IACD,MAAM,IAAI,GAAG,OAAO,KAAK,KAAK,QAAQ;QACpC,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,UAAU,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI;QAClF,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IAClG,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,OAAO,IAAI,CAAC,sBAAsB,EAAE,oBAAoB,EAAE,6BAA6B,CAAC,CAAC;IAC3F,CAAC;IACD,IAAI,IAAI,KAAK,KAAK,CAAC,IAAI;QAAE,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC;IAC3D,MAAM,OAAO,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACzC,IAAI,CAAC,OAAO,CAAC,EAAE;QAAE,OAAO,OAAO,CAAC;IAChC,OAAO,mBAAmB,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACpF,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { Result, StableID } from '../../shared.js';
|
|
2
|
+
import type { CursorDomain } from './cursor.js';
|
|
3
|
+
export type SelectionMode = 'single' | 'multiple';
|
|
4
|
+
export interface SelectionDomain<ID extends StableID = StableID> extends CursorDomain<ID> {
|
|
5
|
+
indexOf(id: ID): number | null;
|
|
6
|
+
}
|
|
7
|
+
export interface SelectionState<ID extends StableID = StableID> {
|
|
8
|
+
readonly selected: readonly ID[];
|
|
9
|
+
readonly anchor: ID | null;
|
|
10
|
+
readonly size: number;
|
|
11
|
+
has(id: ID): boolean;
|
|
12
|
+
}
|
|
13
|
+
export interface SelectionSnapshotInput<ID extends StableID = StableID> {
|
|
14
|
+
readonly selected?: readonly ID[];
|
|
15
|
+
readonly anchor?: ID | null;
|
|
16
|
+
}
|
|
17
|
+
export declare function createSelectionState<ID extends StableID>(domain: SelectionDomain<ID>, mode: SelectionMode, input?: SelectionSnapshotInput<ID>): Result<SelectionState<ID>>;
|
|
18
|
+
export declare function reconcileSelection<ID extends StableID>(state: SelectionState<ID>, domain: SelectionDomain<ID>, mode: SelectionMode): Result<SelectionState<ID>>;
|
|
19
|
+
export declare function selectOne<ID extends StableID>(state: SelectionState<ID>, id: ID, domain: SelectionDomain<ID>): SelectionState<ID>;
|
|
20
|
+
export declare function toggleMultipleSelection<ID extends StableID>(state: SelectionState<ID>, id: ID, domain: SelectionDomain<ID>): SelectionState<ID>;
|
|
21
|
+
export declare function clearSelection<ID extends StableID>(state: SelectionState<ID>): SelectionState<ID>;
|
|
22
|
+
export declare function selectInterval<ID extends StableID>(state: SelectionState<ID>, anchor: ID, extent: ID, domain: SelectionDomain<ID>, additive: boolean): SelectionState<ID>;
|
|
23
|
+
//# sourceMappingURL=selection.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selection.d.ts","sourceRoot":"","sources":["../../../src/internal/state/selection.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AACxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGhD,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,UAAU,CAAC;AAElD,MAAM,WAAW,eAAe,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ,CAAE,SAAQ,YAAY,CAAC,EAAE,CAAC;IACvF,OAAO,CAAC,EAAE,EAAE,EAAE,GAAG,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,cAAc,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ;IAC5D,QAAQ,CAAC,QAAQ,EAAE,SAAS,EAAE,EAAE,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,EAAE,GAAG,IAAI,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,GAAG,CAAC,EAAE,EAAE,EAAE,GAAG,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,sBAAsB,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ;IACpE,QAAQ,CAAC,QAAQ,CAAC,EAAE,SAAS,EAAE,EAAE,CAAC;IAClC,QAAQ,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC;CAC7B;AAuBD,wBAAgB,oBAAoB,CAAC,EAAE,SAAS,QAAQ,EACtD,MAAM,EAAE,eAAe,CAAC,EAAE,CAAC,EAC3B,IAAI,EAAE,aAAa,EACnB,KAAK,GAAE,sBAAsB,CAAC,EAAE,CAAM,GACrC,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAqC5B;AAED,wBAAgB,kBAAkB,CAAC,EAAE,SAAS,QAAQ,EACpD,KAAK,EAAE,cAAc,CAAC,EAAE,CAAC,EACzB,MAAM,EAAE,eAAe,CAAC,EAAE,CAAC,EAC3B,IAAI,EAAE,aAAa,GAClB,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CA0B5B;AAED,wBAAgB,SAAS,CAAC,EAAE,SAAS,QAAQ,EAC3C,KAAK,EAAE,cAAc,CAAC,EAAE,CAAC,EACzB,EAAE,EAAE,EAAE,EACN,MAAM,EAAE,eAAe,CAAC,EAAE,CAAC,GAC1B,cAAc,CAAC,EAAE,CAAC,CAIpB;AAED,wBAAgB,uBAAuB,CAAC,EAAE,SAAS,QAAQ,EACzD,KAAK,EAAE,cAAc,CAAC,EAAE,CAAC,EACzB,EAAE,EAAE,EAAE,EACN,MAAM,EAAE,eAAe,CAAC,EAAE,CAAC,GAC1B,cAAc,CAAC,EAAE,CAAC,CAMpB;AAED,wBAAgB,cAAc,CAAC,EAAE,SAAS,QAAQ,EAChD,KAAK,EAAE,cAAc,CAAC,EAAE,CAAC,GACxB,cAAc,CAAC,EAAE,CAAC,CAIpB;AAED,wBAAgB,cAAc,CAAC,EAAE,SAAS,QAAQ,EAChD,KAAK,EAAE,cAAc,CAAC,EAAE,CAAC,EACzB,MAAM,EAAE,EAAE,EACV,MAAM,EAAE,EAAE,EACV,MAAM,EAAE,eAAe,CAAC,EAAE,CAAC,EAC3B,QAAQ,EAAE,OAAO,GAChB,cAAc,CAAC,EAAE,CAAC,CAapB"}
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { fail, freezeArray, ok } from '../kernel/foundation.js';
|
|
2
|
+
class ImmutableSelectionState {
|
|
3
|
+
selected;
|
|
4
|
+
anchor;
|
|
5
|
+
#selected;
|
|
6
|
+
constructor(selected, anchor) {
|
|
7
|
+
this.selected = freezeArray(selected);
|
|
8
|
+
this.anchor = anchor;
|
|
9
|
+
this.#selected = new Set(this.selected);
|
|
10
|
+
Object.freeze(this);
|
|
11
|
+
}
|
|
12
|
+
get size() {
|
|
13
|
+
return this.selected.length;
|
|
14
|
+
}
|
|
15
|
+
has(id) {
|
|
16
|
+
return this.#selected.has(id);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
export function createSelectionState(domain, mode, input = {}) {
|
|
20
|
+
if (!isSelectionMode(mode)) {
|
|
21
|
+
return fail('construction', 'invalid-selection-mode', 'Selection mode must be single or multiple.', {
|
|
22
|
+
mode,
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
const requested = new Set(input.selected ?? []);
|
|
26
|
+
if (mode === 'single' && requested.size > 1) {
|
|
27
|
+
return fail('construction', 'invalid-selection-cardinality', 'Single selection must contain at most one identity.', { selectedCount: requested.size });
|
|
28
|
+
}
|
|
29
|
+
for (const id of requested) {
|
|
30
|
+
if (!domain.contains(id)) {
|
|
31
|
+
return fail('construction', 'selected-id-outside-domain', 'Every selected identity must exist in the selection domain.', { id });
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
const anchor = input.anchor ?? null;
|
|
35
|
+
if (anchor !== null && !domain.contains(anchor)) {
|
|
36
|
+
return fail('construction', 'selection-anchor-outside-domain', 'Selection anchor must exist in the selection domain.', { anchor });
|
|
37
|
+
}
|
|
38
|
+
return ok(selectionFromSet(domain, requested, anchor));
|
|
39
|
+
}
|
|
40
|
+
export function reconcileSelection(state, domain, mode) {
|
|
41
|
+
if (!isSelectionMode(mode)) {
|
|
42
|
+
return fail('transition-rejection', 'invalid-selection-mode', 'Selection mode must be single or multiple.', { mode });
|
|
43
|
+
}
|
|
44
|
+
const selected = new Set(state.selected);
|
|
45
|
+
if (mode === 'single' && selected.size > 1) {
|
|
46
|
+
return fail('transition-rejection', 'invalid-selection-cardinality', 'A multiple selection snapshot cannot be reconciled in single mode.', { selectedCount: selected.size });
|
|
47
|
+
}
|
|
48
|
+
for (const id of selected) {
|
|
49
|
+
if (!domain.contains(id))
|
|
50
|
+
selected.delete(id);
|
|
51
|
+
}
|
|
52
|
+
const anchor = state.anchor !== null && domain.contains(state.anchor) ? state.anchor : null;
|
|
53
|
+
const result = selectionFromSet(domain, selected, anchor);
|
|
54
|
+
return ok(sameSelection(state, result) ? state : result);
|
|
55
|
+
}
|
|
56
|
+
export function selectOne(state, id, domain) {
|
|
57
|
+
if (!domain.contains(id))
|
|
58
|
+
return state;
|
|
59
|
+
if (state.size === 1 && state.has(id) && state.anchor === id)
|
|
60
|
+
return state;
|
|
61
|
+
return new ImmutableSelectionState([id], id);
|
|
62
|
+
}
|
|
63
|
+
export function toggleMultipleSelection(state, id, domain) {
|
|
64
|
+
if (!domain.contains(id))
|
|
65
|
+
return state;
|
|
66
|
+
const selected = new Set(state.selected);
|
|
67
|
+
if (selected.has(id))
|
|
68
|
+
selected.delete(id);
|
|
69
|
+
else
|
|
70
|
+
selected.add(id);
|
|
71
|
+
return selectionFromSet(domain, selected, id);
|
|
72
|
+
}
|
|
73
|
+
export function clearSelection(state) {
|
|
74
|
+
return state.size === 0 && state.anchor === null
|
|
75
|
+
? state
|
|
76
|
+
: new ImmutableSelectionState([], null);
|
|
77
|
+
}
|
|
78
|
+
export function selectInterval(state, anchor, extent, domain, additive) {
|
|
79
|
+
const anchorIndex = domain.indexOf(anchor);
|
|
80
|
+
const extentIndex = domain.indexOf(extent);
|
|
81
|
+
if (anchorIndex === null || extentIndex === null)
|
|
82
|
+
return state;
|
|
83
|
+
const selected = additive ? new Set(state.selected) : new Set();
|
|
84
|
+
const start = Math.min(anchorIndex, extentIndex);
|
|
85
|
+
const end = Math.max(anchorIndex, extentIndex);
|
|
86
|
+
for (let index = start; index <= end; index += 1) {
|
|
87
|
+
const id = domain.at(index);
|
|
88
|
+
if (id !== null)
|
|
89
|
+
selected.add(id);
|
|
90
|
+
}
|
|
91
|
+
return selectionFromSet(domain, selected, anchor);
|
|
92
|
+
}
|
|
93
|
+
function selectionFromSet(domain, selected, anchor) {
|
|
94
|
+
const ordered = [];
|
|
95
|
+
for (let index = 0; index < domain.size; index += 1) {
|
|
96
|
+
const id = domain.at(index);
|
|
97
|
+
if (id !== null && selected.has(id))
|
|
98
|
+
ordered.push(id);
|
|
99
|
+
}
|
|
100
|
+
return new ImmutableSelectionState(ordered, anchor);
|
|
101
|
+
}
|
|
102
|
+
function sameSelection(left, right) {
|
|
103
|
+
if (left.anchor !== right.anchor || left.selected.length !== right.selected.length)
|
|
104
|
+
return false;
|
|
105
|
+
return left.selected.every((id, index) => id === right.selected[index]);
|
|
106
|
+
}
|
|
107
|
+
function isSelectionMode(value) {
|
|
108
|
+
return value === 'single' || value === 'multiple';
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=selection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"selection.js","sourceRoot":"","sources":["../../../src/internal/state/selection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { type MachineUpdate } from './internal/kernel/machine.js';
|
|
2
|
+
import type { Result, StableID } from './shared.js';
|
|
3
|
+
export type LayerMode = 'modal' | 'non-modal' | 'tooltip';
|
|
4
|
+
export type LayerDismissReason = 'escape' | 'interact-outside';
|
|
5
|
+
export type LayerCloseReason = LayerDismissReason | 'programmatic' | 'ancestor-closed';
|
|
6
|
+
export interface LayerInput<ID extends StableID = StableID> {
|
|
7
|
+
readonly id: ID;
|
|
8
|
+
readonly parentID?: ID | null;
|
|
9
|
+
readonly mode?: LayerMode;
|
|
10
|
+
readonly dismissOnEscape?: boolean;
|
|
11
|
+
readonly dismissOnInteractOutside?: boolean;
|
|
12
|
+
}
|
|
13
|
+
export interface Layer<ID extends StableID = StableID> {
|
|
14
|
+
readonly id: ID;
|
|
15
|
+
readonly parentID: ID | null;
|
|
16
|
+
readonly mode: LayerMode;
|
|
17
|
+
readonly dismissOnEscape: boolean;
|
|
18
|
+
readonly dismissOnInteractOutside: boolean;
|
|
19
|
+
}
|
|
20
|
+
export interface LayerStackState<ID extends StableID = StableID> {
|
|
21
|
+
readonly layers: readonly Layer<ID>[];
|
|
22
|
+
}
|
|
23
|
+
export type LayerStackEvent<ID extends StableID = StableID> = {
|
|
24
|
+
readonly type: 'open-layer';
|
|
25
|
+
readonly layer: LayerInput<ID>;
|
|
26
|
+
} | {
|
|
27
|
+
readonly type: 'close-layer';
|
|
28
|
+
readonly id: ID;
|
|
29
|
+
} | {
|
|
30
|
+
readonly type: 'dismiss-top';
|
|
31
|
+
readonly reason: LayerDismissReason;
|
|
32
|
+
};
|
|
33
|
+
export type LayerStackCommand<ID extends StableID = StableID> = {
|
|
34
|
+
readonly type: 'layer-opened';
|
|
35
|
+
readonly id: ID;
|
|
36
|
+
} | {
|
|
37
|
+
readonly type: 'layer-closed';
|
|
38
|
+
readonly id: ID;
|
|
39
|
+
readonly reason: LayerCloseReason;
|
|
40
|
+
};
|
|
41
|
+
export type LayerStackUpdate<ID extends StableID = StableID> = MachineUpdate<LayerStackState<ID>, LayerStackCommand<ID>>;
|
|
42
|
+
export declare function createLayerStackState<ID extends StableID = StableID>(layers?: readonly LayerInput<ID>[]): LayerStackState<ID>;
|
|
43
|
+
export declare function tryCreateLayerStackState<ID extends StableID = StableID>(inputs?: readonly LayerInput<ID>[]): Result<LayerStackState<ID>>;
|
|
44
|
+
export declare function applyLayerStackEvent<ID extends StableID>(state: LayerStackState<ID>, event: LayerStackEvent<ID>): Result<LayerStackUpdate<ID>>;
|
|
45
|
+
export declare function getTopLayer<ID extends StableID>(state: LayerStackState<ID>): Layer<ID> | null;
|
|
46
|
+
export declare function getInteractiveLayerIDs<ID extends StableID>(state: LayerStackState<ID>): readonly ID[];
|
|
47
|
+
//# sourceMappingURL=layer-stack.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layer-stack.d.ts","sourceRoot":"","sources":["../src/layer-stack.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { createMachineUpdate } from './internal/kernel/machine.js';
|
|
2
|
+
import { fail, ok } from './internal/kernel/foundation.js';
|
|
3
|
+
import { unwrap } from './result.js';
|
|
4
|
+
import { tryCreateSequence } from './structures/sequence.js';
|
|
5
|
+
export function createLayerStackState(layers = []) {
|
|
6
|
+
return unwrap(tryCreateLayerStackState(layers));
|
|
7
|
+
}
|
|
8
|
+
export function tryCreateLayerStackState(inputs = []) {
|
|
9
|
+
const ids = tryCreateSequence(inputs.map((layer) => layer.id));
|
|
10
|
+
if (!ids.ok)
|
|
11
|
+
return ids;
|
|
12
|
+
const layers = [];
|
|
13
|
+
for (const input of inputs) {
|
|
14
|
+
const normalized = normalizeLayer(input);
|
|
15
|
+
if (!normalized.ok)
|
|
16
|
+
return normalized;
|
|
17
|
+
const parentID = normalized.value.parentID;
|
|
18
|
+
if (parentID !== null && layers.at(-1)?.id !== parentID) {
|
|
19
|
+
return fail('construction', 'layer-parent-not-topmost', 'A nested layer must open directly above its current topmost parent.', { id: input.id, parentID });
|
|
20
|
+
}
|
|
21
|
+
layers.push(normalized.value);
|
|
22
|
+
}
|
|
23
|
+
return ok(Object.freeze({ layers: Object.freeze(layers) }));
|
|
24
|
+
}
|
|
25
|
+
export function applyLayerStackEvent(state, event) {
|
|
26
|
+
const valid = tryCreateLayerStackState(state.layers);
|
|
27
|
+
if (!valid.ok)
|
|
28
|
+
return transitionFailure(valid);
|
|
29
|
+
if (event.type === 'open-layer') {
|
|
30
|
+
if (state.layers.some((layer) => layer.id === event.layer.id)) {
|
|
31
|
+
return fail('transition-rejection', 'layer-id-duplicate', 'An open layer must use a unique identifier.', { id: event.layer.id });
|
|
32
|
+
}
|
|
33
|
+
const next = tryCreateLayerStackState([...state.layers, event.layer]);
|
|
34
|
+
if (!next.ok)
|
|
35
|
+
return transitionFailure(next);
|
|
36
|
+
const layer = next.value.layers.at(-1);
|
|
37
|
+
if (layer === undefined)
|
|
38
|
+
throw new Error('An opened layer must exist in the next state.');
|
|
39
|
+
return createMachineUpdate(next.value, [{ type: 'layer-opened', id: layer.id }]);
|
|
40
|
+
}
|
|
41
|
+
if (event.type === 'close-layer') {
|
|
42
|
+
const index = state.layers.findIndex((layer) => layer.id === event.id);
|
|
43
|
+
if (index < 0) {
|
|
44
|
+
return fail('transition-rejection', 'layer-id-missing', 'The layer to close must be open.', { id: event.id });
|
|
45
|
+
}
|
|
46
|
+
return closeFrom(state, index, 'programmatic');
|
|
47
|
+
}
|
|
48
|
+
const top = state.layers.at(-1);
|
|
49
|
+
if (top === undefined)
|
|
50
|
+
return createMachineUpdate(state);
|
|
51
|
+
const dismissible = event.reason === 'escape'
|
|
52
|
+
? top.dismissOnEscape
|
|
53
|
+
: top.dismissOnInteractOutside;
|
|
54
|
+
return dismissible
|
|
55
|
+
? closeFrom(state, state.layers.length - 1, event.reason)
|
|
56
|
+
: createMachineUpdate(state);
|
|
57
|
+
}
|
|
58
|
+
export function getTopLayer(state) {
|
|
59
|
+
return state.layers.at(-1) ?? null;
|
|
60
|
+
}
|
|
61
|
+
export function getInteractiveLayerIDs(state) {
|
|
62
|
+
let start = 0;
|
|
63
|
+
for (let index = state.layers.length - 1; index >= 0; index -= 1) {
|
|
64
|
+
if (state.layers[index]?.mode === 'modal') {
|
|
65
|
+
start = index;
|
|
66
|
+
break;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return Object.freeze(state.layers.slice(start).map((layer) => layer.id));
|
|
70
|
+
}
|
|
71
|
+
function closeFrom(state, index, reason) {
|
|
72
|
+
let end = index + 1;
|
|
73
|
+
while (end < state.layers.length
|
|
74
|
+
&& state.layers[end]?.parentID === state.layers[end - 1]?.id) {
|
|
75
|
+
end += 1;
|
|
76
|
+
}
|
|
77
|
+
const closing = state.layers.slice(index, end).reverse();
|
|
78
|
+
return createMachineUpdate(Object.freeze({
|
|
79
|
+
layers: Object.freeze([
|
|
80
|
+
...state.layers.slice(0, index),
|
|
81
|
+
...state.layers.slice(end),
|
|
82
|
+
]),
|
|
83
|
+
}), closing.map((layer, commandIndex) => ({
|
|
84
|
+
type: 'layer-closed',
|
|
85
|
+
id: layer.id,
|
|
86
|
+
reason: commandIndex === closing.length - 1 ? reason : 'ancestor-closed',
|
|
87
|
+
})));
|
|
88
|
+
}
|
|
89
|
+
function normalizeLayer(input) {
|
|
90
|
+
if (input.parentID !== undefined && input.parentID !== null && input.parentID === input.id) {
|
|
91
|
+
return fail('construction', 'layer-self-parent', 'A layer cannot be its own parent.');
|
|
92
|
+
}
|
|
93
|
+
const mode = input.mode ?? 'non-modal';
|
|
94
|
+
if (mode !== 'modal' && mode !== 'non-modal' && mode !== 'tooltip') {
|
|
95
|
+
return fail('construction', 'layer-mode-invalid', 'Layer mode is invalid.');
|
|
96
|
+
}
|
|
97
|
+
if ((input.dismissOnEscape !== undefined && typeof input.dismissOnEscape !== 'boolean')
|
|
98
|
+
|| (input.dismissOnInteractOutside !== undefined
|
|
99
|
+
&& typeof input.dismissOnInteractOutside !== 'boolean')) {
|
|
100
|
+
return fail('construction', 'layer-dismiss-policy-invalid', 'Layer dismissal policies must be boolean.');
|
|
101
|
+
}
|
|
102
|
+
return ok(Object.freeze({
|
|
103
|
+
id: input.id,
|
|
104
|
+
parentID: input.parentID ?? null,
|
|
105
|
+
mode,
|
|
106
|
+
dismissOnEscape: input.dismissOnEscape ?? mode !== 'tooltip',
|
|
107
|
+
dismissOnInteractOutside: input.dismissOnInteractOutside ?? mode !== 'modal',
|
|
108
|
+
}));
|
|
109
|
+
}
|
|
110
|
+
function transitionFailure(result) {
|
|
111
|
+
if (result.ok)
|
|
112
|
+
throw new Error('Expected a failed result.');
|
|
113
|
+
return fail('transition-rejection', result.error.code, result.error.message, result.error.details);
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=layer-stack.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layer-stack.js","sourceRoot":"","sources":["../src/layer-stack.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAsB,MAAM,8BAA8B,CAAC;AACvF,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,iCAAiC,CAAC;AAC3D,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAuC7D,MAAM,UAAU,qBAAqB,CACnC,MAAM,GAA8B,EAAE;IAEtC,OAAO,MAAM,CAAC,wBAAwB,CAAC,MAAM,CAAC,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,MAAM,GAA8B,EAAE;IAEtC,MAAM,GAAG,GAAG,iBAAiB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/D,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,OAAO,GAAG,CAAC;IACxB,MAAM,MAAM,GAAgB,EAAE,CAAC;IAC/B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,UAAU,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,CAAC,UAAU,CAAC,EAAE;YAAE,OAAO,UAAU,CAAC;QACtC,MAAM,QAAQ,GAAG,UAAU,CAAC,KAAK,CAAC,QAAQ,CAAC;QAC3C,IAAI,QAAQ,KAAK,IAAI,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,KAAK,QAAQ,EAAE,CAAC;YACxD,OAAO,IAAI,CACT,cAAc,EACd,0BAA0B,EAC1B,qEAAqE,EACrE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,QAAQ,EAAE,CAC3B,CAAC;QACJ,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IACD,OAAO,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;AAC9D,CAAC;AAED,MAAM,UAAU,oBAAoB,CAClC,KAA0B,EAC1B,KAA0B;IAE1B,MAAM,KAAK,GAAG,wBAAwB,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACrD,IAAI,CAAC,KAAK,CAAC,EAAE;QAAE,OAAO,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAE/C,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;QAChC,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;YAC9D,OAAO,IAAI,CACT,sBAAsB,EACtB,oBAAoB,EACpB,6CAA6C,EAC7C,EAAE,EAAE,EAAE,KAAK,CAAC,KAAK,CAAC,EAAE,EAAE,CACvB,CAAC;QACJ,CAAC;QACD,MAAM,IAAI,GAAG,wBAAwB,CAAC,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QACtE,IAAI,CAAC,IAAI,CAAC,EAAE;YAAE,OAAO,iBAAiB,CAAC,IAAI,CAAC,CAAC;QAC7C,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACvC,IAAI,KAAK,KAAK,SAAS;YAAE,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QAC1F,OAAO,mBAAmB,CACxB,IAAI,CAAC,KAAK,EACV,CAAC,EAAE,IAAI,EAAE,cAAc,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CACzC,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC,EAAE,CAAC,CAAC;QACvE,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;YACd,OAAO,IAAI,CACT,sBAAsB,EACtB,kBAAkB,EAClB,kCAAkC,EAClC,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CACjB,CAAC;QACJ,CAAC;QACD,OAAO,SAAS,CAAC,KAAK,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAChC,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC;IACzD,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,KAAK,QAAQ;QAC3C,CAAC,CAAC,GAAG,CAAC,eAAe;QACrB,CAAC,CAAC,GAAG,CAAC,wBAAwB,CAAC;IACjC,OAAO,WAAW;QAChB,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,CAAC,MAAM,CAAC;QACzD,CAAC,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,WAAW,CACzB,KAA0B;IAE1B,OAAO,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,KAA0B;IAE1B,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,KAAK,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACjE,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,KAAK,OAAO,EAAE,CAAC;YAC1C,KAAK,GAAG,KAAK,CAAC;YACd,MAAM;QACR,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED,SAAS,SAAS,CAChB,KAA0B,EAC1B,KAAa,EACb,MAAoD;IAEpD,IAAI,GAAG,GAAG,KAAK,GAAG,CAAC,CAAC;IACpB,OACE,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM;WACtB,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,QAAQ,KAAK,KAAK,CAAC,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,EAAE,EAAE,EAC5D,CAAC;QACD,GAAG,IAAI,CAAC,CAAC;IACX,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,CAAC;IACzD,OAAO,mBAAmB,CACxB,MAAM,CAAC,MAAM,CAAC;QACZ,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;YACpB,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC;YAC/B,GAAG,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;SAC3B,CAAC;KACH,CAAC,EACF,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC;QACpC,IAAI,EAAE,cAAuB;QAC7B,EAAE,EAAE,KAAK,CAAC,EAAE;QACZ,MAAM,EAAE,YAAY,KAAK,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,iBAA0B;KAClF,CAAC,CAAC,CACJ,CAAC;AACJ,CAAC;AAED,SAAS,cAAc,CAAsB,KAAqB;IAChE,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,IAAI,KAAK,CAAC,QAAQ,KAAK,IAAI,IAAI,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC,EAAE,EAAE,CAAC;QAC3F,OAAO,IAAI,CAAC,cAAc,EAAE,mBAAmB,EAAE,mCAAmC,CAAC,CAAC;IACxF,CAAC;IACD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,WAAW,CAAC;IACvC,IAAI,IAAI,KAAK,OAAO,IAAI,IAAI,KAAK,WAAW,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACnE,OAAO,IAAI,CAAC,cAAc,EAAE,oBAAoB,EAAE,wBAAwB,CAAC,CAAC;IAC9E,CAAC;IACD,IACE,CAAC,KAAK,CAAC,eAAe,KAAK,SAAS,IAAI,OAAO,KAAK,CAAC,eAAe,KAAK,SAAS,CAAC;WAChF,CAAC,KAAK,CAAC,wBAAwB,KAAK,SAAS;eAC3C,OAAO,KAAK,CAAC,wBAAwB,KAAK,SAAS,CAAC,EACzD,CAAC;QACD,OAAO,IAAI,CAAC,cAAc,EAAE,8BAA8B,EAAE,2CAA2C,CAAC,CAAC;IAC3G,CAAC;IACD,OAAO,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;QACtB,EAAE,EAAE,KAAK,CAAC,EAAE;QACZ,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,IAAI;QAChC,IAAI;QACJ,eAAe,EAAE,KAAK,CAAC,eAAe,IAAI,IAAI,KAAK,SAAS;QAC5D,wBAAwB,EAAE,KAAK,CAAC,wBAAwB,IAAI,IAAI,KAAK,OAAO;KAC7E,CAAC,CAAC,CAAC;AACN,CAAC;AAED,SAAS,iBAAiB,CAAI,MAAiB;IAC7C,IAAI,MAAM,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC5D,OAAO,IAAI,CAAC,sBAAsB,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AACrG,CAAC"}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export { applyListboxEvent, createListboxState, findListboxTypeaheadMatch, type ListboxCommand, type ListboxEvent, type ListboxPolicies, type ListboxSelectionMode, type ListboxState, type ListboxStateInput, type ListboxTypeaheadOptions, type ListboxUpdate, } from './internal/composites/listbox.js';
|
|
2
|
+
export { tryCreateListboxState } from './internal/composites/listbox.js';
|
|
3
|
+
//# sourceMappingURL=listbox.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"listbox.d.ts","sourceRoot":"","sources":["../src/listbox.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,yBAAyB,EACzB,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,KAAK,uBAAuB,EAC5B,KAAK,aAAa,GACnB,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC"}
|
package/dist/listbox.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"listbox.js","sourceRoot":"","sources":["../src/listbox.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,yBAAyB,GAS1B,MAAM,kCAAkC,CAAC;AAE1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { applyMenuEvent as applyMenuButtonEvent, createMenuState as createMenuButtonState, type MenuCommand as MenuButtonCommand, type MenuEvent as MenuButtonEvent, type MenuState as MenuButtonState, type MenuUpdate as MenuButtonUpdate } from './internal/composites/menu.js';
|
|
2
|
+
export { createMenuModel as createMenuButtonModel, type MenuModel as MenuButtonModel } from './menu.js';
|
|
3
|
+
export { tryCreateMenuModel as tryCreateMenuButtonModel } from './menu.js';
|
|
4
|
+
export { tryCreateMenuState as tryCreateMenuButtonState } from './internal/composites/menu.js';
|
|
5
|
+
//# sourceMappingURL=menu-button.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"menu-button.d.ts","sourceRoot":"","sources":["../src/menu-button.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,IAAI,oBAAoB,EAAE,eAAe,IAAI,qBAAqB,EAAE,KAAK,WAAW,IAAI,iBAAiB,EAAE,KAAK,SAAS,IAAI,eAAe,EAAE,KAAK,SAAS,IAAI,eAAe,EAAE,KAAK,UAAU,IAAI,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACnR,OAAO,EAAE,eAAe,IAAI,qBAAqB,EAAE,KAAK,SAAS,IAAI,eAAe,EAAE,MAAM,WAAW,CAAC;AAExG,OAAO,EAAE,kBAAkB,IAAI,wBAAwB,EAAE,MAAM,WAAW,CAAC;AAC3E,OAAO,EAAE,kBAAkB,IAAI,wBAAwB,EAAE,MAAM,+BAA+B,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { applyMenuEvent as applyMenuButtonEvent, createMenuState as createMenuButtonState } from './internal/composites/menu.js';
|
|
2
|
+
export { createMenuModel as createMenuButtonModel } from './menu.js';
|
|
3
|
+
export { tryCreateMenuModel as tryCreateMenuButtonModel } from './menu.js';
|
|
4
|
+
export { tryCreateMenuState as tryCreateMenuButtonState } from './internal/composites/menu.js';
|
|
5
|
+
//# sourceMappingURL=menu-button.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"menu-button.js","sourceRoot":"","sources":["../src/menu-button.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,IAAI,oBAAoB,EAAE,eAAe,IAAI,qBAAqB,EAAoJ,MAAM,+BAA+B,CAAC;AACnR,OAAO,EAAE,eAAe,IAAI,qBAAqB,EAAqC,MAAM,WAAW,CAAC;AAExG,OAAO,EAAE,kBAAkB,IAAI,wBAAwB,EAAE,MAAM,WAAW,CAAC;AAC3E,OAAO,EAAE,kBAAkB,IAAI,wBAAwB,EAAE,MAAM,+BAA+B,CAAC"}
|
package/dist/menu.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { Result, StableID } from './shared.js';
|
|
2
|
+
import { type Tree, type TreeNodeInput, type TreeOptions } from './structures/tree.js';
|
|
3
|
+
export interface MenuModel<ID extends StableID = StableID> {
|
|
4
|
+
readonly tree: Tree<ID>;
|
|
5
|
+
}
|
|
6
|
+
export declare function createMenuModel<ID extends StableID>(items: readonly TreeNodeInput<ID>[], options?: TreeOptions): MenuModel<ID>;
|
|
7
|
+
export declare function tryCreateMenuModel<ID extends StableID>(items: readonly TreeNodeInput<ID>[], options?: TreeOptions): Result<MenuModel<ID>>;
|
|
8
|
+
export { applyMenuEvent, createMenuState, type MenuCommand, type MenuEvent, type MenuPolicies, type MenuState, type MenuUpdate } from './internal/composites/menu.js';
|
|
9
|
+
export { tryCreateMenuState } from './internal/composites/menu.js';
|
|
10
|
+
//# sourceMappingURL=menu.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"menu.d.ts","sourceRoot":"","sources":["../src/menu.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAc,KAAK,IAAI,EAAE,KAAK,aAAa,EAAE,KAAK,WAAW,EAAgB,MAAM,sBAAsB,CAAC;AACjH,MAAM,WAAW,SAAS,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ;IAAI,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAA;CAAE;AACtF,wBAAgB,eAAe,CAAC,EAAE,SAAS,QAAQ,EAAE,KAAK,EAAE,SAAS,aAAa,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,GAAE,WAAgB,GAAG,SAAS,CAAC,EAAE,CAAC,CAElI;AAED,wBAAgB,kBAAkB,CAAC,EAAE,SAAS,QAAQ,EAAE,KAAK,EAAE,SAAS,aAAa,CAAC,EAAE,CAAC,EAAE,EAAE,OAAO,GAAE,WAAgB,GAAG,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAkI;AAChR,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,KAAK,WAAW,EAAE,KAAK,SAAS,EAAE,KAAK,YAAY,EAAE,KAAK,SAAS,EAAE,KAAK,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAEtK,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC"}
|
package/dist/menu.js
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { unwrap } from './result.js';
|
|
2
|
+
import { createTree, tryCreateTree } from './structures/tree.js';
|
|
3
|
+
export function createMenuModel(items, options = {}) {
|
|
4
|
+
return unwrap(tryCreateMenuModel(items, options));
|
|
5
|
+
}
|
|
6
|
+
export function tryCreateMenuModel(items, options = {}) { const tree = tryCreateTree(items, options); return tree.ok ? { ok: true, value: Object.freeze({ tree: tree.value }) } : tree; }
|
|
7
|
+
export { applyMenuEvent, createMenuState } from './internal/composites/menu.js';
|
|
8
|
+
export { tryCreateMenuState } from './internal/composites/menu.js';
|
|
9
|
+
//# sourceMappingURL=menu.js.map
|
package/dist/menu.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"menu.js","sourceRoot":"","sources":["../src/menu.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EAAE,UAAU,EAAkD,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAEjH,MAAM,UAAU,eAAe,CAAsB,KAAmC,EAAE,OAAO,GAAgB,EAAE;IACjH,OAAO,MAAM,CAAC,kBAAkB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAsB,KAAmC,EAAE,OAAO,GAAgB,EAAE,IAA2B,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;AAChR,OAAO,EAAE,cAAc,EAAE,eAAe,EAAwF,MAAM,+BAA+B,CAAC;AAEtK,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { applyMenuEvent as applyMenubarEvent, createMenuState as createMenubarState, type MenuCommand as MenubarCommand, type MenuEvent as MenubarEvent, type MenuState as MenubarState, type MenuUpdate as MenubarUpdate } from './internal/composites/menu.js';
|
|
2
|
+
export { createMenuModel as createMenubarModel, type MenuModel as MenubarModel } from './menu.js';
|
|
3
|
+
export { tryCreateMenuModel as tryCreateMenubarModel } from './menu.js';
|
|
4
|
+
export { tryCreateMenuState as tryCreateMenubarState } from './internal/composites/menu.js';
|
|
5
|
+
//# sourceMappingURL=menubar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"menubar.d.ts","sourceRoot":"","sources":["../src/menubar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,IAAI,iBAAiB,EAAE,eAAe,IAAI,kBAAkB,EAAE,KAAK,WAAW,IAAI,cAAc,EAAE,KAAK,SAAS,IAAI,YAAY,EAAE,KAAK,SAAS,IAAI,YAAY,EAAE,KAAK,UAAU,IAAI,aAAa,EAAE,MAAM,+BAA+B,CAAC;AACjQ,OAAO,EAAE,eAAe,IAAI,kBAAkB,EAAE,KAAK,SAAS,IAAI,YAAY,EAAE,MAAM,WAAW,CAAC;AAElG,OAAO,EAAE,kBAAkB,IAAI,qBAAqB,EAAE,MAAM,WAAW,CAAC;AACxE,OAAO,EAAE,kBAAkB,IAAI,qBAAqB,EAAE,MAAM,+BAA+B,CAAC"}
|
package/dist/menubar.js
ADDED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { applyMenuEvent as applyMenubarEvent, createMenuState as createMenubarState } from './internal/composites/menu.js';
|
|
2
|
+
export { createMenuModel as createMenubarModel } from './menu.js';
|
|
3
|
+
export { tryCreateMenuModel as tryCreateMenubarModel } from './menu.js';
|
|
4
|
+
export { tryCreateMenuState as tryCreateMenubarState } from './internal/composites/menu.js';
|
|
5
|
+
//# sourceMappingURL=menubar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"menubar.js","sourceRoot":"","sources":["../src/menubar.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,IAAI,iBAAiB,EAAE,eAAe,IAAI,kBAAkB,EAAwI,MAAM,+BAA+B,CAAC;AACjQ,OAAO,EAAE,eAAe,IAAI,kBAAkB,EAAkC,MAAM,WAAW,CAAC;AAElG,OAAO,EAAE,kBAAkB,IAAI,qBAAqB,EAAE,MAAM,WAAW,CAAC;AACxE,OAAO,EAAE,kBAAkB,IAAI,qBAAqB,EAAE,MAAM,+BAA+B,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { applyDatePickerEvent as applyMonthPickerEvent, createDatePickerState as createMonthPickerState, createDatePickerYear as createMonthPickerYear, isDatePickerValueAvailable as isMonthPickerValueAvailable, } from './date-picker.js';
|
|
2
|
+
export type { DatePickerCommand as MonthPickerCommand, DatePickerEvent as MonthPickerEvent, DatePickerMonthValue as MonthPickerValue, DatePickerPolicies as MonthPickerPolicies, DatePickerState as MonthPickerState, DatePickerStateInput as MonthPickerStateInput, DatePickerUpdate as MonthPickerUpdate, } from './date-picker.js';
|
|
3
|
+
export { tryCreateDatePickerState as tryCreateMonthPickerState } from './date-picker.js';
|
|
4
|
+
export { tryCreateDatePickerYear as tryCreateMonthPickerYear } from './date-picker.js';
|
|
5
|
+
//# sourceMappingURL=month-picker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"month-picker.d.ts","sourceRoot":"","sources":["../src/month-picker.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,IAAI,qBAAqB,EAC7C,qBAAqB,IAAI,sBAAsB,EAC/C,oBAAoB,IAAI,qBAAqB,EAC7C,0BAA0B,IAAI,2BAA2B,GAC1D,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EACV,iBAAiB,IAAI,kBAAkB,EACvC,eAAe,IAAI,gBAAgB,EACnC,oBAAoB,IAAI,gBAAgB,EACxC,kBAAkB,IAAI,mBAAmB,EACzC,eAAe,IAAI,gBAAgB,EACnC,oBAAoB,IAAI,qBAAqB,EAC7C,gBAAgB,IAAI,iBAAiB,GACtC,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,wBAAwB,IAAI,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AACzF,OAAO,EAAE,uBAAuB,IAAI,wBAAwB,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export { applyDatePickerEvent as applyMonthPickerEvent, createDatePickerState as createMonthPickerState, createDatePickerYear as createMonthPickerYear, isDatePickerValueAvailable as isMonthPickerValueAvailable, } from './date-picker.js';
|
|
2
|
+
export { tryCreateDatePickerState as tryCreateMonthPickerState } from './date-picker.js';
|
|
3
|
+
export { tryCreateDatePickerYear as tryCreateMonthPickerYear } from './date-picker.js';
|
|
4
|
+
//# sourceMappingURL=month-picker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"month-picker.js","sourceRoot":"","sources":["../src/month-picker.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,IAAI,qBAAqB,EAC7C,qBAAqB,IAAI,sBAAsB,EAC/C,oBAAoB,IAAI,qBAAqB,EAC7C,0BAA0B,IAAI,2BAA2B,GAC1D,MAAM,kBAAkB,CAAC;AAW1B,OAAO,EAAE,wBAAwB,IAAI,yBAAyB,EAAE,MAAM,kBAAkB,CAAC;AACzF,OAAO,EAAE,uBAAuB,IAAI,wBAAwB,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { applyDateRangePickerEvent as applyMonthRangePickerEvent, createDateRangePickerState as createMonthRangePickerState, } from './date-range-picker.js';
|
|
2
|
+
export type { DateRangePickerCommand as MonthRangePickerCommand, DateRangePickerEvent as MonthRangePickerEvent, DateRangePickerState as MonthRangePickerState, DateRangePickerStateInput as MonthRangePickerStateInput, DateRangePickerUpdate as MonthRangePickerUpdate, } from './date-range-picker.js';
|
|
3
|
+
export { createDatePickerYear as createMonthRangePickerYear } from './date-picker.js';
|
|
4
|
+
export { tryCreateDatePickerYear as tryCreateMonthRangePickerYear } from './date-picker.js';
|
|
5
|
+
export { tryCreateDateRangePickerState as tryCreateMonthRangePickerState } from './date-range-picker.js';
|
|
6
|
+
//# sourceMappingURL=month-range-picker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"month-range-picker.d.ts","sourceRoot":"","sources":["../src/month-range-picker.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,IAAI,0BAA0B,EACvD,0BAA0B,IAAI,2BAA2B,GAC1D,MAAM,wBAAwB,CAAC;AAChC,YAAY,EACV,sBAAsB,IAAI,uBAAuB,EACjD,oBAAoB,IAAI,qBAAqB,EAC7C,oBAAoB,IAAI,qBAAqB,EAC7C,yBAAyB,IAAI,0BAA0B,EACvD,qBAAqB,IAAI,sBAAsB,GAChD,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,oBAAoB,IAAI,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAEtF,OAAO,EAAE,uBAAuB,IAAI,6BAA6B,EAAE,MAAM,kBAAkB,CAAC;AAC5F,OAAO,EAAE,6BAA6B,IAAI,8BAA8B,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { applyDateRangePickerEvent as applyMonthRangePickerEvent, createDateRangePickerState as createMonthRangePickerState, } from './date-range-picker.js';
|
|
2
|
+
export { createDatePickerYear as createMonthRangePickerYear } from './date-picker.js';
|
|
3
|
+
export { tryCreateDatePickerYear as tryCreateMonthRangePickerYear } from './date-picker.js';
|
|
4
|
+
export { tryCreateDateRangePickerState as tryCreateMonthRangePickerState } from './date-range-picker.js';
|
|
5
|
+
//# sourceMappingURL=month-range-picker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"month-range-picker.js","sourceRoot":"","sources":["../src/month-range-picker.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,IAAI,0BAA0B,EACvD,0BAA0B,IAAI,2BAA2B,GAC1D,MAAM,wBAAwB,CAAC;AAQhC,OAAO,EAAE,oBAAoB,IAAI,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAEtF,OAAO,EAAE,uBAAuB,IAAI,6BAA6B,EAAE,MAAM,kBAAkB,CAAC;AAC5F,OAAO,EAAE,6BAA6B,IAAI,8BAA8B,EAAE,MAAM,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { Result, StableID } from './shared.js';
|
|
2
|
+
import type { QuantizedRange } from './structures/range.js';
|
|
3
|
+
import type { Sequence } from './structures/sequence.js';
|
|
4
|
+
import { type CursorState } from './internal/state/cursor.js';
|
|
5
|
+
export interface MultiThumbSliderState<ID extends StableID = StableID> {
|
|
6
|
+
readonly cursor: CursorState<ID>;
|
|
7
|
+
readonly ticks: readonly number[];
|
|
8
|
+
}
|
|
9
|
+
export type MultiThumbSliderEvent<ID extends StableID = StableID> = 'next-thumb' | 'previous-thumb' | 'increment' | 'decrement' | 'home' | 'end' | {
|
|
10
|
+
readonly type: 'focus';
|
|
11
|
+
readonly id: ID;
|
|
12
|
+
} | {
|
|
13
|
+
readonly type: 'set-tick';
|
|
14
|
+
readonly id: ID;
|
|
15
|
+
readonly tick: number;
|
|
16
|
+
};
|
|
17
|
+
export type MultiThumbSliderCommand<ID extends StableID = StableID> = {
|
|
18
|
+
readonly type: 'focus';
|
|
19
|
+
readonly id: ID;
|
|
20
|
+
} | {
|
|
21
|
+
readonly type: 'announce-tick';
|
|
22
|
+
readonly id: ID;
|
|
23
|
+
readonly tick: number;
|
|
24
|
+
};
|
|
25
|
+
export interface MultiThumbSliderPolicies {
|
|
26
|
+
readonly minGap?: number;
|
|
27
|
+
readonly allowCross?: boolean;
|
|
28
|
+
}
|
|
29
|
+
export interface MultiThumbSliderUpdate<ID extends StableID = StableID> {
|
|
30
|
+
readonly state: MultiThumbSliderState<ID>;
|
|
31
|
+
readonly commands: readonly MultiThumbSliderCommand<ID>[];
|
|
32
|
+
}
|
|
33
|
+
export declare function createMultiThumbSliderState<ID extends StableID>(thumbs: Sequence<ID>, range: QuantizedRange, ticks: readonly number[], current?: ID | null, policies?: MultiThumbSliderPolicies): MultiThumbSliderState<ID>;
|
|
34
|
+
export declare function tryCreateMultiThumbSliderState<ID extends StableID>(thumbs: Sequence<ID>, range: QuantizedRange, ticks: readonly number[], current?: ID | null, policies?: MultiThumbSliderPolicies): Result<MultiThumbSliderState<ID>>;
|
|
35
|
+
export declare function applyMultiThumbSliderEvent<ID extends StableID>(thumbs: Sequence<ID>, range: QuantizedRange, state: MultiThumbSliderState<ID>, event: MultiThumbSliderEvent<ID>, policies?: MultiThumbSliderPolicies): Result<MultiThumbSliderUpdate<ID>>;
|
|
36
|
+
//# sourceMappingURL=multi-thumb-slider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multi-thumb-slider.d.ts","sourceRoot":"","sources":["../src/multi-thumb-slider.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAGzD,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEjF,MAAM,WAAW,qBAAqB,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ;IAAI,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE;AAC9I,MAAM,MAAM,qBAAqB,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ,IAAI,YAAY,GAAG,gBAAgB,GAAG,WAAW,GAAG,WAAW,GAAG,MAAM,GAAG,KAAK,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAA;CAAE,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AACvQ,MAAM,MAAM,uBAAuB,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ,IAAI;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAA;CAAE,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAAC;AAC/L,MAAM,WAAW,wBAAwB;IAAG,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE;AACrG,MAAM,WAAW,sBAAsB,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ;IAAI,QAAQ,CAAC,KAAK,EAAE,qBAAqB,CAAC,EAAE,CAAC,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,uBAAuB,CAAC,EAAE,CAAC,EAAE,CAAA;CAAE;AAEhL,wBAAgB,2BAA2B,CAAC,EAAE,SAAS,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,EAAE,OAAO,GAAE,EAAE,GAAG,IAAW,EAAE,QAAQ,GAAE,wBAA6B,GAAG,qBAAqB,CAAC,EAAE,CAAC,CAErO;AAED,wBAAgB,8BAA8B,CAAC,EAAE,SAAS,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,SAAS,MAAM,EAAE,EAAE,OAAO,GAAE,EAAE,GAAG,IAAW,EAAE,QAAQ,GAAE,wBAA6B,GAAG,MAAM,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC,CAWhP;AAED,wBAAgB,0BAA0B,CAAC,EAAE,SAAS,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,qBAAqB,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,qBAAqB,CAAC,EAAE,CAAC,EAAE,QAAQ,GAAE,wBAA6B,GAAG,MAAM,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC,CAgC5P"}
|