@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,15 +1,16 @@
1
1
  import { unwrap } from '../../result.js';
2
- import { fail, ok } from '../kernel/foundation.js';
2
+ import { bindCanonicalState, fail, hasCanonicalState, memoizeWeakPair, ok } from '../kernel/foundation.js';
3
3
  import { createMachineUpdate } from '../kernel/machine.js';
4
4
  import { createCursorState } from '../state/cursor.js';
5
5
  import { createExpansionState, setExpansionOpen, } from '../state/expansion.js';
6
6
  import { createSelectionState, selectOne, toggleMultipleSelection, } from '../state/selection.js';
7
+ const treeVisibleViews = new WeakMap();
7
8
  export function createTreeViewState(tree, input = {}, selectionMode = 'multiple') {
8
9
  return unwrap(tryCreateTreeViewState(tree, input, selectionMode));
9
10
  }
10
11
  export function tryCreateTreeViewState(tree, input = {}, selectionMode = 'multiple') {
11
12
  const expansion = createExpansionState(tree, input.expanded ?? []);
12
- const visible = tree.visible(expansion);
13
+ const visible = treeVisible(tree, expansion);
13
14
  const current = input.current ?? null;
14
15
  if (current !== null && !visible.contains(current)) {
15
16
  return fail('construction', 'tree-view-cursor-hidden', 'Tree-view cursor must be visible under the requested expansion.', { current });
@@ -17,13 +18,14 @@ export function tryCreateTreeViewState(tree, input = {}, selectionMode = 'multip
17
18
  const selection = createSelectionState(tree.preorder(), selectionMode, input);
18
19
  if (!selection.ok)
19
20
  return selection;
20
- return ok(treeViewState(expansion, createCursorState(current), selection.value));
21
+ return ok(treeViewState(tree, expansion, createCursorState(current), selection.value));
21
22
  }
22
23
  export function applyTreeViewEvent(tree, state, event, policies = {}) {
23
24
  if (!isTreeViewEvent(event)) {
24
25
  return fail('transition-rejection', 'invalid-tree-view-event', 'Tree-view event must be next, previous, right, left, or toggle-select.', { event });
25
26
  }
26
- const expansion = createExpansionState(tree, state.expansion.ids);
27
+ const canonical = hasCanonicalState(tree, state);
28
+ const expansion = canonical ? state.expansion : createExpansionState(tree, state.expansion.ids);
27
29
  if (policies.eligible !== undefined && typeof policies.eligible !== 'function') {
28
30
  return fail('transition-rejection', 'invalid-eligibility-policy', 'Tree-view eligibility policy must be a function.');
29
31
  }
@@ -32,25 +34,27 @@ export function applyTreeViewEvent(tree, state, event, policies = {}) {
32
34
  if (selectionMode !== 'single' && selectionMode !== 'multiple') {
33
35
  return fail('transition-rejection', 'invalid-selection-mode', 'Tree-view selection mode must be single or multiple.', { selectionMode });
34
36
  }
35
- const visible = tree.visible(expansion);
36
- const stateError = validateTreeViewState(tree, visible, state, selectionMode);
37
+ const visible = treeVisible(tree, expansion);
38
+ const stateError = canonical ? null : validateTreeViewState(tree, visible, state, selectionMode);
37
39
  if (stateError !== null)
38
40
  return { ok: false, error: stateError };
39
41
  const normalized = sameExpansion(expansion, state.expansion)
40
42
  ? state
41
- : treeViewState(expansion, state.cursor, state.selection);
43
+ : treeViewState(tree, expansion, state.cursor, state.selection);
42
44
  const current = state.cursor.current;
43
45
  if (typeof event === 'object') {
44
46
  if (!tree.has(event.id)) {
45
47
  return fail('transition-rejection', 'tree-view-target-outside-tree', 'Direct tree-view events require an identity in the tree.', { id: event.id });
46
48
  }
47
49
  if (event.type === 'set-expanded') {
50
+ if (!visible.contains(event.id))
51
+ return fail('transition-rejection', 'tree-view-target-hidden', 'Expansion changes require a visible tree-view item.', { id: event.id });
48
52
  if (!eligible(event.id))
49
53
  return fail('transition-rejection', 'tree-view-target-ineligible', 'Disabled tree-view items cannot change expansion.', { id: event.id });
50
54
  const nextExpansion = setExpansionOpen(expansion, event.id, event.open, tree);
51
- const nextVisible = tree.visible(nextExpansion);
55
+ const nextVisible = treeVisible(tree, nextExpansion);
52
56
  const target = current !== null && nextVisible.contains(current) ? current : event.id;
53
- return createMachineUpdate(treeViewState(nextExpansion, createCursorState(target), state.selection), target === current ? [] : [{ type: 'focus', id: target }]);
57
+ return createMachineUpdate(treeViewState(tree, nextExpansion, createCursorState(target), state.selection), target === current ? [] : [{ type: 'focus', id: target }]);
54
58
  }
55
59
  if (!visible.contains(event.id)) {
56
60
  return fail('transition-rejection', 'tree-view-target-hidden', 'Direct tree-view focus and selection require a visible identity.', { id: event.id });
@@ -58,9 +62,9 @@ export function applyTreeViewEvent(tree, state, event, policies = {}) {
58
62
  if (!eligible(event.id))
59
63
  return fail('transition-rejection', 'tree-view-target-ineligible', 'Direct tree-view focus and selection require an eligible identity.', { id: event.id });
60
64
  if (event.type === 'focus') {
61
- return createMachineUpdate(treeViewState(expansion, createCursorState(event.id), state.selection), [{ type: 'focus', id: event.id }]);
65
+ return createMachineUpdate(treeViewState(tree, expansion, createCursorState(event.id), state.selection), [{ type: 'focus', id: event.id }]);
62
66
  }
63
- return createMachineUpdate(treeViewState(expansion, createCursorState(event.id), selectForMode(state.selection, event.id, tree.preorder(), selectionMode)), [{ type: 'focus', id: event.id }]);
67
+ return createMachineUpdate(treeViewState(tree, expansion, createCursorState(event.id), selectForMode(state.selection, event.id, tree.preorder(), selectionMode)), [{ type: 'focus', id: event.id }]);
64
68
  }
65
69
  if (event === 'next' || event === 'previous') {
66
70
  const target = current === null
@@ -68,7 +72,7 @@ export function applyTreeViewEvent(tree, state, event, policies = {}) {
68
72
  : movementTarget(visible, current, event === 'next' ? 1 : -1, eligible);
69
73
  if (target === null)
70
74
  return createMachineUpdate(normalized);
71
- return createMachineUpdate(treeViewState(expansion, createCursorState(target), state.selection), [{ type: 'focus', id: target }]);
75
+ return createMachineUpdate(treeViewState(tree, expansion, createCursorState(target), state.selection), [{ type: 'focus', id: target }]);
72
76
  }
73
77
  if (event === 'right') {
74
78
  if (current === null)
@@ -77,30 +81,30 @@ export function applyTreeViewEvent(tree, state, event, policies = {}) {
77
81
  if (children === null || children.size === 0)
78
82
  return createMachineUpdate(normalized);
79
83
  if (!expansion.has(current)) {
80
- return createMachineUpdate(treeViewState(setExpansionOpen(expansion, current, true, tree), state.cursor, state.selection));
84
+ return createMachineUpdate(treeViewState(tree, setExpansionOpen(expansion, current, true, tree), state.cursor, state.selection));
81
85
  }
82
86
  const target = eligibleFromEdge(children, 1, eligible);
83
87
  if (target === null)
84
88
  return createMachineUpdate(normalized);
85
- return createMachineUpdate(treeViewState(expansion, createCursorState(target), state.selection), [{ type: 'focus', id: target }]);
89
+ return createMachineUpdate(treeViewState(tree, expansion, createCursorState(target), state.selection), [{ type: 'focus', id: target }]);
86
90
  }
87
91
  if (event === 'left') {
88
92
  if (current === null)
89
93
  return createMachineUpdate(normalized);
90
94
  if (expansion.has(current)) {
91
- return createMachineUpdate(treeViewState(setExpansionOpen(expansion, current, false, tree), state.cursor, state.selection));
95
+ return createMachineUpdate(treeViewState(tree, setExpansionOpen(expansion, current, false, tree), state.cursor, state.selection));
92
96
  }
93
97
  const parent = eligibleAncestor(tree, current, eligible);
94
98
  if (parent === null)
95
99
  return createMachineUpdate(normalized);
96
- return createMachineUpdate(treeViewState(expansion, createCursorState(parent), state.selection), [{ type: 'focus', id: parent }]);
100
+ return createMachineUpdate(treeViewState(tree, expansion, createCursorState(parent), state.selection), [{ type: 'focus', id: parent }]);
97
101
  }
98
102
  if (current === null) {
99
103
  return fail('transition-rejection', 'no-cursor', 'Tree-view selection requires a cursor.');
100
104
  }
101
105
  if (!eligible(current))
102
106
  return fail('transition-rejection', 'tree-view-target-ineligible', 'Tree-view selection requires an eligible cursor.', { id: current });
103
- return createMachineUpdate(treeViewState(expansion, state.cursor, selectForMode(state.selection, current, tree.preorder(), selectionMode)));
107
+ return createMachineUpdate(treeViewState(tree, expansion, state.cursor, selectForMode(state.selection, current, tree.preorder(), selectionMode)));
104
108
  }
105
109
  function movementTarget(visible, current, direction, eligible) {
106
110
  const index = visible.indexOf(current);
@@ -181,12 +185,20 @@ function selectForMode(state, id, domain, selectionMode) {
181
185
  function sameExpansion(left, right) {
182
186
  return left.ids.length === right.ids.length && left.ids.every((id, index) => id === right.ids[index]);
183
187
  }
184
- function treeViewState(expansion, cursor, selection) {
185
- return Object.freeze({ expansion, cursor, selection });
188
+ function treeViewState(tree, expansion, cursor, selection) {
189
+ return bindCanonicalState(tree, Object.freeze({ expansion, cursor, selection }));
186
190
  }
191
+ function treeVisible(tree, expansion) {
192
+ return memoizeWeakPair(treeVisibleViews, tree, expansion, createTreeVisible);
193
+ }
194
+ function createTreeVisible(owner, expansion) { return owner.visible(expansion); }
187
195
  function isTreeViewEvent(value) {
188
196
  if (typeof value === 'string') {
189
- return ['next', 'previous', 'right', 'left', 'toggle-select'].includes(value);
197
+ return value === 'next'
198
+ || value === 'previous'
199
+ || value === 'right'
200
+ || value === 'left'
201
+ || value === 'toggle-select';
190
202
  }
191
203
  return typeof value === 'object' && value !== null && 'type' in value && 'id' in value
192
204
  && typeof value.id === 'string'
@@ -1 +1 @@
1
- {"version":3,"file":"tree-view.js","sourceRoot":"","sources":["../../../src/internal/composites/tree-view.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAGzC,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,yBAAyB,CAAC;AACnD,OAAO,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAoB,MAAM,oBAAoB,CAAC;AACzE,OAAO,EACL,oBAAoB,EACpB,gBAAgB,GAEjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,oBAAoB,EACpB,SAAS,EACT,uBAAuB,GAGxB,MAAM,uBAAuB,CAAC;AAyC/B,MAAM,UAAU,mBAAmB,CACjC,IAAc,EACd,KAAK,GAA2B,EAAE,EAClC,aAAa,GAA0B,UAAU;IAEjD,OAAO,MAAM,CAAC,sBAAsB,CAAC,IAAI,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,IAAc,EACd,KAAK,GAA2B,EAAE,EAClC,aAAa,GAA0B,UAAU;IAEjD,MAAM,SAAS,GAAG,oBAAoB,CAAC,IAAI,EAAE,KAAK,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC;IACnE,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACxC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC;IACtC,IAAI,OAAO,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACnD,OAAO,IAAI,CACT,cAAc,EACd,yBAAyB,EACzB,iEAAiE,EACjE,EAAE,OAAO,EAAE,CACZ,CAAC;IACJ,CAAC;IACD,MAAM,SAAS,GAAG,oBAAoB,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;IAC9E,IAAI,CAAC,SAAS,CAAC,EAAE;QAAE,OAAO,SAAS,CAAC;IACpC,OAAO,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,iBAAiB,CAAC,OAAO,CAAC,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;AACnF,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,IAAc,EACd,KAAwB,EACxB,KAAwB,EACxB,QAAQ,GAAyB,EAAE;IAEnC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,OAAO,IAAI,CACT,sBAAsB,EACtB,yBAAyB,EACzB,wEAAwE,EACxE,EAAE,KAAK,EAAE,CACV,CAAC;IACJ,CAAC;IACD,MAAM,SAAS,GAAG,oBAAoB,CAAC,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IAClE,IAAI,QAAQ,CAAC,QAAQ,KAAK,SAAS,IAAI,OAAO,QAAQ,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;QAC/E,OAAO,IAAI,CAAC,sBAAsB,EAAE,4BAA4B,EAAE,kDAAkD,CAAC,CAAC;IACxH,CAAC;IACD,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IACnD,MAAM,aAAa,GAAG,QAAQ,CAAC,aAAa,IAAI,UAAU,CAAC;IAC3D,IAAI,aAAa,KAAK,QAAQ,IAAI,aAAa,KAAK,UAAU,EAAE,CAAC;QAC/D,OAAO,IAAI,CAAC,sBAAsB,EAAE,wBAAwB,EAAE,sDAAsD,EAAE,EAAE,aAAa,EAAE,CAAC,CAAC;IAC3I,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACxC,MAAM,UAAU,GAAG,qBAAqB,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,aAAa,CAAC,CAAC;IAC9E,IAAI,UAAU,KAAK,IAAI;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;IACjE,MAAM,UAAU,GAAG,aAAa,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC;QAC1D,CAAC,CAAC,KAAK;QACP,CAAC,CAAC,aAAa,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;IAC5D,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC;IAErC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;YACxB,OAAO,IAAI,CACT,sBAAsB,EACtB,+BAA+B,EAC/B,0DAA0D,EAC1D,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CACjB,CAAC;QACJ,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YAClC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBAAE,OAAO,IAAI,CAAC,sBAAsB,EAAE,6BAA6B,EAAE,mDAAmD,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;YACnK,MAAM,aAAa,GAAG,gBAAgB,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC9E,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;YAChD,MAAM,MAAM,GAAG,OAAO,KAAK,IAAI,IAAI,WAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC;YACtF,OAAO,mBAAmB,CACxB,aAAa,CAAC,aAAa,EAAE,iBAAiB,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,EACxE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAC1D,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC;YAChC,OAAO,IAAI,CACT,sBAAsB,EACtB,yBAAyB,EACzB,kEAAkE,EAClE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CACjB,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YAAE,OAAO,IAAI,CAAC,sBAAsB,EAAE,6BAA6B,EAAE,oEAAoE,EAAE,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;QACpL,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YAC3B,OAAO,mBAAmB,CACxB,aAAa,CAAC,SAAS,EAAE,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,EACtE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAClC,CAAC;QACJ,CAAC;QACD,OAAO,mBAAmB,CAAC,aAAa,CACtC,SAAS,EACT,iBAAiB,CAAC,KAAK,CAAC,EAAE,CAAC,EAC3B,aAAa,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,aAAa,CAAC,CACzE,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,KAAK,KAAK,MAAM,IAAI,KAAK,KAAK,UAAU,EAAE,CAAC;QAC7C,MAAM,MAAM,GAAG,OAAO,KAAK,IAAI;YAC7B,CAAC,CAAC,gBAAgB,CAAC,OAAO,EAAE,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC;YAChE,CAAC,CAAC,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC;QAC1E,IAAI,MAAM,KAAK,IAAI;YAAE,OAAO,mBAAmB,CAAC,UAAU,CAAC,CAAC;QAC5D,OAAO,mBAAmB,CACxB,aAAa,CAAC,SAAS,EAAE,iBAAiB,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,EACpE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAChC,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;QACtB,IAAI,OAAO,KAAK,IAAI;YAAE,OAAO,mBAAmB,CAAC,UAAU,CAAC,CAAC;QAC7D,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;QAC1C,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC;YAAE,OAAO,mBAAmB,CAAC,UAAU,CAAC,CAAC;QACrF,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YAC5B,OAAO,mBAAmB,CAAC,aAAa,CACtC,gBAAgB,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,EAChD,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,SAAS,CAChB,CAAC,CAAC;QACL,CAAC;QACD,MAAM,MAAM,GAAG,gBAAgB,CAAC,QAAQ,EAAE,CAAC,EAAE,QAAQ,CAAC,CAAC;QACvD,IAAI,MAAM,KAAK,IAAI;YAAE,OAAO,mBAAmB,CAAC,UAAU,CAAC,CAAC;QAC5D,OAAO,mBAAmB,CACxB,aAAa,CAAC,SAAS,EAAE,iBAAiB,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,EACpE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAChC,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;QACrB,IAAI,OAAO,KAAK,IAAI;YAAE,OAAO,mBAAmB,CAAC,UAAU,CAAC,CAAC;QAC7D,IAAI,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3B,OAAO,mBAAmB,CAAC,aAAa,CACtC,gBAAgB,CAAC,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,EACjD,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,SAAS,CAChB,CAAC,CAAC;QACL,CAAC;QACD,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC,CAAC;QACzD,IAAI,MAAM,KAAK,IAAI;YAAE,OAAO,mBAAmB,CAAC,UAAU,CAAC,CAAC;QAC5D,OAAO,mBAAmB,CACxB,aAAa,CAAC,SAAS,EAAE,iBAAiB,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC,EACpE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,CAChC,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,KAAK,IAAI,EAAE,CAAC;QACrB,OAAO,IAAI,CAAC,sBAAsB,EAAE,WAAW,EAAE,wCAAwC,CAAC,CAAC;IAC7F,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC,sBAAsB,EAAE,6BAA6B,EAAE,kDAAkD,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC;IAChK,OAAO,mBAAmB,CAAC,aAAa,CACtC,SAAS,EACT,KAAK,CAAC,MAAM,EACZ,aAAa,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,EAAE,aAAa,CAAC,CACxE,CAAC,CAAC;AACL,CAAC;AAED,SAAS,cAAc,CACrB,OAAwC,EACxC,OAAW,EACX,SAAiB,EACjB,QAA6B;IAE7B,MAAM,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;IACvC,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAChC,KAAK,IAAI,SAAS,GAAG,KAAK,GAAG,SAAS,EAAE,SAAS,IAAI,CAAC,IAAI,SAAS,GAAG,OAAO,CAAC,IAAI,EAAE,SAAS,IAAI,SAAS,EAAE,CAAC;QAC3G,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;QACjC,IAAI,EAAE,KAAK,IAAI,IAAI,QAAQ,CAAC,EAAE,CAAC;YAAE,OAAO,EAAE,CAAC;IAC7C,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,gBAAgB,CAAsB,MAA+D,EAAE,SAAiB,EAAE,QAA6B;IAC9J,KAAK,IAAI,KAAK,GAAG,SAAS,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,EAAE,KAAK,IAAI,SAAS,EAAE,CAAC;QAC9G,MAAM,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QAAC,IAAI,EAAE,KAAK,IAAI,IAAI,QAAQ,CAAC,EAAE,CAAC;YAAE,OAAO,EAAE,CAAC;IAC1E,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,gBAAgB,CAAsB,IAAc,EAAE,EAAM,EAAE,QAA6B;IAClG,IAAI,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC/B,OAAO,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QAAE,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC5E,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,qBAAqB,CAC5B,IAAc,EACd,OAAwC,EACxC,KAAwB,EACxB,aAAoC;IAEpC,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC;QAC7E,OAAO;YACL,KAAK,EAAE,sBAAsB;YAC7B,IAAI,EAAE,yBAAyB;YAC/B,OAAO,EAAE,uCAAuC;YAChD,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE;SAC3C,CAAC;IACJ,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;IACjC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACjD,IAAI,aAAa,KAAK,QAAQ,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,EAAE,CAAC;QAClD,OAAO;YACL,KAAK,EAAE,sBAAsB;YAC7B,IAAI,EAAE,+BAA+B;YACrC,OAAO,EAAE,qEAAqE;YAC9E,OAAO,EAAE,EAAE,aAAa,EAAE,MAAM,CAAC,IAAI,EAAE;SACxC,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QAC5F,OAAO;YACL,KAAK,EAAE,sBAAsB;YAC7B,IAAI,EAAE,6BAA6B;YACnC,OAAO,EAAE,gFAAgF;SAC1F,CAAC;IACJ,CAAC;IACD,KAAK,MAAM,EAAE,IAAI,MAAM,EAAE,CAAC;QACxB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YACvD,OAAO;gBACL,KAAK,EAAE,sBAAsB;gBAC7B,IAAI,EAAE,kCAAkC;gBACxC,OAAO,EAAE,8CAA8C;gBACvD,OAAO,EAAE,EAAE,EAAE,EAAE;aAChB,CAAC;QACJ,CAAC;IACH,CAAC;IACD,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;QAClF,OAAO;YACL,KAAK,EAAE,sBAAsB;YAC7B,IAAI,EAAE,+BAA+B;YACrC,OAAO,EAAE,2CAA2C;YACpD,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC,MAAM,EAAE;SAC5C,CAAC;IACJ,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,aAAa,CACpB,KAAyB,EACzB,EAAM,EACN,MAAwC,EACxC,aAAoC;IAEpC,OAAO,aAAa,KAAK,QAAQ;QAC/B,CAAC,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,EAAE,MAAM,CAAC;QAC9B,CAAC,CAAC,uBAAuB,CAAC,KAAK,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;AACjD,CAAC;AAED,SAAS,aAAa,CACpB,IAAwB,EACxB,KAAyB;IAEzB,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,KAAK,CAAC,GAAG,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,KAAK,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AACxG,CAAC;AAED,SAAS,aAAa,CACpB,SAA6B,EAC7B,MAAuB,EACvB,SAA6B;IAE7B,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAC;AACzD,CAAC;AAED,SAAS,eAAe,CAAsB,KAAc;IAC1D,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,OAAO,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,eAAe,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAChF,CAAC;IACD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,MAAM,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK;WACjF,OAAO,KAAK,CAAC,EAAE,KAAK,QAAQ;WAC5B,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe;eACvD,CAAC,KAAK,CAAC,IAAI,KAAK,cAAc,IAAI,MAAM,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC;AAChG,CAAC"}
1
+ {"version":3,"file":"tree-view.js","sourceRoot":"","sources":["../../../src/internal/composites/tree-view.ts"],"names":[],"mappings":"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"}
@@ -64,4 +64,3 @@ export declare function startTextComposition(state: TextEditingState, startCodeU
64
64
  export declare function updateTextComposition(state: TextEditingState, composingText: string, selection: TextSelectionInput): Result<TextEditingState>;
65
65
  export declare function commitTextComposition(state: TextEditingState): Result<TextEditingState>;
66
66
  export declare function cancelTextComposition(state: TextEditingState): Result<TextEditingState>;
67
- //# sourceMappingURL=text.d.ts.map
@@ -12,6 +12,7 @@ export function sameTextEditingState(left, right) {
12
12
  left.composition.endCodeUnitOffset === right.composition.endCodeUnitOffset &&
13
13
  left.composition.composingText === right.composition.composingText);
14
14
  }
15
+ const canonicalTextStates = new WeakSet();
15
16
  export function isWellFormedPlainText(text) {
16
17
  return typeof text === 'string' && isWellFormedUTF16(text);
17
18
  }
@@ -20,9 +21,7 @@ export function isTextCodeUnitBoundary(text, offset) {
20
21
  return false;
21
22
  if (offset < 0 || offset > text.length)
22
23
  return false;
23
- if (offset === 0 || offset === text.length)
24
- return true;
25
- return !(isHighSurrogate(text.charCodeAt(offset - 1)) && isLowSurrogate(text.charCodeAt(offset)));
24
+ return isKnownTextCodeUnitBoundary(text, offset);
26
25
  }
27
26
  export function createTextSnapshot(text, selection) {
28
27
  return unwrap(tryCreateTextSnapshot(text, selection));
@@ -90,10 +89,10 @@ export function replaceTextState(state, startCodeUnitOffset, endCodeUnitOffset,
90
89
  if (state.composition !== null) {
91
90
  return fail('transition-rejection', 'composition-active', 'Stable replacement requires composition to be inactive.');
92
91
  }
93
- const replaced = replaceChecked(state.snapshot.text, startCodeUnitOffset, endCodeUnitOffset, replacement, 'transition-rejection');
92
+ const replaced = replaceChecked(state.snapshot.text, startCodeUnitOffset, endCodeUnitOffset, replacement, 'transition-rejection', canonicalTextStates.has(state));
94
93
  if (!replaced.ok)
95
94
  return replaced;
96
- const snapshot = createSnapshot(replaced.value, selection, 'transition-rejection');
95
+ const snapshot = createSnapshot(replaced.value, selection, 'transition-rejection', true);
97
96
  if (!snapshot.ok)
98
97
  return snapshot;
99
98
  return ok(sameSnapshot(state.snapshot, snapshot.value) ? state : stateFromSnapshot(snapshot.value));
@@ -102,10 +101,10 @@ export function startTextComposition(state, startCodeUnitOffset, endCodeUnitOffs
102
101
  if (state.composition !== null) {
103
102
  return fail('transition-rejection', 'composition-active', 'A text composition is already active.');
104
103
  }
105
- const projected = replaceChecked(state.snapshot.text, startCodeUnitOffset, endCodeUnitOffset, composingText, 'transition-rejection');
104
+ const projected = replaceChecked(state.snapshot.text, startCodeUnitOffset, endCodeUnitOffset, composingText, 'transition-rejection', canonicalTextStates.has(state));
106
105
  if (!projected.ok)
107
106
  return projected;
108
- const snapshot = createSnapshot(projected.value, selection, 'transition-rejection');
107
+ const snapshot = createSnapshot(projected.value, selection, 'transition-rejection', true);
109
108
  if (!snapshot.ok)
110
109
  return snapshot;
111
110
  const composition = freezeComposition({
@@ -114,21 +113,21 @@ export function startTextComposition(state, startCodeUnitOffset, endCodeUnitOffs
114
113
  endCodeUnitOffset,
115
114
  composingText,
116
115
  });
117
- return ok(Object.freeze({ snapshot: snapshot.value, composition }));
116
+ return ok(textEditingState(snapshot.value, composition));
118
117
  }
119
118
  export function updateTextComposition(state, composingText, selection) {
120
119
  const current = state.composition;
121
120
  if (current === null) {
122
121
  return fail('transition-rejection', 'composition-inactive', 'Text composition update requires an active composition.');
123
122
  }
124
- const projected = replaceChecked(current.baseline.text, current.startCodeUnitOffset, current.endCodeUnitOffset, composingText, 'transition-rejection');
123
+ const projected = replaceChecked(current.baseline.text, current.startCodeUnitOffset, current.endCodeUnitOffset, composingText, 'transition-rejection', canonicalTextStates.has(state));
125
124
  if (!projected.ok)
126
125
  return projected;
127
- const snapshot = createSnapshot(projected.value, selection, 'transition-rejection');
126
+ const snapshot = createSnapshot(projected.value, selection, 'transition-rejection', true);
128
127
  if (!snapshot.ok)
129
128
  return snapshot;
130
129
  const composition = freezeComposition({ ...current, composingText });
131
- return ok(Object.freeze({ snapshot: snapshot.value, composition }));
130
+ return ok(textEditingState(snapshot.value, composition));
132
131
  }
133
132
  export function commitTextComposition(state) {
134
133
  if (state.composition === null) {
@@ -142,8 +141,8 @@ export function cancelTextComposition(state) {
142
141
  }
143
142
  return ok(stateFromSnapshot(state.composition.baseline));
144
143
  }
145
- function createSnapshot(text, selection, errorClass) {
146
- if (!isWellFormedPlainText(text)) {
144
+ function createSnapshot(text, selection, errorClass, textIsCanonical = false) {
145
+ if (!textIsCanonical && !isWellFormedPlainText(text)) {
147
146
  return fail(errorClass, 'ill-formed-text', 'Plain text must be a well-formed UTF-16 string.');
148
147
  }
149
148
  if (!isObject(selection)) {
@@ -167,6 +166,8 @@ function createSnapshot(text, selection, errorClass) {
167
166
  return ok(Object.freeze({ text, selection: textSelection }));
168
167
  }
169
168
  function normalizeEditingState(state, errorClass) {
169
+ if (isObject(state) && canonicalTextStates.has(state))
170
+ return ok(state);
170
171
  if (!isObject(state)) {
171
172
  return fail(errorClass, 'invalid-text-state', 'Text editing state must be an object.');
172
173
  }
@@ -181,21 +182,18 @@ function normalizeEditingState(state, errorClass) {
181
182
  const baseline = normalizeSnapshot(state.composition.baseline, errorClass);
182
183
  if (!baseline.ok)
183
184
  return baseline;
184
- const projected = replaceChecked(baseline.value.text, state.composition.startCodeUnitOffset, state.composition.endCodeUnitOffset, state.composition.composingText, errorClass);
185
+ const projected = replaceChecked(baseline.value.text, state.composition.startCodeUnitOffset, state.composition.endCodeUnitOffset, state.composition.composingText, errorClass, true);
185
186
  if (!projected.ok)
186
187
  return projected;
187
188
  if (projected.value !== snapshot.value.text) {
188
189
  return fail(errorClass, 'inconsistent-composition-snapshot', 'Text composition snapshot must equal its baseline replacement.');
189
190
  }
190
- return ok(Object.freeze({
191
- snapshot: snapshot.value,
192
- composition: freezeComposition({
193
- baseline: baseline.value,
194
- startCodeUnitOffset: state.composition.startCodeUnitOffset,
195
- endCodeUnitOffset: state.composition.endCodeUnitOffset,
196
- composingText: state.composition.composingText,
197
- }),
198
- }));
191
+ return ok(textEditingState(snapshot.value, freezeComposition({
192
+ baseline: baseline.value,
193
+ startCodeUnitOffset: state.composition.startCodeUnitOffset,
194
+ endCodeUnitOffset: state.composition.endCodeUnitOffset,
195
+ composingText: state.composition.composingText,
196
+ })));
199
197
  }
200
198
  function normalizeSnapshot(snapshot, errorClass) {
201
199
  if (!isObject(snapshot)) {
@@ -203,8 +201,10 @@ function normalizeSnapshot(snapshot, errorClass) {
203
201
  }
204
202
  return createSnapshot(snapshot.text, snapshot.selection, errorClass);
205
203
  }
206
- function replaceChecked(text, startCodeUnitOffset, endCodeUnitOffset, replacement, errorClass) {
207
- const range = validateRange(text, startCodeUnitOffset, endCodeUnitOffset, errorClass);
204
+ function replaceChecked(text, startCodeUnitOffset, endCodeUnitOffset, replacement, errorClass, sourceIsCanonical = false) {
205
+ const range = sourceIsCanonical
206
+ ? validateKnownTextRange(text, startCodeUnitOffset, endCodeUnitOffset, errorClass)
207
+ : validateRange(text, startCodeUnitOffset, endCodeUnitOffset, errorClass);
208
208
  if (!range.ok)
209
209
  return range;
210
210
  if (!isWellFormedPlainText(replacement)) {
@@ -216,6 +216,9 @@ function validateRange(text, startCodeUnitOffset, endCodeUnitOffset, errorClass)
216
216
  if (!isWellFormedPlainText(text)) {
217
217
  return fail(errorClass, 'ill-formed-text', 'Plain text must be a well-formed UTF-16 string.');
218
218
  }
219
+ return validateKnownTextRange(text, startCodeUnitOffset, endCodeUnitOffset, errorClass);
220
+ }
221
+ function validateKnownTextRange(text, startCodeUnitOffset, endCodeUnitOffset, errorClass) {
219
222
  const startError = validateOffset(text, startCodeUnitOffset, 'startCodeUnitOffset', errorClass);
220
223
  if (startError !== null)
221
224
  return startError;
@@ -231,13 +234,18 @@ function validateOffset(text, offset, name, errorClass) {
231
234
  if (!Number.isSafeInteger(offset) || offset < 0 || offset > text.length) {
232
235
  return fail(errorClass, 'invalid-text-offset', `${name} must be a safe UTF-16 code-unit offset within the text.`, { [name]: offset, codeUnitLength: text.length });
233
236
  }
234
- if (!isTextCodeUnitBoundary(text, offset)) {
237
+ if (!isKnownTextCodeUnitBoundary(text, offset)) {
235
238
  return fail(errorClass, 'surrogate-boundary', `${name} must not split a UTF-16 surrogate pair.`, { [name]: offset });
236
239
  }
237
240
  return null;
238
241
  }
239
242
  function stateFromSnapshot(snapshot) {
240
- return Object.freeze({ snapshot, composition: null });
243
+ return textEditingState(snapshot, null);
244
+ }
245
+ function textEditingState(snapshot, composition) {
246
+ const state = Object.freeze({ snapshot, composition });
247
+ canonicalTextStates.add(state);
248
+ return state;
241
249
  }
242
250
  function freezeComposition(composition) {
243
251
  return Object.freeze(composition);
@@ -253,6 +261,11 @@ function isHighSurrogate(code) {
253
261
  function isLowSurrogate(code) {
254
262
  return code >= 0xdc00 && code <= 0xdfff;
255
263
  }
264
+ function isKnownTextCodeUnitBoundary(text, offset) {
265
+ if (offset === 0 || offset === text.length)
266
+ return true;
267
+ return !(isHighSurrogate(text.charCodeAt(offset - 1)) && isLowSurrogate(text.charCodeAt(offset)));
268
+ }
256
269
  function isObject(value) {
257
270
  return typeof value === 'object' && value !== null;
258
271
  }
@@ -1 +1 @@
1
- {"version":3,"file":"text.js","sourceRoot":"","sources":["../../../src/internal/editing/text.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"text.js","sourceRoot":"","sources":["../../../src/internal/editing/text.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import type { Result } from '../../shared.js';
2
+ import type { ExactRatio } from './exact-ratio.js';
3
+ import { addDecimal, compareDecimal, decimalToString, parseDecimal, subtractDecimal, type ExactDecimal } from './decimal.js';
4
+ export declare const DEFAULT_SCALAR_MIN = "0";
5
+ export declare const DEFAULT_SCALAR_MAX = "100";
6
+ export declare const DEFAULT_MAX_DECIMAL_CODE_UNITS = 1024;
7
+ export declare const DEFAULT_MAX_DECIMAL_SCALE = 100;
8
+ export declare const DEFAULT_PERCENTAGE_SCALE = 12;
9
+ export interface BoundedScalarCeilings {
10
+ readonly maxDecimalCodeUnits?: number;
11
+ readonly maxScale?: number;
12
+ }
13
+ export interface ParsedBoundedScalar {
14
+ readonly min: ExactDecimal;
15
+ readonly max: ExactDecimal;
16
+ readonly value: ExactDecimal;
17
+ readonly canonicalMin: string;
18
+ readonly canonicalMax: string;
19
+ readonly canonicalValue: string;
20
+ }
21
+ export declare function tryParseBoundedScalar(values: {
22
+ readonly min: string;
23
+ readonly max: string;
24
+ readonly value: string;
25
+ }, ceilings?: BoundedScalarCeilings): Result<ParsedBoundedScalar>;
26
+ export declare function boundedRatio(value: ExactDecimal, min: ExactDecimal, max: ExactDecimal): ExactRatio;
27
+ export declare function midpointDecimal(min: ExactDecimal, max: ExactDecimal): ExactDecimal;
28
+ export declare function formatRatioPercentage(ratio: ExactRatio, scale?: number): string;
29
+ export declare function decimalInClosedRange(value: ExactDecimal, min: ExactDecimal, max: ExactDecimal): boolean;
30
+ export { addDecimal, compareDecimal, decimalToString, parseDecimal, subtractDecimal };
31
+ export type { ExactDecimal };
@@ -0,0 +1,78 @@
1
+ import { addDecimal, compareDecimal, decimalQuotient, decimalToString, divideDecimal, parseDecimal, reduceFraction, subtractDecimal, } from './decimal.js';
2
+ import { fail, ok, validateSafeCeiling } from './foundation.js';
3
+ export const DEFAULT_SCALAR_MIN = '0';
4
+ export const DEFAULT_SCALAR_MAX = '100';
5
+ export const DEFAULT_MAX_DECIMAL_CODE_UNITS = 1_024;
6
+ export const DEFAULT_MAX_DECIMAL_SCALE = 100;
7
+ export const DEFAULT_PERCENTAGE_SCALE = 12;
8
+ export function tryParseBoundedScalar(values, ceilings = {}) {
9
+ const maxDecimalCodeUnits = ceilings.maxDecimalCodeUnits ?? DEFAULT_MAX_DECIMAL_CODE_UNITS;
10
+ const maxScale = ceilings.maxScale ?? DEFAULT_MAX_DECIMAL_SCALE;
11
+ const codeUnitError = validateSafeCeiling(maxDecimalCodeUnits, 'maxDecimalCodeUnits', 1);
12
+ if (codeUnitError !== null)
13
+ return { ok: false, error: codeUnitError };
14
+ const scaleError = validateSafeCeiling(maxScale, 'maxScale');
15
+ if (scaleError !== null)
16
+ return { ok: false, error: scaleError };
17
+ for (const [name, value] of Object.entries(values)) {
18
+ if (typeof value !== 'string') {
19
+ return fail('construction', 'invalid-decimal', `${name} must be a decimal string.`, {
20
+ name,
21
+ receivedType: typeof value,
22
+ });
23
+ }
24
+ if (value.length > maxDecimalCodeUnits) {
25
+ return fail('resource-rejection', 'decimal-code-unit-ceiling-exceeded', `${name} exceeds maxDecimalCodeUnits.`, { name, codeUnits: value.length, maxDecimalCodeUnits });
26
+ }
27
+ }
28
+ const min = parseDecimal(values.min);
29
+ const max = parseDecimal(values.max);
30
+ const value = parseDecimal(values.value);
31
+ if (min === null || max === null || value === null) {
32
+ return fail('construction', 'invalid-decimal', 'min, max, and value must be finite decimal spellings.');
33
+ }
34
+ if (min.scale > maxScale || max.scale > maxScale || value.scale > maxScale) {
35
+ return fail('resource-rejection', 'decimal-scale-ceiling-exceeded', 'Decimal scale exceeds maxScale.', { maxScale });
36
+ }
37
+ if (compareDecimal(max, min) < 0) {
38
+ return fail('construction', 'inverted-bounds', 'max must be greater than or equal to min.');
39
+ }
40
+ return ok(Object.freeze({
41
+ min,
42
+ max,
43
+ value,
44
+ canonicalMin: decimalToString(min),
45
+ canonicalMax: decimalToString(max),
46
+ canonicalValue: decimalToString(value),
47
+ }));
48
+ }
49
+ export function boundedRatio(value, min, max) {
50
+ if (compareDecimal(min, max) === 0)
51
+ return Object.freeze({ numerator: 0n, denominator: 1n });
52
+ const [numerator, denominator] = decimalQuotient(subtractDecimal(value, min), subtractDecimal(max, min));
53
+ const [reducedNumerator, reducedDenominator] = reduceFraction(numerator, denominator);
54
+ return Object.freeze({ numerator: reducedNumerator, denominator: reducedDenominator });
55
+ }
56
+ export function midpointDecimal(min, max) {
57
+ const sum = addDecimal(min, max);
58
+ const midpoint = divideDecimal(sum, { coefficient: 2n, scale: 0 }, Math.max(min.scale, max.scale) + 1, 'toward-zero');
59
+ if (midpoint === null)
60
+ throw new Error('Internal invariant breach: midpoint division by two failed.');
61
+ return midpoint;
62
+ }
63
+ export function formatRatioPercentage(ratio, scale = DEFAULT_PERCENTAGE_SCALE) {
64
+ if (ratio.denominator <= 0n)
65
+ throw new RangeError('ratio denominator must be positive');
66
+ const scaleError = validateSafeCeiling(scale, 'precision');
67
+ if (scaleError !== null)
68
+ throw new RangeError(scaleError.message);
69
+ const percentage = divideDecimal({ coefficient: ratio.numerator * 100n, scale: 0 }, { coefficient: ratio.denominator, scale: 0 }, scale, 'half-even');
70
+ if (percentage === null)
71
+ throw new Error('Internal invariant breach: ratio percentage division failed.');
72
+ return decimalToString(percentage);
73
+ }
74
+ export function decimalInClosedRange(value, min, max) {
75
+ return compareDecimal(value, min) >= 0 && compareDecimal(value, max) <= 0;
76
+ }
77
+ export { addDecimal, compareDecimal, decimalToString, parseDecimal, subtractDecimal };
78
+ //# sourceMappingURL=bounded-scalar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bounded-scalar.js","sourceRoot":"","sources":["../../../src/internal/kernel/bounded-scalar.ts"],"names":[],"mappings":"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"}
@@ -19,4 +19,3 @@ export declare function greatestCommonDivisor(left: bigint, right: bigint): bigi
19
19
  export declare function reduceFraction(numerator: bigint, denominator: bigint): readonly [bigint, bigint];
20
20
  export declare function floorFraction(numerator: bigint, denominator: bigint): bigint;
21
21
  export declare function pow10(exponent: number): bigint;
22
- //# sourceMappingURL=decimal.d.ts.map
@@ -0,0 +1,5 @@
1
+ /** Canonical reduced rational value. Denominator is always positive. */
2
+ export interface ExactRatio {
3
+ readonly numerator: bigint;
4
+ readonly denominator: bigint;
5
+ }
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=exact-ratio.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exact-ratio.js","sourceRoot":"","sources":["../../../src/internal/kernel/exact-ratio.ts"],"names":[],"mappings":""}
@@ -1,15 +1,17 @@
1
1
  import { type Result, type SectileError, type StableID } from '../../shared.js';
2
2
  import type { CoreErrorCode } from '../../error-code.js';
3
+ import { failResult as fail, okResult as ok } from '../../result.js';
4
+ export { fail, ok };
3
5
  type SafeCeilingName = 'columnCount' | 'count' | 'itemsPerPage' | 'maxCells' | 'maxCodeUnits' | 'maxColumns' | 'maxCount' | 'maxDecimalCodeUnits' | 'maxDepth' | 'maxExponent' | 'maxIDCodeUnits' | 'maxItems' | 'maxOperations' | 'maxRows' | 'maxScale' | 'maxTokens' | 'precision' | 'siblingCount' | 'total';
4
- export declare function ok<T>(value: T): Result<T>;
5
- export declare function fail<T = never, Code extends CoreErrorCode = CoreErrorCode>(errorClass: SectileError['class'], code: Code, message: string, details?: Readonly<Record<string, unknown>>): Result<T, Code>;
6
- export declare function resourceError<Code extends CoreErrorCode>(code: Code, message: string, details?: Readonly<Record<string, unknown>>): SectileError<Code>;
6
+ export declare function bindCanonicalState<State extends object>(owner: object, state: State): State;
7
+ export declare function hasCanonicalState(owner: object, state: object): boolean;
8
+ export declare function memoizeWeak<Key extends object, Value>(cache: WeakMap<Key, Value>, key: Key, create: (key: Key) => Value): Value;
9
+ export declare function memoizeWeakPair<Owner extends object, Key extends object, Value>(cache: WeakMap<Owner, WeakMap<Key, Value>>, owner: Owner, key: Key, create: (owner: Owner, key: Key) => Value): Value;
10
+ export declare function resourceError<Code extends string = CoreErrorCode>(code: Code, message: string, details?: Readonly<Record<string, unknown>>): SectileError<Code>;
7
11
  export declare function isWellFormedUTF16(value: string): boolean;
8
12
  export declare function validateStableID(id: string, maxIDCodeUnits?: number): SectileError | null;
9
13
  export declare function validateSafeCeiling(value: number, name: SafeCeilingName, minimum?: number): SectileError | null;
10
14
  export declare function normalizeMaxScan(maxScan: number | undefined): number | SectileError;
11
15
  export declare function freezeArray<T>(values: readonly T[]): readonly T[];
12
16
  export declare function assertNever(value: never): never;
13
- export declare function validateUniqueIDs<ID extends StableID>(ids: readonly ID[], maxIDCodeUnits: number): Result<readonly ID[]>;
14
- export {};
15
- //# sourceMappingURL=foundation.d.ts.map
17
+ export declare function validateUniqueIDs<ID extends StableID>(ids: readonly ID[], maxIDCodeUnits: number, indexByID?: Map<ID, number>): Result<readonly ID[]>;