@sectile/core 0.1.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 (299) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +16 -0
  3. package/dist/accordion.d.ts +43 -0
  4. package/dist/accordion.d.ts.map +1 -0
  5. package/dist/accordion.js +83 -0
  6. package/dist/accordion.js.map +1 -0
  7. package/dist/alert-dialog.d.ts +18 -0
  8. package/dist/alert-dialog.d.ts.map +1 -0
  9. package/dist/alert-dialog.js +9 -0
  10. package/dist/alert-dialog.js.map +1 -0
  11. package/dist/calendar.d.ts +2 -0
  12. package/dist/calendar.d.ts.map +1 -0
  13. package/dist/calendar.js +2 -0
  14. package/dist/calendar.js.map +1 -0
  15. package/dist/carousel.d.ts +40 -0
  16. package/dist/carousel.d.ts.map +1 -0
  17. package/dist/carousel.js +51 -0
  18. package/dist/carousel.js.map +1 -0
  19. package/dist/checkbox-group.d.ts +12 -0
  20. package/dist/checkbox-group.d.ts.map +1 -0
  21. package/dist/checkbox-group.js +12 -0
  22. package/dist/checkbox-group.js.map +1 -0
  23. package/dist/checkbox.d.ts +2 -0
  24. package/dist/checkbox.d.ts.map +1 -0
  25. package/dist/checkbox.js +2 -0
  26. package/dist/checkbox.js.map +1 -0
  27. package/dist/combobox.d.ts +16 -0
  28. package/dist/combobox.d.ts.map +1 -0
  29. package/dist/combobox.js +42 -0
  30. package/dist/combobox.js.map +1 -0
  31. package/dist/date-field.d.ts +58 -0
  32. package/dist/date-field.d.ts.map +1 -0
  33. package/dist/date-field.js +233 -0
  34. package/dist/date-field.js.map +1 -0
  35. package/dist/date-picker.d.ts +53 -0
  36. package/dist/date-picker.d.ts.map +1 -0
  37. package/dist/date-picker.js +157 -0
  38. package/dist/date-picker.js.map +1 -0
  39. package/dist/date-range-picker.d.ts +28 -0
  40. package/dist/date-range-picker.d.ts.map +1 -0
  41. package/dist/date-range-picker.js +85 -0
  42. package/dist/date-range-picker.js.map +1 -0
  43. package/dist/date-time-field.d.ts +53 -0
  44. package/dist/date-time-field.d.ts.map +1 -0
  45. package/dist/date-time-field.js +253 -0
  46. package/dist/date-time-field.js.map +1 -0
  47. package/dist/date-time-picker.d.ts +54 -0
  48. package/dist/date-time-picker.d.ts.map +1 -0
  49. package/dist/date-time-picker.js +151 -0
  50. package/dist/date-time-picker.js.map +1 -0
  51. package/dist/date-time-range-picker.d.ts +67 -0
  52. package/dist/date-time-range-picker.d.ts.map +1 -0
  53. package/dist/date-time-range-picker.js +226 -0
  54. package/dist/date-time-range-picker.js.map +1 -0
  55. package/dist/dialog.d.ts +16 -0
  56. package/dist/dialog.d.ts.map +1 -0
  57. package/dist/dialog.js +5 -0
  58. package/dist/dialog.js.map +1 -0
  59. package/dist/disclosure.d.ts +2 -0
  60. package/dist/disclosure.d.ts.map +1 -0
  61. package/dist/disclosure.js +2 -0
  62. package/dist/disclosure.js.map +1 -0
  63. package/dist/feed.d.ts +29 -0
  64. package/dist/feed.d.ts.map +1 -0
  65. package/dist/feed.js +26 -0
  66. package/dist/feed.js.map +1 -0
  67. package/dist/index.d.ts +17 -0
  68. package/dist/index.d.ts.map +1 -0
  69. package/dist/index.js +2 -0
  70. package/dist/index.js.map +1 -0
  71. package/dist/interaction.d.ts +14 -0
  72. package/dist/interaction.d.ts.map +1 -0
  73. package/dist/interaction.js +38 -0
  74. package/dist/interaction.js.map +1 -0
  75. package/dist/internal/composites/calendar.d.ts +35 -0
  76. package/dist/internal/composites/calendar.d.ts.map +1 -0
  77. package/dist/internal/composites/calendar.js +139 -0
  78. package/dist/internal/composites/calendar.js.map +1 -0
  79. package/dist/internal/composites/combobox.d.ts +41 -0
  80. package/dist/internal/composites/combobox.d.ts.map +1 -0
  81. package/dist/internal/composites/combobox.js +184 -0
  82. package/dist/internal/composites/combobox.js.map +1 -0
  83. package/dist/internal/composites/grid-control.d.ts +36 -0
  84. package/dist/internal/composites/grid-control.d.ts.map +1 -0
  85. package/dist/internal/composites/grid-control.js +86 -0
  86. package/dist/internal/composites/grid-control.js.map +1 -0
  87. package/dist/internal/composites/linear-action.d.ts +35 -0
  88. package/dist/internal/composites/linear-action.d.ts.map +1 -0
  89. package/dist/internal/composites/linear-action.js +92 -0
  90. package/dist/internal/composites/linear-action.js.map +1 -0
  91. package/dist/internal/composites/linear-choice.d.ts +41 -0
  92. package/dist/internal/composites/linear-choice.d.ts.map +1 -0
  93. package/dist/internal/composites/linear-choice.js +139 -0
  94. package/dist/internal/composites/linear-choice.js.map +1 -0
  95. package/dist/internal/composites/listbox.d.ts +50 -0
  96. package/dist/internal/composites/listbox.d.ts.map +1 -0
  97. package/dist/internal/composites/listbox.js +243 -0
  98. package/dist/internal/composites/listbox.js.map +1 -0
  99. package/dist/internal/composites/menu.d.ts +28 -0
  100. package/dist/internal/composites/menu.d.ts.map +1 -0
  101. package/dist/internal/composites/menu.js +72 -0
  102. package/dist/internal/composites/menu.js.map +1 -0
  103. package/dist/internal/composites/popup.d.ts +20 -0
  104. package/dist/internal/composites/popup.d.ts.map +1 -0
  105. package/dist/internal/composites/popup.js +8 -0
  106. package/dist/internal/composites/popup.js.map +1 -0
  107. package/dist/internal/composites/slider.d.ts +20 -0
  108. package/dist/internal/composites/slider.d.ts.map +1 -0
  109. package/dist/internal/composites/slider.js +69 -0
  110. package/dist/internal/composites/slider.js.map +1 -0
  111. package/dist/internal/composites/tree-grid.d.ts +65 -0
  112. package/dist/internal/composites/tree-grid.d.ts.map +1 -0
  113. package/dist/internal/composites/tree-grid.js +274 -0
  114. package/dist/internal/composites/tree-grid.js.map +1 -0
  115. package/dist/internal/composites/tree-view.d.ts +39 -0
  116. package/dist/internal/composites/tree-view.d.ts.map +1 -0
  117. package/dist/internal/composites/tree-view.js +175 -0
  118. package/dist/internal/composites/tree-view.js.map +1 -0
  119. package/dist/internal/editing/text.d.ts +64 -0
  120. package/dist/internal/editing/text.d.ts.map +1 -0
  121. package/dist/internal/editing/text.js +238 -0
  122. package/dist/internal/editing/text.js.map +1 -0
  123. package/dist/internal/kernel/decimal.d.ts +22 -0
  124. package/dist/internal/kernel/decimal.d.ts.map +1 -0
  125. package/dist/internal/kernel/decimal.js +137 -0
  126. package/dist/internal/kernel/decimal.js.map +1 -0
  127. package/dist/internal/kernel/foundation.d.ts +12 -0
  128. package/dist/internal/kernel/foundation.d.ts.map +1 -0
  129. package/dist/internal/kernel/foundation.js +132 -0
  130. package/dist/internal/kernel/foundation.js.map +1 -0
  131. package/dist/internal/kernel/indexed-sequence.d.ts +26 -0
  132. package/dist/internal/kernel/indexed-sequence.d.ts.map +1 -0
  133. package/dist/internal/kernel/indexed-sequence.js +117 -0
  134. package/dist/internal/kernel/indexed-sequence.js.map +1 -0
  135. package/dist/internal/kernel/machine.d.ts +8 -0
  136. package/dist/internal/kernel/machine.d.ts.map +1 -0
  137. package/dist/internal/kernel/machine.js +6 -0
  138. package/dist/internal/kernel/machine.js.map +1 -0
  139. package/dist/internal/runtime/revision.d.ts +22 -0
  140. package/dist/internal/runtime/revision.d.ts.map +1 -0
  141. package/dist/internal/runtime/revision.js +72 -0
  142. package/dist/internal/runtime/revision.js.map +1 -0
  143. package/dist/internal/state/checked.d.ts +21 -0
  144. package/dist/internal/state/checked.d.ts.map +1 -0
  145. package/dist/internal/state/checked.js +29 -0
  146. package/dist/internal/state/checked.js.map +1 -0
  147. package/dist/internal/state/cursor.d.ts +13 -0
  148. package/dist/internal/state/cursor.d.ts.map +1 -0
  149. package/dist/internal/state/cursor.js +24 -0
  150. package/dist/internal/state/cursor.js.map +1 -0
  151. package/dist/internal/state/expansion.d.ts +8 -0
  152. package/dist/internal/state/expansion.d.ts.map +1 -0
  153. package/dist/internal/state/expansion.js +23 -0
  154. package/dist/internal/state/expansion.js.map +1 -0
  155. package/dist/internal/state/open-state.d.ts +16 -0
  156. package/dist/internal/state/open-state.d.ts.map +1 -0
  157. package/dist/internal/state/open-state.js +25 -0
  158. package/dist/internal/state/open-state.js.map +1 -0
  159. package/dist/internal/state/selection.d.ts +23 -0
  160. package/dist/internal/state/selection.d.ts.map +1 -0
  161. package/dist/internal/state/selection.js +110 -0
  162. package/dist/internal/state/selection.js.map +1 -0
  163. package/dist/listbox.d.ts +2 -0
  164. package/dist/listbox.d.ts.map +1 -0
  165. package/dist/listbox.js +2 -0
  166. package/dist/listbox.js.map +1 -0
  167. package/dist/menu-button.d.ts +3 -0
  168. package/dist/menu-button.d.ts.map +1 -0
  169. package/dist/menu-button.js +3 -0
  170. package/dist/menu-button.js.map +1 -0
  171. package/dist/menu.d.ts +8 -0
  172. package/dist/menu.d.ts.map +1 -0
  173. package/dist/menu.js +4 -0
  174. package/dist/menu.js.map +1 -0
  175. package/dist/menubar.d.ts +3 -0
  176. package/dist/menubar.d.ts.map +1 -0
  177. package/dist/menubar.js +3 -0
  178. package/dist/menubar.js.map +1 -0
  179. package/dist/multi-thumb-slider.d.ts +35 -0
  180. package/dist/multi-thumb-slider.d.ts.map +1 -0
  181. package/dist/multi-thumb-slider.js +68 -0
  182. package/dist/multi-thumb-slider.js.map +1 -0
  183. package/dist/number-field.d.ts +49 -0
  184. package/dist/number-field.d.ts.map +1 -0
  185. package/dist/number-field.js +454 -0
  186. package/dist/number-field.js.map +1 -0
  187. package/dist/pagination.d.ts +63 -0
  188. package/dist/pagination.d.ts.map +1 -0
  189. package/dist/pagination.js +190 -0
  190. package/dist/pagination.js.map +1 -0
  191. package/dist/pin-input.d.ts +29 -0
  192. package/dist/pin-input.d.ts.map +1 -0
  193. package/dist/pin-input.js +49 -0
  194. package/dist/pin-input.js.map +1 -0
  195. package/dist/quantity-field.d.ts +58 -0
  196. package/dist/quantity-field.d.ts.map +1 -0
  197. package/dist/quantity-field.js +250 -0
  198. package/dist/quantity-field.js.map +1 -0
  199. package/dist/radio-group.d.ts +22 -0
  200. package/dist/radio-group.d.ts.map +1 -0
  201. package/dist/radio-group.js +16 -0
  202. package/dist/radio-group.js.map +1 -0
  203. package/dist/rating.d.ts +17 -0
  204. package/dist/rating.d.ts.map +1 -0
  205. package/dist/rating.js +15 -0
  206. package/dist/rating.js.map +1 -0
  207. package/dist/result.d.ts +10 -0
  208. package/dist/result.d.ts.map +1 -0
  209. package/dist/result.js +19 -0
  210. package/dist/result.js.map +1 -0
  211. package/dist/revision.d.ts +2 -0
  212. package/dist/revision.d.ts.map +1 -0
  213. package/dist/revision.js +2 -0
  214. package/dist/revision.js.map +1 -0
  215. package/dist/select.d.ts +30 -0
  216. package/dist/select.d.ts.map +1 -0
  217. package/dist/select.js +28 -0
  218. package/dist/select.js.map +1 -0
  219. package/dist/shared.d.ts +42 -0
  220. package/dist/shared.d.ts.map +1 -0
  221. package/dist/shared.js +3 -0
  222. package/dist/shared.js.map +1 -0
  223. package/dist/slider.d.ts +2 -0
  224. package/dist/slider.d.ts.map +1 -0
  225. package/dist/slider.js +2 -0
  226. package/dist/slider.js.map +1 -0
  227. package/dist/spin-button.d.ts +29 -0
  228. package/dist/spin-button.d.ts.map +1 -0
  229. package/dist/spin-button.js +61 -0
  230. package/dist/spin-button.js.map +1 -0
  231. package/dist/stepper.d.ts +17 -0
  232. package/dist/stepper.d.ts.map +1 -0
  233. package/dist/stepper.js +12 -0
  234. package/dist/stepper.js.map +1 -0
  235. package/dist/structures/grid.d.ts +27 -0
  236. package/dist/structures/grid.d.ts.map +1 -0
  237. package/dist/structures/grid.js +197 -0
  238. package/dist/structures/grid.js.map +1 -0
  239. package/dist/structures/range.d.ts +39 -0
  240. package/dist/structures/range.d.ts.map +1 -0
  241. package/dist/structures/range.js +242 -0
  242. package/dist/structures/range.js.map +1 -0
  243. package/dist/structures/sequence.d.ts +17 -0
  244. package/dist/structures/sequence.d.ts.map +1 -0
  245. package/dist/structures/sequence.js +24 -0
  246. package/dist/structures/sequence.js.map +1 -0
  247. package/dist/structures/tree.d.ts +32 -0
  248. package/dist/structures/tree.d.ts.map +1 -0
  249. package/dist/structures/tree.js +234 -0
  250. package/dist/structures/tree.js.map +1 -0
  251. package/dist/switch.d.ts +20 -0
  252. package/dist/switch.d.ts.map +1 -0
  253. package/dist/switch.js +4 -0
  254. package/dist/switch.js.map +1 -0
  255. package/dist/tabs.d.ts +15 -0
  256. package/dist/tabs.d.ts.map +1 -0
  257. package/dist/tabs.js +23 -0
  258. package/dist/tabs.js.map +1 -0
  259. package/dist/tags-input.d.ts +41 -0
  260. package/dist/tags-input.d.ts.map +1 -0
  261. package/dist/tags-input.js +44 -0
  262. package/dist/tags-input.js.map +1 -0
  263. package/dist/text.d.ts +2 -0
  264. package/dist/text.d.ts.map +1 -0
  265. package/dist/text.js +2 -0
  266. package/dist/text.js.map +1 -0
  267. package/dist/time-field.d.ts +46 -0
  268. package/dist/time-field.d.ts.map +1 -0
  269. package/dist/time-field.js +148 -0
  270. package/dist/time-field.js.map +1 -0
  271. package/dist/toggle-button.d.ts +19 -0
  272. package/dist/toggle-button.d.ts.map +1 -0
  273. package/dist/toggle-button.js +16 -0
  274. package/dist/toggle-button.js.map +1 -0
  275. package/dist/toolbar.d.ts +2 -0
  276. package/dist/toolbar.d.ts.map +1 -0
  277. package/dist/toolbar.js +2 -0
  278. package/dist/toolbar.js.map +1 -0
  279. package/dist/tooltip.d.ts +2 -0
  280. package/dist/tooltip.d.ts.map +1 -0
  281. package/dist/tooltip.js +2 -0
  282. package/dist/tooltip.js.map +1 -0
  283. package/dist/tree-grid.d.ts +10 -0
  284. package/dist/tree-grid.d.ts.map +1 -0
  285. package/dist/tree-grid.js +14 -0
  286. package/dist/tree-grid.js.map +1 -0
  287. package/dist/tree-view.d.ts +2 -0
  288. package/dist/tree-view.d.ts.map +1 -0
  289. package/dist/tree-view.js +2 -0
  290. package/dist/tree-view.js.map +1 -0
  291. package/dist/units.d.ts +72 -0
  292. package/dist/units.d.ts.map +1 -0
  293. package/dist/units.js +496 -0
  294. package/dist/units.js.map +1 -0
  295. package/dist/window-splitter.d.ts +2 -0
  296. package/dist/window-splitter.d.ts.map +1 -0
  297. package/dist/window-splitter.js +2 -0
  298. package/dist/window-splitter.js.map +1 -0
  299. package/package.json +304 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree-grid.js","sourceRoot":"","sources":["../../../src/internal/composites/tree-grid.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import type { Result, StableID } from '../../shared.js';
2
+ import type { Tree } from '../../structures/tree.js';
3
+ import { type CursorState } from '../state/cursor.js';
4
+ import { type ExpansionState } from '../state/expansion.js';
5
+ import { type SelectionSnapshotInput, type SelectionState } from '../state/selection.js';
6
+ export type TreeViewEvent<ID extends StableID = StableID> = 'next' | 'previous' | 'right' | 'left' | 'toggle-select' | {
7
+ readonly type: 'focus';
8
+ readonly id: ID;
9
+ } | {
10
+ readonly type: 'toggle-select';
11
+ readonly id: ID;
12
+ } | {
13
+ readonly type: 'set-expanded';
14
+ readonly id: ID;
15
+ readonly open: boolean;
16
+ };
17
+ export interface TreeViewCommand<ID extends StableID = StableID> {
18
+ readonly type: 'focus';
19
+ readonly id: ID;
20
+ }
21
+ export interface TreeViewState<ID extends StableID = StableID> {
22
+ readonly expansion: ExpansionState<ID>;
23
+ readonly cursor: CursorState<ID>;
24
+ readonly selection: SelectionState<ID>;
25
+ }
26
+ export interface TreeViewStateInput<ID extends StableID = StableID> extends SelectionSnapshotInput<ID> {
27
+ readonly expanded?: Iterable<ID>;
28
+ readonly current?: ID | null;
29
+ }
30
+ export interface TreeViewPolicies<ID extends StableID = StableID> {
31
+ readonly eligible?: (id: ID) => boolean;
32
+ }
33
+ export interface TreeViewUpdate<ID extends StableID = StableID> {
34
+ readonly state: TreeViewState<ID>;
35
+ readonly commands: readonly TreeViewCommand<ID>[];
36
+ }
37
+ export declare function createTreeViewState<ID extends StableID>(tree: Tree<ID>, input?: TreeViewStateInput<ID>): Result<TreeViewState<ID>>;
38
+ export declare function applyTreeViewEvent<ID extends StableID>(tree: Tree<ID>, state: TreeViewState<ID>, event: TreeViewEvent<ID>, policies?: TreeViewPolicies<ID>): Result<TreeViewUpdate<ID>>;
39
+ //# sourceMappingURL=tree-view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree-view.d.ts","sourceRoot":"","sources":["../../../src/internal/composites/tree-view.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAgB,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AACtE,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAC;AAGrD,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACzE,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAGL,KAAK,sBAAsB,EAC3B,KAAK,cAAc,EACpB,MAAM,uBAAuB,CAAC;AAE/B,MAAM,MAAM,aAAa,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ,IACpD,MAAM,GACN,UAAU,GACV,OAAO,GACP,MAAM,GACN,eAAe,GACf;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAA;CAAE,GAC3C;IAAE,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAA;CAAE,GACnD;IAAE,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAA;CAAE,CAAC;AAE/E,MAAM,WAAW,eAAe,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ;IAC7D,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,aAAa,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ;IAC3D,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC;IACvC,QAAQ,CAAC,MAAM,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;IACjC,QAAQ,CAAC,SAAS,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC;CACxC;AAED,MAAM,WAAW,kBAAkB,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ,CAChE,SAAQ,sBAAsB,CAAC,EAAE,CAAC;IAClC,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,gBAAgB,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ;IAC9D,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,OAAO,CAAC;CACzC;AAED,MAAM,WAAW,cAAc,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ;IAC5D,QAAQ,CAAC,KAAK,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC;IAClC,QAAQ,CAAC,QAAQ,EAAE,SAAS,eAAe,CAAC,EAAE,CAAC,EAAE,CAAC;CACnD;AAED,wBAAgB,mBAAmB,CAAC,EAAE,SAAS,QAAQ,EACrD,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,EACd,KAAK,GAAE,kBAAkB,CAAC,EAAE,CAAM,GACjC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAe3B;AAED,wBAAgB,kBAAkB,CAAC,EAAE,SAAS,QAAQ,EACpD,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,EACd,KAAK,EAAE,aAAa,CAAC,EAAE,CAAC,EACxB,KAAK,EAAE,aAAa,CAAC,EAAE,CAAC,EACxB,QAAQ,GAAE,gBAAgB,CAAC,EAAE,CAAM,GAClC,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAuH5B"}
@@ -0,0 +1,175 @@
1
+ import { fail, ok } from '../kernel/foundation.js';
2
+ import { createMachineUpdate } from '../kernel/machine.js';
3
+ import { createCursorState } from '../state/cursor.js';
4
+ import { createExpansionState, setExpansionOpen, } from '../state/expansion.js';
5
+ import { createSelectionState, toggleMultipleSelection, } from '../state/selection.js';
6
+ export function createTreeViewState(tree, input = {}) {
7
+ const expansion = createExpansionState(tree, input.expanded ?? []);
8
+ const visible = tree.visible(expansion);
9
+ const current = input.current ?? null;
10
+ if (current !== null && !visible.contains(current)) {
11
+ return fail('construction', 'tree-view-cursor-hidden', 'Tree-view cursor must be visible under the requested expansion.', { current });
12
+ }
13
+ const selection = createSelectionState(tree.preorder(), 'multiple', input);
14
+ if (!selection.ok)
15
+ return selection;
16
+ return ok(treeViewState(expansion, createCursorState(current), selection.value));
17
+ }
18
+ export function applyTreeViewEvent(tree, state, event, policies = {}) {
19
+ if (!isTreeViewEvent(event)) {
20
+ return fail('transition-rejection', 'invalid-tree-view-event', 'Tree-view event must be next, previous, right, left, or toggle-select.', { event });
21
+ }
22
+ const expansion = createExpansionState(tree, state.expansion.ids);
23
+ if (policies.eligible !== undefined && typeof policies.eligible !== 'function') {
24
+ return fail('transition-rejection', 'invalid-eligibility-policy', 'Tree-view eligibility policy must be a function.');
25
+ }
26
+ const eligible = policies.eligible ?? (() => true);
27
+ const visible = tree.visible(expansion);
28
+ const stateError = validateTreeViewState(tree, visible, state);
29
+ if (stateError !== null)
30
+ return { ok: false, error: stateError };
31
+ const normalized = sameExpansion(expansion, state.expansion)
32
+ ? state
33
+ : treeViewState(expansion, state.cursor, state.selection);
34
+ const current = state.cursor.current;
35
+ if (typeof event === 'object') {
36
+ if (!tree.has(event.id)) {
37
+ return fail('transition-rejection', 'tree-view-target-outside-tree', 'Direct tree-view events require an identity in the tree.', { id: event.id });
38
+ }
39
+ if (event.type === 'set-expanded') {
40
+ if (!eligible(event.id))
41
+ return fail('transition-rejection', 'tree-view-target-ineligible', 'Disabled tree-view items cannot change expansion.', { id: event.id });
42
+ const nextExpansion = setExpansionOpen(expansion, event.id, event.open, tree);
43
+ const nextVisible = tree.visible(nextExpansion);
44
+ const target = current !== null && nextVisible.contains(current) ? current : event.id;
45
+ return createMachineUpdate(treeViewState(nextExpansion, createCursorState(target), state.selection), target === current ? [] : [{ type: 'focus', id: target }]);
46
+ }
47
+ if (!visible.contains(event.id)) {
48
+ return fail('transition-rejection', 'tree-view-target-hidden', 'Direct tree-view focus and selection require a visible identity.', { id: event.id });
49
+ }
50
+ if (!eligible(event.id))
51
+ return fail('transition-rejection', 'tree-view-target-ineligible', 'Direct tree-view focus and selection require an eligible identity.', { id: event.id });
52
+ if (event.type === 'focus') {
53
+ return createMachineUpdate(treeViewState(expansion, createCursorState(event.id), state.selection), [{ type: 'focus', id: event.id }]);
54
+ }
55
+ return createMachineUpdate(treeViewState(expansion, createCursorState(event.id), toggleMultipleSelection(state.selection, event.id, tree.preorder())), [{ type: 'focus', id: event.id }]);
56
+ }
57
+ if (event === 'next' || event === 'previous') {
58
+ const target = current === null
59
+ ? eligibleFromEdge(visible, event === 'next' ? 1 : -1, eligible)
60
+ : movementTarget(visible, current, event === 'next' ? 1 : -1, eligible);
61
+ if (target === null)
62
+ return createMachineUpdate(normalized);
63
+ return createMachineUpdate(treeViewState(expansion, createCursorState(target), state.selection), [{ type: 'focus', id: target }]);
64
+ }
65
+ if (event === 'right') {
66
+ if (current === null)
67
+ return createMachineUpdate(normalized);
68
+ const children = tree.childrenOf(current);
69
+ if (children === null || children.size === 0)
70
+ return createMachineUpdate(normalized);
71
+ if (!expansion.has(current)) {
72
+ return createMachineUpdate(treeViewState(setExpansionOpen(expansion, current, true, tree), state.cursor, state.selection));
73
+ }
74
+ const target = eligibleFromEdge(children, 1, eligible);
75
+ if (target === null)
76
+ return createMachineUpdate(normalized);
77
+ return createMachineUpdate(treeViewState(expansion, createCursorState(target), state.selection), [{ type: 'focus', id: target }]);
78
+ }
79
+ if (event === 'left') {
80
+ if (current === null)
81
+ return createMachineUpdate(normalized);
82
+ if (expansion.has(current)) {
83
+ return createMachineUpdate(treeViewState(setExpansionOpen(expansion, current, false, tree), state.cursor, state.selection));
84
+ }
85
+ const parent = eligibleAncestor(tree, current, eligible);
86
+ if (parent === null)
87
+ return createMachineUpdate(normalized);
88
+ return createMachineUpdate(treeViewState(expansion, createCursorState(parent), state.selection), [{ type: 'focus', id: parent }]);
89
+ }
90
+ if (current === null) {
91
+ return fail('transition-rejection', 'no-cursor', 'Tree-view selection requires a cursor.');
92
+ }
93
+ if (!eligible(current))
94
+ return fail('transition-rejection', 'tree-view-target-ineligible', 'Tree-view selection requires an eligible cursor.', { id: current });
95
+ return createMachineUpdate(treeViewState(expansion, state.cursor, toggleMultipleSelection(state.selection, current, tree.preorder())));
96
+ }
97
+ function movementTarget(visible, current, direction, eligible) {
98
+ const index = visible.indexOf(current);
99
+ if (index === null)
100
+ return null;
101
+ for (let candidate = index + direction; candidate >= 0 && candidate < visible.size; candidate += direction) {
102
+ const id = visible.at(candidate);
103
+ if (id !== null && eligible(id))
104
+ return id;
105
+ }
106
+ return null;
107
+ }
108
+ function eligibleFromEdge(domain, direction, eligible) {
109
+ for (let index = direction === 1 ? 0 : domain.size - 1; index >= 0 && index < domain.size; index += direction) {
110
+ const id = domain.at(index);
111
+ if (id !== null && eligible(id))
112
+ return id;
113
+ }
114
+ return null;
115
+ }
116
+ function eligibleAncestor(tree, id, eligible) {
117
+ let parent = tree.parentOf(id);
118
+ while (parent !== null && !eligible(parent))
119
+ parent = tree.parentOf(parent);
120
+ return parent;
121
+ }
122
+ function validateTreeViewState(tree, visible, state) {
123
+ if (state.cursor.current !== null && !visible.contains(state.cursor.current)) {
124
+ return {
125
+ class: 'transition-rejection',
126
+ code: 'tree-view-cursor-hidden',
127
+ message: 'Tree-view cursor must remain visible.',
128
+ details: { current: state.cursor.current },
129
+ };
130
+ }
131
+ const preorder = tree.preorder();
132
+ const unique = new Set(state.selection.selected);
133
+ if (unique.size !== state.selection.selected.length || unique.size !== state.selection.size) {
134
+ return {
135
+ class: 'transition-rejection',
136
+ code: 'invalid-tree-view-selection',
137
+ message: 'Tree-view selection must contain unique identities with matching observations.',
138
+ };
139
+ }
140
+ for (const id of unique) {
141
+ if (!preorder.contains(id) || !state.selection.has(id)) {
142
+ return {
143
+ class: 'transition-rejection',
144
+ code: 'tree-view-selection-outside-tree',
145
+ message: 'Tree-view selection must belong to the tree.',
146
+ details: { id },
147
+ };
148
+ }
149
+ }
150
+ if (state.selection.anchor !== null && !preorder.contains(state.selection.anchor)) {
151
+ return {
152
+ class: 'transition-rejection',
153
+ code: 'tree-view-anchor-outside-tree',
154
+ message: 'Tree-view anchor must belong to the tree.',
155
+ details: { anchor: state.selection.anchor },
156
+ };
157
+ }
158
+ return null;
159
+ }
160
+ function sameExpansion(left, right) {
161
+ return left.ids.length === right.ids.length && left.ids.every((id, index) => id === right.ids[index]);
162
+ }
163
+ function treeViewState(expansion, cursor, selection) {
164
+ return Object.freeze({ expansion, cursor, selection });
165
+ }
166
+ function isTreeViewEvent(value) {
167
+ if (typeof value === 'string') {
168
+ return ['next', 'previous', 'right', 'left', 'toggle-select'].includes(value);
169
+ }
170
+ return typeof value === 'object' && value !== null && 'type' in value && 'id' in value
171
+ && typeof value.id === 'string'
172
+ && (value.type === 'focus' || value.type === 'toggle-select'
173
+ || (value.type === 'set-expanded' && 'open' in value && typeof value.open === 'boolean'));
174
+ }
175
+ //# sourceMappingURL=tree-view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tree-view.js","sourceRoot":"","sources":["../../../src/internal/composites/tree-view.ts"],"names":[],"mappings":"AAEA,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,uBAAuB,GAGxB,MAAM,uBAAuB,CAAC;AAsC/B,MAAM,UAAU,mBAAmB,CACjC,IAAc,EACd,KAAK,GAA2B,EAAE;IAElC,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,UAAU,EAAE,KAAK,CAAC,CAAC;IAC3E,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,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACxC,MAAM,UAAU,GAAG,qBAAqB,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAC/D,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,uBAAuB,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CACpE,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,uBAAuB,CAAC,KAAK,CAAC,SAAS,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,CACnE,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;IAExB,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,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,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"}
@@ -0,0 +1,64 @@
1
+ import type { Result } from '../../shared.js';
2
+ export type TextSelectionDirection = 'none' | 'forward' | 'backward';
3
+ export interface TextSelectionInput {
4
+ readonly anchorCodeUnitOffset: number;
5
+ readonly focusCodeUnitOffset: number;
6
+ }
7
+ export interface TextSelection extends TextSelectionInput {
8
+ readonly startCodeUnitOffset: number;
9
+ readonly endCodeUnitOffset: number;
10
+ readonly direction: TextSelectionDirection;
11
+ }
12
+ export interface TextSnapshot {
13
+ readonly text: string;
14
+ readonly selection: TextSelection;
15
+ }
16
+ export interface TextComposition {
17
+ readonly baseline: TextSnapshot;
18
+ readonly startCodeUnitOffset: number;
19
+ readonly endCodeUnitOffset: number;
20
+ readonly composingText: string;
21
+ }
22
+ export interface TextEditingState {
23
+ readonly snapshot: TextSnapshot;
24
+ readonly composition: TextComposition | null;
25
+ }
26
+ export type TextEvent = {
27
+ readonly type: 'replace';
28
+ readonly startCodeUnitOffset: number;
29
+ readonly endCodeUnitOffset: number;
30
+ readonly text: string;
31
+ readonly selection: TextSelectionInput;
32
+ } | {
33
+ readonly type: 'composition-start';
34
+ readonly startCodeUnitOffset: number;
35
+ readonly endCodeUnitOffset: number;
36
+ readonly text: string;
37
+ readonly selection: TextSelectionInput;
38
+ } | {
39
+ readonly type: 'composition-update';
40
+ readonly text: string;
41
+ readonly selection: TextSelectionInput;
42
+ } | {
43
+ readonly type: 'composition-commit';
44
+ } | {
45
+ readonly type: 'composition-cancel';
46
+ };
47
+ export interface TextUpdate {
48
+ readonly state: TextEditingState;
49
+ readonly commands: readonly never[];
50
+ }
51
+ export declare function isWellFormedPlainText(text: string): boolean;
52
+ export declare function isTextCodeUnitBoundary(text: string, offset: number): boolean;
53
+ export declare function createTextSnapshot(text: string, selection: TextSelectionInput): Result<TextSnapshot>;
54
+ export declare function createTextEditingState(text?: string, selection?: TextSelectionInput): Result<TextEditingState>;
55
+ export declare function normalizeTextEditingState(state: TextEditingState): Result<TextEditingState>;
56
+ export declare function applyTextEvent(state: TextEditingState, event: TextEvent): Result<TextUpdate>;
57
+ export declare function slicePlainText(text: string, startCodeUnitOffset: number, endCodeUnitOffset: number): Result<string>;
58
+ export declare function replacePlainText(text: string, startCodeUnitOffset: number, endCodeUnitOffset: number, replacement: string): Result<string>;
59
+ export declare function replaceTextState(state: TextEditingState, startCodeUnitOffset: number, endCodeUnitOffset: number, replacement: string, selection: TextSelectionInput): Result<TextEditingState>;
60
+ export declare function startTextComposition(state: TextEditingState, startCodeUnitOffset: number, endCodeUnitOffset: number, composingText: string, selection: TextSelectionInput): Result<TextEditingState>;
61
+ export declare function updateTextComposition(state: TextEditingState, composingText: string, selection: TextSelectionInput): Result<TextEditingState>;
62
+ export declare function commitTextComposition(state: TextEditingState): Result<TextEditingState>;
63
+ export declare function cancelTextComposition(state: TextEditingState): Result<TextEditingState>;
64
+ //# sourceMappingURL=text.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.d.ts","sourceRoot":"","sources":["../../../src/internal/editing/text.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,238 @@
1
+ import { fail, isWellFormedUTF16, ok } from '../kernel/foundation.js';
2
+ import { createMachineUpdate } from '../kernel/machine.js';
3
+ export function isWellFormedPlainText(text) {
4
+ return typeof text === 'string' && isWellFormedUTF16(text);
5
+ }
6
+ export function isTextCodeUnitBoundary(text, offset) {
7
+ if (!isWellFormedPlainText(text) || !Number.isSafeInteger(offset))
8
+ return false;
9
+ if (offset < 0 || offset > text.length)
10
+ return false;
11
+ if (offset === 0 || offset === text.length)
12
+ return true;
13
+ return !(isHighSurrogate(text.charCodeAt(offset - 1)) && isLowSurrogate(text.charCodeAt(offset)));
14
+ }
15
+ export function createTextSnapshot(text, selection) {
16
+ return createSnapshot(text, selection, 'construction');
17
+ }
18
+ export function createTextEditingState(text = '', selection = {
19
+ anchorCodeUnitOffset: 0,
20
+ focusCodeUnitOffset: 0,
21
+ }) {
22
+ const snapshot = createSnapshot(text, selection, 'construction');
23
+ return snapshot.ok ? ok(stateFromSnapshot(snapshot.value)) : snapshot;
24
+ }
25
+ export function normalizeTextEditingState(state) {
26
+ return normalizeEditingState(state, 'construction');
27
+ }
28
+ export function applyTextEvent(state, event) {
29
+ const normalized = normalizeEditingState(state, 'transition-rejection');
30
+ if (!normalized.ok)
31
+ return normalized;
32
+ if (!isObject(event) || typeof event.type !== 'string') {
33
+ return fail('transition-rejection', 'invalid-text-event', 'Text event must be a supported discriminated event object.');
34
+ }
35
+ let next;
36
+ switch (event.type) {
37
+ case 'replace':
38
+ next = replaceTextState(normalized.value, event.startCodeUnitOffset, event.endCodeUnitOffset, event.text, event.selection);
39
+ break;
40
+ case 'composition-start':
41
+ next = startTextComposition(normalized.value, event.startCodeUnitOffset, event.endCodeUnitOffset, event.text, event.selection);
42
+ break;
43
+ case 'composition-update':
44
+ next = updateTextComposition(normalized.value, event.text, event.selection);
45
+ break;
46
+ case 'composition-commit':
47
+ next = commitTextComposition(normalized.value);
48
+ break;
49
+ case 'composition-cancel':
50
+ next = cancelTextComposition(normalized.value);
51
+ break;
52
+ default:
53
+ return fail('transition-rejection', 'invalid-text-event', 'Text event type is not supported.');
54
+ }
55
+ return next.ok
56
+ ? createMachineUpdate(next.value)
57
+ : next;
58
+ }
59
+ export function slicePlainText(text, startCodeUnitOffset, endCodeUnitOffset) {
60
+ const range = validateRange(text, startCodeUnitOffset, endCodeUnitOffset, 'construction');
61
+ return range.ok
62
+ ? ok(text.slice(startCodeUnitOffset, endCodeUnitOffset))
63
+ : range;
64
+ }
65
+ export function replacePlainText(text, startCodeUnitOffset, endCodeUnitOffset, replacement) {
66
+ return replaceChecked(text, startCodeUnitOffset, endCodeUnitOffset, replacement, 'construction');
67
+ }
68
+ export function replaceTextState(state, startCodeUnitOffset, endCodeUnitOffset, replacement, selection) {
69
+ if (state.composition !== null) {
70
+ return fail('transition-rejection', 'composition-active', 'Stable replacement requires composition to be inactive.');
71
+ }
72
+ const replaced = replaceChecked(state.snapshot.text, startCodeUnitOffset, endCodeUnitOffset, replacement, 'transition-rejection');
73
+ if (!replaced.ok)
74
+ return replaced;
75
+ const snapshot = createSnapshot(replaced.value, selection, 'transition-rejection');
76
+ if (!snapshot.ok)
77
+ return snapshot;
78
+ return ok(sameSnapshot(state.snapshot, snapshot.value) ? state : stateFromSnapshot(snapshot.value));
79
+ }
80
+ export function startTextComposition(state, startCodeUnitOffset, endCodeUnitOffset, composingText, selection) {
81
+ if (state.composition !== null) {
82
+ return fail('transition-rejection', 'composition-active', 'A text composition is already active.');
83
+ }
84
+ const projected = replaceChecked(state.snapshot.text, startCodeUnitOffset, endCodeUnitOffset, composingText, 'transition-rejection');
85
+ if (!projected.ok)
86
+ return projected;
87
+ const snapshot = createSnapshot(projected.value, selection, 'transition-rejection');
88
+ if (!snapshot.ok)
89
+ return snapshot;
90
+ const composition = freezeComposition({
91
+ baseline: state.snapshot,
92
+ startCodeUnitOffset,
93
+ endCodeUnitOffset,
94
+ composingText,
95
+ });
96
+ return ok(Object.freeze({ snapshot: snapshot.value, composition }));
97
+ }
98
+ export function updateTextComposition(state, composingText, selection) {
99
+ const current = state.composition;
100
+ if (current === null) {
101
+ return fail('transition-rejection', 'composition-inactive', 'Text composition update requires an active composition.');
102
+ }
103
+ const projected = replaceChecked(current.baseline.text, current.startCodeUnitOffset, current.endCodeUnitOffset, composingText, 'transition-rejection');
104
+ if (!projected.ok)
105
+ return projected;
106
+ const snapshot = createSnapshot(projected.value, selection, 'transition-rejection');
107
+ if (!snapshot.ok)
108
+ return snapshot;
109
+ const composition = freezeComposition({ ...current, composingText });
110
+ return ok(Object.freeze({ snapshot: snapshot.value, composition }));
111
+ }
112
+ export function commitTextComposition(state) {
113
+ if (state.composition === null) {
114
+ return fail('transition-rejection', 'composition-inactive', 'Text composition commit requires an active composition.');
115
+ }
116
+ return ok(stateFromSnapshot(state.snapshot));
117
+ }
118
+ export function cancelTextComposition(state) {
119
+ if (state.composition === null) {
120
+ return fail('transition-rejection', 'composition-inactive', 'Text composition cancel requires an active composition.');
121
+ }
122
+ return ok(stateFromSnapshot(state.composition.baseline));
123
+ }
124
+ function createSnapshot(text, selection, errorClass) {
125
+ if (!isWellFormedPlainText(text)) {
126
+ return fail(errorClass, 'ill-formed-text', 'Plain text must be a well-formed UTF-16 string.');
127
+ }
128
+ if (!isObject(selection)) {
129
+ return fail(errorClass, 'invalid-text-selection', 'Text selection must provide anchor and focus code-unit offsets.');
130
+ }
131
+ const anchorError = validateOffset(text, selection.anchorCodeUnitOffset, 'anchorCodeUnitOffset', errorClass);
132
+ if (anchorError !== null)
133
+ return anchorError;
134
+ const focusError = validateOffset(text, selection.focusCodeUnitOffset, 'focusCodeUnitOffset', errorClass);
135
+ if (focusError !== null)
136
+ return focusError;
137
+ const anchor = selection.anchorCodeUnitOffset;
138
+ const focus = selection.focusCodeUnitOffset;
139
+ const textSelection = Object.freeze({
140
+ anchorCodeUnitOffset: anchor,
141
+ focusCodeUnitOffset: focus,
142
+ startCodeUnitOffset: Math.min(anchor, focus),
143
+ endCodeUnitOffset: Math.max(anchor, focus),
144
+ direction: anchor === focus ? 'none' : anchor < focus ? 'forward' : 'backward',
145
+ });
146
+ return ok(Object.freeze({ text, selection: textSelection }));
147
+ }
148
+ function normalizeEditingState(state, errorClass) {
149
+ if (!isObject(state)) {
150
+ return fail(errorClass, 'invalid-text-state', 'Text editing state must be an object.');
151
+ }
152
+ const snapshot = normalizeSnapshot(state.snapshot, errorClass);
153
+ if (!snapshot.ok)
154
+ return snapshot;
155
+ if (state.composition === null)
156
+ return ok(stateFromSnapshot(snapshot.value));
157
+ if (!isObject(state.composition)) {
158
+ return fail(errorClass, 'invalid-text-composition', 'Text composition must be null or a composition snapshot.');
159
+ }
160
+ const baseline = normalizeSnapshot(state.composition.baseline, errorClass);
161
+ if (!baseline.ok)
162
+ return baseline;
163
+ const projected = replaceChecked(baseline.value.text, state.composition.startCodeUnitOffset, state.composition.endCodeUnitOffset, state.composition.composingText, errorClass);
164
+ if (!projected.ok)
165
+ return projected;
166
+ if (projected.value !== snapshot.value.text) {
167
+ return fail(errorClass, 'inconsistent-composition-snapshot', 'Text composition snapshot must equal its baseline replacement.');
168
+ }
169
+ return ok(Object.freeze({
170
+ snapshot: snapshot.value,
171
+ composition: freezeComposition({
172
+ baseline: baseline.value,
173
+ startCodeUnitOffset: state.composition.startCodeUnitOffset,
174
+ endCodeUnitOffset: state.composition.endCodeUnitOffset,
175
+ composingText: state.composition.composingText,
176
+ }),
177
+ }));
178
+ }
179
+ function normalizeSnapshot(snapshot, errorClass) {
180
+ if (!isObject(snapshot)) {
181
+ return fail(errorClass, 'invalid-text-snapshot', 'Text snapshot must be an object.');
182
+ }
183
+ return createSnapshot(snapshot.text, snapshot.selection, errorClass);
184
+ }
185
+ function replaceChecked(text, startCodeUnitOffset, endCodeUnitOffset, replacement, errorClass) {
186
+ const range = validateRange(text, startCodeUnitOffset, endCodeUnitOffset, errorClass);
187
+ if (!range.ok)
188
+ return range;
189
+ if (!isWellFormedPlainText(replacement)) {
190
+ return fail(errorClass, 'ill-formed-replacement', 'Replacement text must be a well-formed UTF-16 string.');
191
+ }
192
+ return ok(text.slice(0, startCodeUnitOffset) + replacement + text.slice(endCodeUnitOffset));
193
+ }
194
+ function validateRange(text, startCodeUnitOffset, endCodeUnitOffset, errorClass) {
195
+ if (!isWellFormedPlainText(text)) {
196
+ return fail(errorClass, 'ill-formed-text', 'Plain text must be a well-formed UTF-16 string.');
197
+ }
198
+ const startError = validateOffset(text, startCodeUnitOffset, 'startCodeUnitOffset', errorClass);
199
+ if (startError !== null)
200
+ return startError;
201
+ const endError = validateOffset(text, endCodeUnitOffset, 'endCodeUnitOffset', errorClass);
202
+ if (endError !== null)
203
+ return endError;
204
+ if (startCodeUnitOffset > endCodeUnitOffset) {
205
+ return fail(errorClass, 'invalid-text-range', 'Text replacement start must not exceed its end.', { startCodeUnitOffset, endCodeUnitOffset });
206
+ }
207
+ return ok(true);
208
+ }
209
+ function validateOffset(text, offset, name, errorClass) {
210
+ if (!Number.isSafeInteger(offset) || offset < 0 || offset > text.length) {
211
+ return fail(errorClass, 'invalid-text-offset', `${name} must be a safe UTF-16 code-unit offset within the text.`, { [name]: offset, codeUnitLength: text.length });
212
+ }
213
+ if (!isTextCodeUnitBoundary(text, offset)) {
214
+ return fail(errorClass, 'surrogate-boundary', `${name} must not split a UTF-16 surrogate pair.`, { [name]: offset });
215
+ }
216
+ return null;
217
+ }
218
+ function stateFromSnapshot(snapshot) {
219
+ return Object.freeze({ snapshot, composition: null });
220
+ }
221
+ function freezeComposition(composition) {
222
+ return Object.freeze(composition);
223
+ }
224
+ function sameSnapshot(left, right) {
225
+ return (left.text === right.text &&
226
+ left.selection.anchorCodeUnitOffset === right.selection.anchorCodeUnitOffset &&
227
+ left.selection.focusCodeUnitOffset === right.selection.focusCodeUnitOffset);
228
+ }
229
+ function isHighSurrogate(code) {
230
+ return code >= 0xd800 && code <= 0xdbff;
231
+ }
232
+ function isLowSurrogate(code) {
233
+ return code >= 0xdc00 && code <= 0xdfff;
234
+ }
235
+ function isObject(value) {
236
+ return typeof value === 'object' && value !== null;
237
+ }
238
+ //# sourceMappingURL=text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"text.js","sourceRoot":"","sources":["../../../src/internal/editing/text.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ export interface ExactDecimal {
2
+ readonly coefficient: bigint;
3
+ readonly scale: number;
4
+ }
5
+ export type DecimalRounding = 'half-even' | 'half-up' | 'toward-zero';
6
+ export declare function parseDecimal(value: string): ExactDecimal | null;
7
+ export declare function decimalToString(value: ExactDecimal): string;
8
+ export declare function normalizeDecimal(value: ExactDecimal): ExactDecimal;
9
+ export declare function alignDecimals(left: ExactDecimal, right: ExactDecimal): readonly [bigint, bigint, number];
10
+ export declare function compareDecimal(left: ExactDecimal, right: ExactDecimal): -1 | 0 | 1;
11
+ export declare function addDecimal(left: ExactDecimal, right: ExactDecimal): ExactDecimal;
12
+ export declare function subtractDecimal(left: ExactDecimal, right: ExactDecimal): ExactDecimal;
13
+ export declare function negateDecimal(value: ExactDecimal): ExactDecimal;
14
+ export declare function multiplyDecimal(left: ExactDecimal, right: ExactDecimal): ExactDecimal;
15
+ export declare function multiplyDecimalByInteger(value: ExactDecimal, factor: bigint): ExactDecimal;
16
+ export declare function decimalQuotient(numerator: ExactDecimal, denominator: ExactDecimal): readonly [bigint, bigint];
17
+ export declare function divideDecimal(numerator: ExactDecimal, denominator: ExactDecimal, scale: number, rounding: DecimalRounding): ExactDecimal | null;
18
+ export declare function greatestCommonDivisor(left: bigint, right: bigint): bigint;
19
+ export declare function reduceFraction(numerator: bigint, denominator: bigint): readonly [bigint, bigint];
20
+ export declare function floorFraction(numerator: bigint, denominator: bigint): bigint;
21
+ export declare function pow10(exponent: number): bigint;
22
+ //# sourceMappingURL=decimal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"decimal.d.ts","sourceRoot":"","sources":["../../../src/internal/kernel/decimal.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,eAAe,GAAG,WAAW,GAAG,SAAS,GAAG,aAAa,CAAC;AAItE,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,GAAG,IAAI,CAc/D;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAQ3D;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,YAAY,GAAG,YAAY,CAQlE;AAED,wBAAgB,aAAa,CAC3B,IAAI,EAAE,YAAY,EAClB,KAAK,EAAE,YAAY,GAClB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAOnC;AAED,wBAAgB,cAAc,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAGlF;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,GAAG,YAAY,CAGhF;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,GAAG,YAAY,CAGrF;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,YAAY,GAAG,YAAY,CAE/D;AAED,wBAAgB,eAAe,CAAC,IAAI,EAAE,YAAY,EAAE,KAAK,EAAE,YAAY,GAAG,YAAY,CAKrF;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,YAAY,CAE1F;AAED,wBAAgB,eAAe,CAC7B,SAAS,EAAE,YAAY,EACvB,WAAW,EAAE,YAAY,GACxB,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAO3B;AAED,wBAAgB,aAAa,CAC3B,SAAS,EAAE,YAAY,EACvB,WAAW,EAAE,YAAY,EACzB,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,eAAe,GACxB,YAAY,GAAG,IAAI,CAyBrB;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAKzE;AAED,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAMhG;AAED,wBAAgB,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CAI5E;AAED,wBAAgB,KAAK,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAK9C"}