@sectile/core 0.6.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (262) hide show
  1. package/dist/accordion.d.ts +0 -1
  2. package/dist/adapter-runtime.d.ts +53 -2
  3. package/dist/adapter-runtime.js +224 -25
  4. package/dist/adapter-runtime.js.map +1 -1
  5. package/dist/alert-dialog.d.ts +0 -1
  6. package/dist/carousel.d.ts +0 -1
  7. package/dist/cascade-list.d.ts +16 -0
  8. package/dist/cascade-list.js +33 -0
  9. package/dist/cascade-list.js.map +1 -0
  10. package/dist/cascade-select.d.ts +0 -1
  11. package/dist/cascade-select.js +47 -119
  12. package/dist/cascade-select.js.map +1 -1
  13. package/dist/checkbox-group.d.ts +0 -1
  14. package/dist/checkbox.d.ts +0 -1
  15. package/dist/collection-window.d.ts +0 -1
  16. package/dist/color-picker.d.ts +3 -8
  17. package/dist/color-picker.js +60 -305
  18. package/dist/color-picker.js.map +1 -1
  19. package/dist/combobox.d.ts +0 -1
  20. package/dist/dialog.d.ts +0 -1
  21. package/dist/disclosure.d.ts +0 -1
  22. package/dist/drawer.d.ts +0 -1
  23. package/dist/editable.d.ts +0 -1
  24. package/dist/editing/color-text.d.ts +7 -0
  25. package/dist/editing/color-text.js +199 -0
  26. package/dist/editing/color-text.js.map +1 -0
  27. package/dist/error-code.d.ts +1 -2
  28. package/dist/feed.d.ts +0 -1
  29. package/dist/grid-control.d.ts +3 -0
  30. package/dist/grid-control.js +2 -0
  31. package/dist/grid-control.js.map +1 -0
  32. package/dist/identity.d.ts +10 -0
  33. package/dist/identity.js +16 -0
  34. package/dist/identity.js.map +1 -0
  35. package/dist/index.d.ts +2 -2
  36. package/dist/interaction.d.ts +0 -1
  37. package/dist/internal/composites/cascade-choice.d.ts +54 -0
  38. package/dist/internal/composites/cascade-choice.js +154 -0
  39. package/dist/internal/composites/cascade-choice.js.map +1 -0
  40. package/dist/internal/composites/combobox.d.ts +0 -1
  41. package/dist/internal/composites/combobox.js +28 -11
  42. package/dist/internal/composites/combobox.js.map +1 -1
  43. package/dist/internal/composites/grid-control.d.ts +0 -1
  44. package/dist/internal/composites/grid-control.js +18 -23
  45. package/dist/internal/composites/grid-control.js.map +1 -1
  46. package/dist/internal/composites/linear-action.d.ts +0 -1
  47. package/dist/internal/composites/linear-action.js +20 -14
  48. package/dist/internal/composites/linear-action.js.map +1 -1
  49. package/dist/internal/composites/linear-choice.d.ts +0 -1
  50. package/dist/internal/composites/linear-choice.js +15 -8
  51. package/dist/internal/composites/linear-choice.js.map +1 -1
  52. package/dist/internal/composites/listbox.d.ts +0 -1
  53. package/dist/internal/composites/listbox.js +15 -13
  54. package/dist/internal/composites/listbox.js.map +1 -1
  55. package/dist/internal/composites/menu.d.ts +0 -1
  56. package/dist/internal/composites/menu.js +38 -17
  57. package/dist/internal/composites/menu.js.map +1 -1
  58. package/dist/internal/composites/popup.d.ts +0 -1
  59. package/dist/internal/composites/slider.d.ts +0 -1
  60. package/dist/internal/composites/tree-grid.d.ts +0 -1
  61. package/dist/internal/composites/tree-grid.js +70 -48
  62. package/dist/internal/composites/tree-grid.js.map +1 -1
  63. package/dist/internal/composites/tree-view.d.ts +0 -1
  64. package/dist/internal/composites/tree-view.js +32 -20
  65. package/dist/internal/composites/tree-view.js.map +1 -1
  66. package/dist/internal/editing/text.d.ts +0 -1
  67. package/dist/internal/editing/text.js +40 -27
  68. package/dist/internal/editing/text.js.map +1 -1
  69. package/dist/internal/kernel/bounded-scalar.d.ts +31 -0
  70. package/dist/internal/kernel/bounded-scalar.js +78 -0
  71. package/dist/internal/kernel/bounded-scalar.js.map +1 -0
  72. package/dist/internal/kernel/decimal.d.ts +0 -1
  73. package/dist/internal/kernel/exact-ratio.d.ts +5 -0
  74. package/dist/internal/kernel/exact-ratio.js +2 -0
  75. package/dist/internal/kernel/exact-ratio.js.map +1 -0
  76. package/dist/internal/kernel/foundation.d.ts +8 -6
  77. package/dist/internal/kernel/foundation.js +35 -16
  78. package/dist/internal/kernel/foundation.js.map +1 -1
  79. package/dist/internal/kernel/indexed-sequence.d.ts +32 -3
  80. package/dist/internal/kernel/indexed-sequence.js +167 -13
  81. package/dist/internal/kernel/indexed-sequence.js.map +1 -1
  82. package/dist/internal/kernel/machine.d.ts +1 -2
  83. package/dist/internal/kernel/machine.js +5 -2
  84. package/dist/internal/kernel/machine.js.map +1 -1
  85. package/dist/internal/runtime/revision.d.ts +0 -1
  86. package/dist/internal/state/checked.d.ts +0 -1
  87. package/dist/internal/state/cursor.d.ts +0 -1
  88. package/dist/internal/state/expansion.d.ts +0 -1
  89. package/dist/internal/state/open-state.d.ts +0 -1
  90. package/dist/internal/state/selection.d.ts +0 -1
  91. package/dist/internal/state/selection.js +99 -27
  92. package/dist/internal/state/selection.js.map +1 -1
  93. package/dist/layer-stack.d.ts +0 -1
  94. package/dist/listbox.d.ts +0 -1
  95. package/dist/menu-button.d.ts +0 -1
  96. package/dist/menu.d.ts +0 -1
  97. package/dist/menubar.d.ts +0 -1
  98. package/dist/meter-group.d.ts +38 -0
  99. package/dist/meter-group.js +103 -0
  100. package/dist/meter-group.js.map +1 -0
  101. package/dist/meter.d.ts +25 -0
  102. package/dist/meter.js +89 -0
  103. package/dist/meter.js.map +1 -0
  104. package/dist/multi-thumb-slider.d.ts +0 -1
  105. package/dist/navigation-menu.d.ts +0 -1
  106. package/dist/number-field.d.ts +0 -1
  107. package/dist/pagination.d.ts +0 -1
  108. package/dist/pin-input.d.ts +0 -1
  109. package/dist/popover.d.ts +0 -1
  110. package/dist/progress.d.ts +17 -0
  111. package/dist/progress.js +49 -0
  112. package/dist/progress.js.map +1 -0
  113. package/dist/quantity-field.d.ts +0 -1
  114. package/dist/radio-group.d.ts +0 -1
  115. package/dist/rating.d.ts +0 -1
  116. package/dist/reorder.d.ts +0 -1
  117. package/dist/reorder.js +92 -43
  118. package/dist/reorder.js.map +1 -1
  119. package/dist/result.d.ts +2 -1
  120. package/dist/result.js +14 -0
  121. package/dist/result.js.map +1 -1
  122. package/dist/revision.d.ts +1 -1
  123. package/dist/revision.js +1 -0
  124. package/dist/revision.js.map +1 -1
  125. package/dist/select.d.ts +0 -1
  126. package/dist/selection.d.ts +24 -0
  127. package/dist/selection.js +20 -0
  128. package/dist/selection.js.map +1 -0
  129. package/dist/shared.d.ts +0 -1
  130. package/dist/slider.d.ts +0 -1
  131. package/dist/spin-button.d.ts +0 -1
  132. package/dist/stepper.d.ts +0 -1
  133. package/dist/structures/anchored-layout.d.ts +33 -0
  134. package/dist/structures/anchored-layout.js +158 -0
  135. package/dist/structures/anchored-layout.js.map +1 -0
  136. package/dist/structures/color.d.ts +80 -0
  137. package/dist/structures/color.js +206 -0
  138. package/dist/structures/color.js.map +1 -0
  139. package/dist/structures/geometry.d.ts +53 -0
  140. package/dist/structures/geometry.js +165 -0
  141. package/dist/structures/geometry.js.map +1 -0
  142. package/dist/structures/grid.d.ts +20 -4
  143. package/dist/structures/grid.js +91 -50
  144. package/dist/structures/grid.js.map +1 -1
  145. package/dist/structures/index-span.d.ts +31 -0
  146. package/dist/structures/index-span.js +267 -0
  147. package/dist/structures/index-span.js.map +1 -0
  148. package/dist/structures/metric-index.d.ts +36 -0
  149. package/dist/structures/metric-index.js +390 -0
  150. package/dist/structures/metric-index.js.map +1 -0
  151. package/dist/structures/range.d.ts +21 -4
  152. package/dist/structures/range.js +156 -11
  153. package/dist/structures/range.js.map +1 -1
  154. package/dist/structures/selection-expression.d.ts +26 -0
  155. package/dist/structures/selection-expression.js +157 -0
  156. package/dist/structures/selection-expression.js.map +1 -0
  157. package/dist/structures/sequence.d.ts +2 -1
  158. package/dist/structures/sequence.js +69 -4
  159. package/dist/structures/sequence.js.map +1 -1
  160. package/dist/structures/tree.d.ts +5 -1
  161. package/dist/structures/tree.js +33 -5
  162. package/dist/structures/tree.js.map +1 -1
  163. package/dist/switch.d.ts +0 -1
  164. package/dist/tabs.d.ts +0 -1
  165. package/dist/tags-input.d.ts +0 -1
  166. package/dist/text.d.ts +0 -1
  167. package/dist/timer.d.ts +0 -1
  168. package/dist/toast.d.ts +2 -2
  169. package/dist/toast.js +3 -1
  170. package/dist/toast.js.map +1 -1
  171. package/dist/toggle-button.d.ts +0 -1
  172. package/dist/toggle-group.d.ts +0 -1
  173. package/dist/toolbar.d.ts +0 -1
  174. package/dist/tooltip.d.ts +0 -1
  175. package/dist/tree-grid.d.ts +0 -1
  176. package/dist/tree-view.d.ts +0 -1
  177. package/dist/units.d.ts +0 -1
  178. package/dist/window-splitter.d.ts +0 -1
  179. package/package.json +75 -12
  180. package/dist/accordion.d.ts.map +0 -1
  181. package/dist/adapter-runtime.d.ts.map +0 -1
  182. package/dist/alert-dialog.d.ts.map +0 -1
  183. package/dist/carousel.d.ts.map +0 -1
  184. package/dist/cascade-select.d.ts.map +0 -1
  185. package/dist/checkbox-group.d.ts.map +0 -1
  186. package/dist/checkbox.d.ts.map +0 -1
  187. package/dist/collection-window.d.ts.map +0 -1
  188. package/dist/color-picker.d.ts.map +0 -1
  189. package/dist/combobox.d.ts.map +0 -1
  190. package/dist/dialog.d.ts.map +0 -1
  191. package/dist/disclosure.d.ts.map +0 -1
  192. package/dist/drawer.d.ts.map +0 -1
  193. package/dist/editable.d.ts.map +0 -1
  194. package/dist/error-code.d.ts.map +0 -1
  195. package/dist/feed.d.ts.map +0 -1
  196. package/dist/form.d.ts +0 -135
  197. package/dist/form.d.ts.map +0 -1
  198. package/dist/form.js +0 -627
  199. package/dist/form.js.map +0 -1
  200. package/dist/index.d.ts.map +0 -1
  201. package/dist/interaction.d.ts.map +0 -1
  202. package/dist/internal/composites/combobox.d.ts.map +0 -1
  203. package/dist/internal/composites/grid-control.d.ts.map +0 -1
  204. package/dist/internal/composites/linear-action.d.ts.map +0 -1
  205. package/dist/internal/composites/linear-choice.d.ts.map +0 -1
  206. package/dist/internal/composites/listbox.d.ts.map +0 -1
  207. package/dist/internal/composites/menu.d.ts.map +0 -1
  208. package/dist/internal/composites/popup.d.ts.map +0 -1
  209. package/dist/internal/composites/slider.d.ts.map +0 -1
  210. package/dist/internal/composites/tree-grid.d.ts.map +0 -1
  211. package/dist/internal/composites/tree-view.d.ts.map +0 -1
  212. package/dist/internal/editing/text.d.ts.map +0 -1
  213. package/dist/internal/kernel/decimal.d.ts.map +0 -1
  214. package/dist/internal/kernel/foundation.d.ts.map +0 -1
  215. package/dist/internal/kernel/indexed-sequence.d.ts.map +0 -1
  216. package/dist/internal/kernel/machine.d.ts.map +0 -1
  217. package/dist/internal/runtime/revision.d.ts.map +0 -1
  218. package/dist/internal/state/checked.d.ts.map +0 -1
  219. package/dist/internal/state/cursor.d.ts.map +0 -1
  220. package/dist/internal/state/expansion.d.ts.map +0 -1
  221. package/dist/internal/state/open-state.d.ts.map +0 -1
  222. package/dist/internal/state/selection.d.ts.map +0 -1
  223. package/dist/layer-stack.d.ts.map +0 -1
  224. package/dist/listbox.d.ts.map +0 -1
  225. package/dist/menu-button.d.ts.map +0 -1
  226. package/dist/menu.d.ts.map +0 -1
  227. package/dist/menubar.d.ts.map +0 -1
  228. package/dist/multi-thumb-slider.d.ts.map +0 -1
  229. package/dist/navigation-menu.d.ts.map +0 -1
  230. package/dist/number-field.d.ts.map +0 -1
  231. package/dist/pagination.d.ts.map +0 -1
  232. package/dist/pin-input.d.ts.map +0 -1
  233. package/dist/popover.d.ts.map +0 -1
  234. package/dist/quantity-field.d.ts.map +0 -1
  235. package/dist/radio-group.d.ts.map +0 -1
  236. package/dist/rating.d.ts.map +0 -1
  237. package/dist/reorder.d.ts.map +0 -1
  238. package/dist/result.d.ts.map +0 -1
  239. package/dist/revision.d.ts.map +0 -1
  240. package/dist/select.d.ts.map +0 -1
  241. package/dist/shared.d.ts.map +0 -1
  242. package/dist/slider.d.ts.map +0 -1
  243. package/dist/spin-button.d.ts.map +0 -1
  244. package/dist/stepper.d.ts.map +0 -1
  245. package/dist/structures/grid.d.ts.map +0 -1
  246. package/dist/structures/range.d.ts.map +0 -1
  247. package/dist/structures/sequence.d.ts.map +0 -1
  248. package/dist/structures/tree.d.ts.map +0 -1
  249. package/dist/switch.d.ts.map +0 -1
  250. package/dist/tabs.d.ts.map +0 -1
  251. package/dist/tags-input.d.ts.map +0 -1
  252. package/dist/text.d.ts.map +0 -1
  253. package/dist/timer.d.ts.map +0 -1
  254. package/dist/toast.d.ts.map +0 -1
  255. package/dist/toggle-button.d.ts.map +0 -1
  256. package/dist/toggle-group.d.ts.map +0 -1
  257. package/dist/toolbar.d.ts.map +0 -1
  258. package/dist/tooltip.d.ts.map +0 -1
  259. package/dist/tree-grid.d.ts.map +0 -1
  260. package/dist/tree-view.d.ts.map +0 -1
  261. package/dist/units.d.ts.map +0 -1
  262. package/dist/window-splitter.d.ts.map +0 -1
@@ -1,6 +1,18 @@
1
1
  import { unwrap } from './result.js';
2
2
  import { fail, freezeArray, ok } from './internal/kernel/foundation.js';
3
3
  import { createMachineUpdate } from './internal/kernel/machine.js';
4
+ import { applyCascadeChoiceEvent, getCascadeChoiceColumns, getCascadeChoiceValuePath, tryCreateCascadeChoiceState, } from './internal/composites/cascade-choice.js';
5
+ const errors = Object.freeze({
6
+ label: 'Cascade select',
7
+ valueOutsideTree: 'cascade-select-value-outside-tree',
8
+ highlightOutsideTree: 'cascade-select-highlight-outside-tree',
9
+ pathOutsideTree: 'cascade-select-path-outside-tree',
10
+ leafInPath: 'cascade-select-leaf-in-path',
11
+ invalidPath: 'invalid-cascade-select-path',
12
+ targetUnavailable: 'cascade-select-target-unavailable',
13
+ targetDisabled: 'cascade-select-target-disabled',
14
+ targetUnselectable: 'cascade-select-target-unselectable',
15
+ });
4
16
  export function createCascadeSelectState(tree, input = {}) {
5
17
  return unwrap(tryCreateCascadeSelectState(tree, input));
6
18
  }
@@ -8,34 +20,16 @@ export function tryCreateCascadeSelectState(tree, input = {}) {
8
20
  if (input.open !== undefined && typeof input.open !== 'boolean') {
9
21
  return fail('construction', 'invalid-cascade-select-open', 'Cascade select open state must be boolean.');
10
22
  }
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) }));
23
+ const choice = tryCreateCascadeChoiceState(tree, input, errors);
24
+ if (!choice.ok)
25
+ return choice;
26
+ return ok(createSelectState(input.open ?? false, choice.value));
25
27
  }
26
28
  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)));
29
+ return getCascadeChoiceColumns(tree, state);
34
30
  }
35
31
  export function getCascadeSelectValuePath(tree, value) {
36
- return value === null
37
- ? freezeArray([])
38
- : freezeArray([...(tree.ancestorsOf(value) ?? [])].reverse().concat(value));
32
+ return getCascadeChoiceValuePath(tree, value);
39
33
  }
40
34
  export function applyCascadeSelectEvent(tree, state, event, policies = {}) {
41
35
  const valid = tryCreateCascadeSelectState(tree, state);
@@ -43,106 +37,40 @@ export function applyCascadeSelectEvent(tree, state, event, policies = {}) {
43
37
  return { ok: false, error: { ...valid.error, class: 'transition-rejection' } };
44
38
  if (event === 'open' || event === 'close' || event === 'toggle') {
45
39
  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];
40
+ return createMachineUpdate(open === state.open ? state : createSelectState(open, state));
89
41
  }
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.');
42
+ const result = applyCascadeChoiceEvent(tree, state, event, policies, errors);
43
+ if (!result.ok)
44
+ return result;
45
+ const { activity, state: choice, commands: choiceCommands } = result.value;
46
+ const open = activity === 'commit'
47
+ ? false
48
+ : activity === 'focus' || activity === 'branch'
49
+ ? true
50
+ : state.open;
51
+ const commands = [...choiceCommands];
52
+ if (activity === 'focus' && choiceCommands.length === 0 && !state.open && choice.highlighted !== null) {
53
+ commands.push({ type: 'focus', id: choice.highlighted });
120
54
  }
121
- return null;
55
+ if (activity === 'commit')
56
+ commands.push({ type: 'close-popup' });
57
+ const next = sameChoiceState(state, choice) && open === state.open
58
+ ? state
59
+ : createSelectState(open, choice);
60
+ return createMachineUpdate(next, commands);
122
61
  }
123
- function cascadeState(state, patch) {
62
+ function createSelectState(open, choice) {
124
63
  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),
64
+ open,
65
+ value: choice.value,
66
+ highlighted: choice.highlighted,
67
+ path: freezeArray(choice.path),
129
68
  });
130
69
  }
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;
70
+ function sameChoiceState(state, choice) {
71
+ return state.value === choice.value
72
+ && state.highlighted === choice.highlighted
73
+ && state.path.length === choice.path.length
74
+ && state.path.every((id, index) => id === choice.path[index]);
147
75
  }
148
76
  //# sourceMappingURL=cascade-select.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"cascade-select.js","sourceRoot":"","sources":["../src/cascade-select.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cascade-select.js","sourceRoot":"","sources":["../src/cascade-select.ts"],"names":[],"mappings":"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"}
@@ -10,4 +10,3 @@ export type CheckboxGroupUpdate<ID extends StableID = StableID> = ListboxUpdate<
10
10
  export declare function createCheckboxGroupState<ID extends StableID>(domain: Sequence<ID>, input?: CheckboxGroupStateInput<ID>): CheckboxGroupState<ID>;
11
11
  export declare function tryCreateCheckboxGroupState<ID extends StableID>(domain: Sequence<ID>, input?: CheckboxGroupStateInput<ID>): Result<CheckboxGroupState<ID>>;
12
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
@@ -1,3 +1,2 @@
1
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
2
  export { tryCreateCheckedState as tryCreateCheckboxState } from './internal/state/checked.js';
3
- //# sourceMappingURL=checkbox.d.ts.map
@@ -48,4 +48,3 @@ export declare function tryCreateCollectionWindowState<ID extends StableID = Sta
48
48
  export declare function applyCollectionWindowEvent<ID extends StableID>(state: CollectionWindowState<ID>, event: CollectionWindowEvent<ID>): Result<CollectionWindowUpdate<ID>>;
49
49
  export declare function synchronizeCollectionWindow<ID extends StableID>(state: CollectionWindowState<ID>, replacement: CollectionWindowReplacement): Result<CollectionWindowState<ID>>;
50
50
  export declare function canRequestCollectionWindow<ID extends StableID>(state: CollectionWindowState<ID>, direction: CollectionWindowDirection): boolean;
51
- //# sourceMappingURL=collection-window.d.ts.map
@@ -1,4 +1,5 @@
1
1
  import type { Result } from './shared.js';
2
+ import { type Rgba8 } from './structures/color.js';
2
3
  export type ColorChannel = 'red' | 'green' | 'blue' | 'alpha';
3
4
  export type ColorFormat = 'hex' | 'rgb' | 'hsl' | 'hsv' | 'cmyk' | 'oklch';
4
5
  export type ColorModel = Exclude<ColorFormat, 'hex'>;
@@ -21,13 +22,8 @@ export interface ColorAreaValue {
21
22
  /** Opacity in the inclusive 0..1 interval. */
22
23
  readonly alpha: number;
23
24
  }
24
- export interface ColorValue {
25
- readonly red: number;
26
- readonly green: number;
27
- readonly blue: number;
28
- /** Integer opacity in the inclusive 0..255 interval. */
29
- readonly alpha: number;
30
- }
25
+ /** Integer RGBA channels in the inclusive 0..255 interval. */
26
+ export type ColorValue = Rgba8;
31
27
  export interface ColorPickerState {
32
28
  readonly value: ColorValue;
33
29
  readonly draft: string | null;
@@ -98,4 +94,3 @@ export declare function setColorCoordinate(value: ColorValue, format: ColorModel
98
94
  export declare function createColorPickerState(input?: ColorPickerStateInput, policies?: ColorPickerPolicies): ColorPickerState;
99
95
  export declare function tryCreateColorPickerState(input?: ColorPickerStateInput, policies?: ColorPickerPolicies): Result<ColorPickerState>;
100
96
  export declare function applyColorPickerEvent(state: ColorPickerState, event: ColorPickerEvent, policies?: ColorPickerPolicies): Result<ColorPickerUpdate>;
101
- //# sourceMappingURL=color-picker.d.ts.map