@sectile/core 0.7.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 +28 -3
  80. package/dist/internal/kernel/indexed-sequence.js +162 -12
  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 +0 -1
  158. package/dist/structures/sequence.js +69 -7
  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
@@ -0,0 +1,49 @@
1
+ import { unwrap } from './result.js';
2
+ import { boundedRatio, compareDecimal, decimalInClosedRange, DEFAULT_SCALAR_MAX, parseDecimal, tryParseBoundedScalar, } from './internal/kernel/bounded-scalar.js';
3
+ import { fail, ok } from './internal/kernel/foundation.js';
4
+ export function createProgressState(input = {}) {
5
+ return unwrap(tryCreateProgressState(input));
6
+ }
7
+ export function tryCreateProgressState(input = {}) {
8
+ const maxInput = input.max ?? DEFAULT_SCALAR_MAX;
9
+ const ceilings = {
10
+ ...(input.maxDecimalCodeUnits === undefined ? {} : { maxDecimalCodeUnits: input.maxDecimalCodeUnits }),
11
+ ...(input.maxScale === undefined ? {} : { maxScale: input.maxScale }),
12
+ };
13
+ const maximum = tryParseBoundedScalar({ min: maxInput, max: maxInput, value: maxInput }, ceilings);
14
+ if (!maximum.ok)
15
+ return maximum;
16
+ const zero = parseDecimal('0');
17
+ if (zero === null)
18
+ throw new Error('Internal invariant breach: zero decimal failed to parse.');
19
+ if (compareDecimal(maximum.value.value, zero) <= 0) {
20
+ return fail('construction', 'progress-maximum-not-positive', 'Progress max must be greater than zero.', {
21
+ max: maximum.value.canonicalValue,
22
+ });
23
+ }
24
+ if (input.value === undefined || input.value === null) {
25
+ return ok(Object.freeze({
26
+ max: maximum.value.canonicalValue,
27
+ value: null,
28
+ ratio: null,
29
+ status: 'indeterminate',
30
+ }));
31
+ }
32
+ const parsed = tryParseBoundedScalar({ min: '0', max: maximum.value.canonicalValue, value: input.value }, ceilings);
33
+ if (!parsed.ok)
34
+ return parsed;
35
+ if (!decimalInClosedRange(parsed.value.value, parsed.value.min, parsed.value.max)) {
36
+ return fail('construction', 'progress-value-outside-range', 'Progress value must be within zero and max.', {
37
+ max: parsed.value.canonicalMax,
38
+ value: parsed.value.canonicalValue,
39
+ });
40
+ }
41
+ const ratio = boundedRatio(parsed.value.value, parsed.value.min, parsed.value.max);
42
+ return ok(Object.freeze({
43
+ max: parsed.value.canonicalMax,
44
+ value: parsed.value.canonicalValue,
45
+ ratio: Object.freeze({ numerator: ratio.numerator, denominator: ratio.denominator }),
46
+ status: compareDecimal(parsed.value.value, parsed.value.max) === 0 ? 'complete' : 'progressing',
47
+ }));
48
+ }
49
+ //# sourceMappingURL=progress.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"progress.js","sourceRoot":"","sources":["../src/progress.ts"],"names":[],"mappings":"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"}
@@ -56,4 +56,3 @@ export declare function createQuantityFieldState(policies: QuantityFieldPolicies
56
56
  export declare function tryCreateQuantityFieldState(policies: QuantityFieldPolicies, quantity?: QuantityValue | null, displayUnit?: UnitID, inputState?: TextEditingState): Result<QuantityFieldState>;
57
57
  export declare function applyQuantityFieldEvent(state: QuantityFieldState, event: QuantityFieldEvent, policies: QuantityFieldPolicies): Result<QuantityFieldUpdate>;
58
58
  export declare function parseQuantityInput(input: string, options: QuantityInputParserOptions): Result<ParsedQuantityInput>;
59
- //# sourceMappingURL=quantity-field.d.ts.map
@@ -20,4 +20,3 @@ export type RadioGroupPolicies<ID extends StableID = StableID> = Omit<LinearChoi
20
20
  export declare function createRadioGroupState<ID extends StableID>(domain: Sequence<ID>, input?: RadioGroupStateInput<ID>): RadioGroupState<ID>;
21
21
  export declare function tryCreateRadioGroupState<ID extends StableID>(domain: Sequence<ID>, input?: RadioGroupStateInput<ID>): Result<RadioGroupState<ID>>;
22
22
  export declare function applyRadioGroupEvent<ID extends StableID>(domain: Sequence<ID>, state: RadioGroupState<ID>, event: RadioGroupEvent<ID>, policies?: RadioGroupPolicies<ID>): Result<RadioGroupUpdate<ID>>;
23
- //# sourceMappingURL=radio-group.d.ts.map
package/dist/rating.d.ts CHANGED
@@ -15,4 +15,3 @@ export type RatingUpdate<ID extends StableID = StableID> = RadioGroupUpdate<ID>;
15
15
  export declare function createRatingState<ID extends StableID>(domain: Sequence<ID>, value?: ID | null): RatingState<ID>;
16
16
  export declare function tryCreateRatingState<ID extends StableID>(domain: Sequence<ID>, value?: ID | null): Result<RatingState<ID>>;
17
17
  export declare function applyRatingEvent<ID extends StableID>(domain: Sequence<ID>, state: RatingState<ID>, event: RatingEvent<ID>, policies?: RatingPolicies<ID>): Result<RatingUpdate<ID>>;
18
- //# sourceMappingURL=rating.d.ts.map
package/dist/reorder.d.ts CHANGED
@@ -45,4 +45,3 @@ export declare function applySequenceReorderEvent<ID extends StableID>(state: Se
45
45
  export declare function createTreeReorderState<ID extends StableID>(nodes: readonly TreeNodeInput<ID>[]): TreeReorderState<ID>;
46
46
  export declare function tryCreateTreeReorderState<ID extends StableID>(nodes: readonly TreeNodeInput<ID>[]): Result<TreeReorderState<ID>>;
47
47
  export declare function applyTreeReorderEvent<ID extends StableID>(state: TreeReorderState<ID>, event: TreeReorderEvent<ID>): Result<TreeReorderUpdate<ID>>;
48
- //# sourceMappingURL=reorder.d.ts.map
package/dist/reorder.js CHANGED
@@ -1,46 +1,58 @@
1
1
  import { createMachineUpdate } from './internal/kernel/machine.js';
2
2
  import { fail, ok } from './internal/kernel/foundation.js';
3
3
  import { unwrap } from './result.js';
4
- import { tryCreateSequence } from './structures/sequence.js';
4
+ import { applySequencePatch, tryCreateSequence, } from './structures/sequence.js';
5
5
  import { tryCreateTree } from './structures/tree.js';
6
+ const sequenceReorderOwners = new WeakMap();
7
+ const treeReorderOwners = new WeakMap();
6
8
  export function createSequenceReorderState(ids) {
7
9
  return unwrap(tryCreateSequenceReorderState(ids));
8
10
  }
9
11
  export function tryCreateSequenceReorderState(ids) {
10
12
  const sequence = tryCreateSequence(ids);
11
13
  return sequence.ok
12
- ? ok(Object.freeze({ ids: Object.freeze([...sequence.value.ids]) }))
14
+ ? ok(sequenceReorderState(sequence.value))
13
15
  : sequence;
14
16
  }
15
17
  export function applySequenceReorderEvent(state, event) {
16
- const valid = tryCreateSequenceReorderState(state.ids);
17
- if (!valid.ok)
18
- return transitionFailure(valid);
19
- const sourceIndex = state.ids.indexOf(event.id);
20
- if (sourceIndex < 0)
18
+ let sequence = sequenceReorderOwners.get(state);
19
+ if (sequence === undefined) {
20
+ const valid = tryCreateSequenceReorderState(state.ids);
21
+ if (!valid.ok)
22
+ return transitionFailure(valid);
23
+ sequence = sequenceReorderOwners.get(valid.value);
24
+ }
25
+ const sourceIndex = sequence.indexOf(event.id);
26
+ if (sourceIndex === null)
21
27
  return missingID(event.id);
22
28
  if ((event.type === 'move-before' || event.type === 'move-after') && event.id === event.targetID) {
23
29
  return createMachineUpdate(state);
24
30
  }
25
- const ids = state.ids.filter((id) => id !== event.id);
26
31
  let destination;
27
32
  if (event.type === 'move-to-start')
28
33
  destination = 0;
29
34
  else if (event.type === 'move-to-end')
30
- destination = ids.length;
35
+ destination = sequence.size - 1;
31
36
  else {
32
- const targetIndex = ids.indexOf(event.targetID);
33
- if (targetIndex < 0)
37
+ const targetIndex = sequence.indexOf(event.targetID);
38
+ if (targetIndex === null)
34
39
  return missingID(event.targetID);
35
- destination = targetIndex + (event.type === 'move-after' ? 1 : 0);
40
+ const postRemovalTarget = targetIndex > sourceIndex ? targetIndex - 1 : targetIndex;
41
+ destination = postRemovalTarget + (event.type === 'move-after' ? 1 : 0);
36
42
  }
37
- ids.splice(destination, 0, event.id);
38
- if (ids.every((id, index) => id === state.ids[index]))
43
+ const patch = Object.freeze({
44
+ type: 'move',
45
+ from: sourceIndex,
46
+ to: destination,
47
+ count: 1,
48
+ });
49
+ const nextSequence = applySequencePatch(sequence, patch);
50
+ if (nextSequence === sequence)
39
51
  return createMachineUpdate(state);
40
- const next = Object.freeze({ ids: Object.freeze(ids) });
52
+ const next = sequenceReorderState(nextSequence);
41
53
  return createMachineUpdate(next, [{
42
54
  type: 'sequence-order-changed',
43
- patch: Object.freeze({ type: 'move', from: sourceIndex, to: destination, count: 1 }),
55
+ patch,
44
56
  }]);
45
57
  }
46
58
  export function createTreeReorderState(nodes) {
@@ -50,61 +62,98 @@ export function tryCreateTreeReorderState(nodes) {
50
62
  const tree = tryCreateTree(nodes);
51
63
  if (!tree.ok)
52
64
  return tree;
53
- return ok(Object.freeze({ nodes: freezeNodes(nodes) }));
65
+ return ok(treeReorderState(freezeNodes(nodes), tree.value));
54
66
  }
55
67
  export function applyTreeReorderEvent(state, event) {
56
- const tree = tryCreateTree(state.nodes);
57
- if (!tree.ok)
58
- return transitionFailure(tree);
59
- if (!tree.value.has(event.id))
68
+ let owner = treeReorderOwners.get(state);
69
+ let canonicalState = state;
70
+ if (owner === undefined) {
71
+ const valid = tryCreateTreeReorderState(state.nodes);
72
+ if (!valid.ok)
73
+ return transitionFailure(valid);
74
+ canonicalState = valid.value;
75
+ owner = treeReorderOwners.get(canonicalState);
76
+ }
77
+ const { tree, positions } = owner;
78
+ if (!tree.has(event.id))
60
79
  return missingID(event.id);
61
- if (event.parentID !== null && !tree.value.has(event.parentID))
80
+ if (event.parentID !== null && !tree.has(event.parentID))
62
81
  return missingID(event.parentID);
63
- if (event.parentID === event.id
64
- || (event.parentID !== null && tree.value.ancestorsOf(event.parentID)?.includes(event.id) === true)) {
82
+ if (event.parentID !== null && isWithinSubtree(tree, event.id, event.parentID)) {
65
83
  return fail('transition-rejection', 'reorder-tree-cycle', 'A tree node cannot move below itself or one of its descendants.', { id: event.id, parentID: event.parentID });
66
84
  }
67
85
  const beforeID = event.beforeID ?? null;
68
86
  if (beforeID === event.id)
69
87
  return createMachineUpdate(state);
70
88
  if (beforeID !== null
71
- && (!tree.value.has(beforeID) || tree.value.parentOf(beforeID) !== event.parentID)) {
89
+ && (!tree.has(beforeID) || tree.parentOf(beforeID) !== event.parentID)) {
72
90
  return fail('transition-rejection', 'reorder-tree-sibling-invalid', 'beforeID must identify a sibling under the requested parent.', { beforeID, parentID: event.parentID });
73
91
  }
74
- const moving = state.nodes.find((node) => node.id === event.id);
75
- const remaining = state.nodes.filter((node) => node.id !== event.id);
92
+ const sourceIndex = positions.get(event.id);
93
+ const nodes = [...canonicalState.nodes];
94
+ nodes.splice(sourceIndex, 1);
76
95
  let destination;
77
96
  if (beforeID !== null) {
78
- destination = remaining.findIndex((node) => node.id === beforeID);
97
+ destination = postRemovalIndex(positions.get(beforeID), sourceIndex);
79
98
  }
80
99
  else {
81
- const siblingIndices = remaining.flatMap((node, index) => (node.parentID === event.parentID ? [index] : []));
82
- if (siblingIndices.length > 0)
83
- destination = siblingIndices.at(-1) + 1;
84
- else if (event.parentID === null)
85
- destination = remaining.length;
86
- else
87
- destination = remaining.findIndex((node) => node.id === event.parentID) + 1;
100
+ const siblings = event.parentID === null ? tree.roots : tree.childrenOf(event.parentID);
101
+ let lastSibling = siblings.at(siblings.size - 1);
102
+ if (lastSibling === event.id)
103
+ lastSibling = siblings.at(siblings.size - 2);
104
+ if (lastSibling !== null) {
105
+ destination = postRemovalIndex(positions.get(lastSibling), sourceIndex) + 1;
106
+ }
107
+ else if (event.parentID === null) {
108
+ destination = nodes.length;
109
+ }
110
+ else {
111
+ destination = postRemovalIndex(positions.get(event.parentID), sourceIndex) + 1;
112
+ }
88
113
  }
89
- const nodes = [...remaining];
90
- nodes.splice(destination, 0, Object.freeze({ id: moving.id, parentID: event.parentID }));
114
+ if (destination === sourceIndex && tree.parentOf(event.id) === event.parentID) {
115
+ return createMachineUpdate(state);
116
+ }
117
+ nodes.splice(destination, 0, Object.freeze({ id: event.id, parentID: event.parentID }));
118
+ Object.freeze(nodes);
91
119
  const nextTree = tryCreateTree(nodes);
92
120
  if (!nextTree.ok)
93
121
  return transitionFailure(nextTree);
94
- if (sameNodes(state.nodes, nodes))
95
- return createMachineUpdate(state);
96
- const next = Object.freeze({ nodes: freezeNodes(nodes) });
122
+ const next = treeReorderState(nodes, nextTree.value);
97
123
  return createMachineUpdate(next, [{ type: 'tree-order-changed', nodes: next.nodes }]);
98
124
  }
125
+ function sequenceReorderState(sequence) {
126
+ const state = Object.freeze({ ids: sequence.ids });
127
+ sequenceReorderOwners.set(state, sequence);
128
+ return state;
129
+ }
130
+ function treeReorderState(nodes, tree) {
131
+ const positions = new Map();
132
+ for (let index = 0; index < nodes.length; index += 1) {
133
+ positions.set(nodes[index].id, index);
134
+ }
135
+ const state = Object.freeze({ nodes });
136
+ treeReorderOwners.set(state, {
137
+ tree,
138
+ positions,
139
+ });
140
+ return state;
141
+ }
142
+ function isWithinSubtree(tree, root, candidate) {
143
+ const rootInterval = tree.subtreeIntervalOf(root);
144
+ const candidateInterval = tree.subtreeIntervalOf(candidate);
145
+ return candidateInterval.start >= rootInterval.start
146
+ && candidateInterval.start < rootInterval.endExclusive;
147
+ }
148
+ function postRemovalIndex(index, removedIndex) {
149
+ return index > removedIndex ? index - 1 : index;
150
+ }
99
151
  function missingID(id) {
100
152
  return fail('transition-rejection', 'reorder-id-missing', 'Reorder identity must exist in the current domain.', { id });
101
153
  }
102
154
  function freezeNodes(nodes) {
103
155
  return Object.freeze(nodes.map((node) => Object.freeze({ ...node })));
104
156
  }
105
- function sameNodes(left, right) {
106
- return left.length === right.length && left.every((node, index) => (node.id === right[index]?.id && node.parentID === right[index]?.parentID));
107
- }
108
157
  function transitionFailure(result) {
109
158
  if (result.ok)
110
159
  throw new Error('Expected a failed result.');
@@ -1 +1 @@
1
- {"version":3,"file":"reorder.js","sourceRoot":"","sources":["../src/reorder.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reorder.js","sourceRoot":"","sources":["../src/reorder.ts"],"names":[],"mappings":"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"}
package/dist/result.d.ts CHANGED
@@ -1,5 +1,7 @@
1
1
  import type { ErrorClass, Result, SectileError } from './shared.js';
2
2
  import type { CoreErrorCode } from './error-code.js';
3
+ export declare function okResult<T, Code extends string = CoreErrorCode>(value: T): Result<T, Code>;
4
+ export declare function failResult<T = never, Code extends string = CoreErrorCode>(errorClass: SectileError['class'], code: Code, message: string, details?: Readonly<Record<string, unknown>>): Result<T, Code>;
3
5
  export declare class SectileResultError<Code extends string = CoreErrorCode> extends Error implements SectileError<Code> {
4
6
  readonly class: ErrorClass;
5
7
  readonly code: Code;
@@ -9,4 +11,3 @@ export declare class SectileResultError<Code extends string = CoreErrorCode> ext
9
11
  export declare function unwrap<T, Code extends string>(result: Result<T, Code>): T;
10
12
  export type { ErrorClass, Result, SectileError } from './shared.js';
11
13
  export type { CoreErrorCode } from './error-code.js';
12
- //# sourceMappingURL=result.d.ts.map
package/dist/result.js CHANGED
@@ -1,3 +1,17 @@
1
+ export function okResult(value) {
2
+ return { ok: true, value };
3
+ }
4
+ export function failResult(errorClass, code, message, details) {
5
+ return {
6
+ ok: false,
7
+ error: {
8
+ class: errorClass,
9
+ code,
10
+ message,
11
+ ...(details === undefined ? {} : { details }),
12
+ },
13
+ };
14
+ }
1
15
  export class SectileResultError extends Error {
2
16
  class;
3
17
  code;
@@ -1 +1 @@
1
- {"version":3,"file":"result.js","sourceRoot":"","sources":["../src/result.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,kBACX,SAAQ,KAAK;IACG,KAAK,CAAa;IAClB,IAAI,CAAO;IACX,OAAO,CAAqC;IAE5D,YAAmB,KAAyB;QAC1C,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QACvB,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS;YAAE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAChE,CAAC;CACF;AAED,MAAM,UAAU,MAAM,CAAyB,MAAuB;IACpE,IAAI,MAAM,CAAC,EAAE;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC;IACnC,MAAM,IAAI,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC7C,CAAC"}
1
+ {"version":3,"file":"result.js","sourceRoot":"","sources":["../src/result.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,QAAQ,CAAyC,KAAQ;IACvE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;AAC7B,CAAC;AAED,MAAM,UAAU,UAAU,CACxB,UAAiC,EACjC,IAAU,EACV,OAAe,EACf,OAA2C;IAE3C,OAAO;QACL,EAAE,EAAE,KAAK;QACT,KAAK,EAAE;YACL,KAAK,EAAE,UAAU;YACjB,IAAI;YACJ,OAAO;YACP,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC;SAC9C;KACF,CAAC;AACJ,CAAC;AAED,MAAM,OAAO,kBACX,SAAQ,KAAK;IACG,KAAK,CAAa;IAClB,IAAI,CAAO;IACX,OAAO,CAAqC;IAE5D,YAAmB,KAAyB;QAC1C,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QACvC,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QACzB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QACvB,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS;YAAE,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IAChE,CAAC;CACF;AAED,MAAM,UAAU,MAAM,CAAyB,MAAuB;IACpE,IAAI,MAAM,CAAC,EAAE;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC;IACnC,MAAM,IAAI,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC7C,CAAC"}
@@ -1,3 +1,3 @@
1
1
  export { applyRevisionedEvent, createRevisionSnapshot, mapRevisionCommands, rejectRevisionInput, type EventReducer, type MachineUpdate, type RevisionSnapshot, type RevisionResult, } from './internal/runtime/revision.js';
2
2
  export { tryCreateRevisionSnapshot } from './internal/runtime/revision.js';
3
- //# sourceMappingURL=revision.d.ts.map
3
+ export { createMachineUpdate } from './internal/kernel/machine.js';
package/dist/revision.js CHANGED
@@ -1,3 +1,4 @@
1
1
  export { applyRevisionedEvent, createRevisionSnapshot, mapRevisionCommands, rejectRevisionInput, } from './internal/runtime/revision.js';
2
2
  export { tryCreateRevisionSnapshot } from './internal/runtime/revision.js';
3
+ export { createMachineUpdate } from './internal/kernel/machine.js';
3
4
  //# sourceMappingURL=revision.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"revision.js","sourceRoot":"","sources":["../src/revision.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,mBAAmB,EACnB,mBAAmB,GAKpB,MAAM,gCAAgC,CAAC;AAExC,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC"}
1
+ {"version":3,"file":"revision.js","sourceRoot":"","sources":["../src/revision.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,mBAAmB,EACnB,mBAAmB,GAKpB,MAAM,gCAAgC,CAAC;AAExC,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC"}
package/dist/select.d.ts CHANGED
@@ -28,4 +28,3 @@ export interface SelectUpdate<ID extends StableID = StableID> {
28
28
  export declare function createSelectState<ID extends StableID>(domain: Sequence<ID>, input?: SelectStateInput<ID>): SelectState<ID>;
29
29
  export declare function tryCreateSelectState<ID extends StableID>(domain: Sequence<ID>, input?: SelectStateInput<ID>): Result<SelectState<ID>>;
30
30
  export declare function applySelectEvent<ID extends StableID>(domain: Sequence<ID>, state: SelectState<ID>, event: SelectEvent<ID>, policies?: SelectPolicies<ID>): Result<SelectUpdate<ID>>;
31
- //# sourceMappingURL=select.d.ts.map
@@ -0,0 +1,24 @@
1
+ import type { Result, StableID } from './shared.js';
2
+ export type SelectionMode = 'single' | 'multiple';
3
+ export interface SelectionDomain<ID extends StableID = StableID> {
4
+ readonly size: number;
5
+ contains(id: ID): boolean;
6
+ at(index: number): ID | null;
7
+ indexOf(id: ID): number | null;
8
+ }
9
+ export interface SelectionState<ID extends StableID = StableID> {
10
+ readonly selected: readonly ID[];
11
+ readonly anchor: ID | null;
12
+ readonly size: number;
13
+ has(id: ID): boolean;
14
+ }
15
+ export interface SelectionSnapshotInput<ID extends StableID = StableID> {
16
+ readonly selected?: readonly ID[];
17
+ readonly anchor?: ID | null;
18
+ }
19
+ export declare function createSelectionState<ID extends StableID>(domain: SelectionDomain<ID>, mode: SelectionMode, input?: SelectionSnapshotInput<ID>): Result<SelectionState<ID>>;
20
+ export declare function reconcileSelection<ID extends StableID>(state: SelectionState<ID>, domain: SelectionDomain<ID>, mode: SelectionMode): Result<SelectionState<ID>>;
21
+ export declare function selectOne<ID extends StableID>(state: SelectionState<ID>, id: ID, domain: SelectionDomain<ID>): SelectionState<ID>;
22
+ export declare function toggleMultipleSelection<ID extends StableID>(state: SelectionState<ID>, id: ID, domain: SelectionDomain<ID>): SelectionState<ID>;
23
+ export declare function clearSelection<ID extends StableID>(state: SelectionState<ID>): SelectionState<ID>;
24
+ export declare function selectInterval<ID extends StableID>(state: SelectionState<ID>, anchor: ID, extent: ID, domain: SelectionDomain<ID>, additive: boolean): SelectionState<ID>;
@@ -0,0 +1,20 @@
1
+ import { clearSelection as clearSelectionInternal, createSelectionState as createSelectionStateInternal, reconcileSelection as reconcileSelectionInternal, selectInterval as selectIntervalInternal, selectOne as selectOneInternal, toggleMultipleSelection as toggleMultipleSelectionInternal, } from './internal/state/selection.js';
2
+ export function createSelectionState(domain, mode, input = {}) {
3
+ return createSelectionStateInternal(domain, mode, input);
4
+ }
5
+ export function reconcileSelection(state, domain, mode) {
6
+ return reconcileSelectionInternal(state, domain, mode);
7
+ }
8
+ export function selectOne(state, id, domain) {
9
+ return selectOneInternal(state, id, domain);
10
+ }
11
+ export function toggleMultipleSelection(state, id, domain) {
12
+ return toggleMultipleSelectionInternal(state, id, domain);
13
+ }
14
+ export function clearSelection(state) {
15
+ return clearSelectionInternal(state);
16
+ }
17
+ export function selectInterval(state, anchor, extent, domain, additive) {
18
+ return selectIntervalInternal(state, anchor, extent, domain, additive);
19
+ }
20
+ //# sourceMappingURL=selection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"selection.js","sourceRoot":"","sources":["../src/selection.ts"],"names":[],"mappings":"AACA,OAAO,EACL,cAAc,IAAI,sBAAsB,EACxC,oBAAoB,IAAI,4BAA4B,EACpD,kBAAkB,IAAI,0BAA0B,EAChD,cAAc,IAAI,sBAAsB,EACxC,SAAS,IAAI,iBAAiB,EAC9B,uBAAuB,IAAI,+BAA+B,GAC3D,MAAM,+BAA+B,CAAC;AAuBvC,MAAM,UAAU,oBAAoB,CAClC,MAA2B,EAC3B,IAAmB,EACnB,KAAK,GAA+B,EAAE;IAEtC,OAAO,4BAA4B,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,KAAyB,EACzB,MAA2B,EAC3B,IAAmB;IAEnB,OAAO,0BAA0B,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AACzD,CAAC;AAED,MAAM,UAAU,SAAS,CACvB,KAAyB,EACzB,EAAM,EACN,MAA2B;IAE3B,OAAO,iBAAiB,CAAC,KAAK,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,uBAAuB,CACrC,KAAyB,EACzB,EAAM,EACN,MAA2B;IAE3B,OAAO,+BAA+B,CAAC,KAAK,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;AAC5D,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,KAAyB;IAEzB,OAAO,sBAAsB,CAAC,KAAK,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,KAAyB,EACzB,MAAU,EACV,MAAU,EACV,MAA2B,EAC3B,QAAiB;IAEjB,OAAO,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC;AACzE,CAAC"}
package/dist/shared.d.ts CHANGED
@@ -41,4 +41,3 @@ export interface ResourceCeilings {
41
41
  readonly maxIDCodeUnits?: number;
42
42
  }
43
43
  export declare const DEFAULT_MAX_ID_CODE_UNITS = 1024;
44
- //# sourceMappingURL=shared.d.ts.map
package/dist/slider.d.ts CHANGED
@@ -1,3 +1,2 @@
1
1
  export { applySliderEvent, createSliderState, type SliderCommand, type SliderEvent, type SliderState, type SliderUpdate, } from './internal/composites/slider.js';
2
2
  export { tryCreateSliderState } from './internal/composites/slider.js';
3
- //# sourceMappingURL=slider.d.ts.map
@@ -28,4 +28,3 @@ export interface SpinButtonUpdate {
28
28
  export declare function createSpinButtonState(range: QuantizedRange, value?: string, draft?: string | null): SpinButtonState;
29
29
  export declare function tryCreateSpinButtonState(range: QuantizedRange, value?: string, draft?: string | null): Result<SpinButtonState>;
30
30
  export declare function applySpinButtonEvent(range: QuantizedRange, state: SpinButtonState, event: SpinButtonEvent, policies?: SpinButtonPolicies): Result<SpinButtonUpdate>;
31
- //# sourceMappingURL=spin-button.d.ts.map
package/dist/stepper.d.ts CHANGED
@@ -15,4 +15,3 @@ export type StepperUpdate<ID extends StableID = StableID> = LinearChoiceUpdate<I
15
15
  export declare function createStepperState<ID extends StableID>(domain: Sequence<ID>, value?: ID | null, current?: ID | null): StepperState<ID>;
16
16
  export declare function tryCreateStepperState<ID extends StableID>(domain: Sequence<ID>, value?: ID | null, current?: ID | null): Result<StepperState<ID>>;
17
17
  export declare function applyStepperEvent<ID extends StableID>(domain: Sequence<ID>, state: StepperState<ID>, event: StepperEvent<ID>, policies?: StepperPolicies<ID>): Result<StepperUpdate<ID>>;
18
- //# sourceMappingURL=stepper.d.ts.map
@@ -0,0 +1,33 @@
1
+ import type { Result } from '../shared.js';
2
+ import { type Insets, type Point, type Rect, type RectAlign, type RectOverflow, type RectSide, type Size } from './geometry.js';
3
+ export interface AnchoredLayoutOptions {
4
+ readonly side?: RectSide;
5
+ readonly align?: RectAlign;
6
+ readonly offset?: number;
7
+ readonly padding?: number | Partial<Insets>;
8
+ readonly flip?: boolean;
9
+ readonly shift?: boolean;
10
+ readonly arrow?: Size | null;
11
+ readonly arrowPadding?: number;
12
+ }
13
+ export interface AnchoredLayoutInput extends AnchoredLayoutOptions {
14
+ readonly reference: Rect;
15
+ readonly floating: Size;
16
+ readonly boundary: Rect;
17
+ }
18
+ export interface AnchoredArrowLayout extends Point {
19
+ readonly centerOffset: number;
20
+ }
21
+ export interface AnchoredLayout {
22
+ readonly rect: Rect;
23
+ readonly side: RectSide;
24
+ readonly align: RectAlign;
25
+ readonly overflow: RectOverflow;
26
+ readonly availableSize: Size;
27
+ readonly arrow: AnchoredArrowLayout | null;
28
+ readonly referenceHidden: boolean;
29
+ readonly candidateCount: number;
30
+ }
31
+ export declare const MAX_ANCHORED_LAYOUT_CANDIDATES = 4;
32
+ export declare function solveAnchoredLayout(input: AnchoredLayoutInput): AnchoredLayout;
33
+ export declare function trySolveAnchoredLayout(input: AnchoredLayoutInput): Result<AnchoredLayout>;