@sectile/core 0.2.0 → 0.3.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 (377) hide show
  1. package/dist/accordion.d.ts +44 -0
  2. package/dist/accordion.d.ts.map +1 -0
  3. package/dist/accordion.js +87 -0
  4. package/dist/accordion.js.map +1 -0
  5. package/dist/alert-dialog.d.ts +19 -0
  6. package/dist/alert-dialog.d.ts.map +1 -0
  7. package/dist/alert-dialog.js +10 -0
  8. package/dist/alert-dialog.js.map +1 -0
  9. package/dist/calendar.d.ts +3 -0
  10. package/dist/calendar.d.ts.map +1 -0
  11. package/dist/calendar.js +3 -0
  12. package/dist/calendar.js.map +1 -0
  13. package/dist/carousel.d.ts +41 -0
  14. package/dist/carousel.d.ts.map +1 -0
  15. package/dist/carousel.js +55 -0
  16. package/dist/carousel.js.map +1 -0
  17. package/dist/cascade-select.d.ts +48 -0
  18. package/dist/cascade-select.d.ts.map +1 -0
  19. package/dist/cascade-select.js +148 -0
  20. package/dist/cascade-select.js.map +1 -0
  21. package/dist/checkbox-group.d.ts +13 -0
  22. package/dist/checkbox-group.d.ts.map +1 -0
  23. package/dist/checkbox-group.js +16 -0
  24. package/dist/checkbox-group.js.map +1 -0
  25. package/dist/checkbox.d.ts +3 -0
  26. package/dist/checkbox.d.ts.map +1 -0
  27. package/dist/checkbox.js +3 -0
  28. package/dist/checkbox.js.map +1 -0
  29. package/dist/collection-window.d.ts +51 -0
  30. package/dist/collection-window.d.ts.map +1 -0
  31. package/dist/collection-window.js +111 -0
  32. package/dist/collection-window.js.map +1 -0
  33. package/dist/color-picker.d.ts +101 -0
  34. package/dist/color-picker.d.ts.map +1 -0
  35. package/dist/color-picker.js +503 -0
  36. package/dist/color-picker.js.map +1 -0
  37. package/dist/combobox.d.ts +17 -0
  38. package/dist/combobox.d.ts.map +1 -0
  39. package/dist/combobox.js +46 -0
  40. package/dist/combobox.js.map +1 -0
  41. package/dist/date-field.d.ts +62 -0
  42. package/dist/date-field.d.ts.map +1 -0
  43. package/dist/date-field.js +245 -0
  44. package/dist/date-field.js.map +1 -0
  45. package/dist/date-picker.d.ts +76 -0
  46. package/dist/date-picker.d.ts.map +1 -0
  47. package/dist/date-picker.js +261 -0
  48. package/dist/date-picker.js.map +1 -0
  49. package/dist/date-range-field.d.ts +47 -0
  50. package/dist/date-range-field.d.ts.map +1 -0
  51. package/dist/date-range-field.js +66 -0
  52. package/dist/date-range-field.js.map +1 -0
  53. package/dist/date-range-picker.d.ts +29 -0
  54. package/dist/date-range-picker.d.ts.map +1 -0
  55. package/dist/date-range-picker.js +89 -0
  56. package/dist/date-range-picker.js.map +1 -0
  57. package/dist/date-time-field.d.ts +57 -0
  58. package/dist/date-time-field.d.ts.map +1 -0
  59. package/dist/date-time-field.js +267 -0
  60. package/dist/date-time-field.js.map +1 -0
  61. package/dist/date-time-picker.d.ts +71 -0
  62. package/dist/date-time-picker.d.ts.map +1 -0
  63. package/dist/date-time-picker.js +156 -0
  64. package/dist/date-time-picker.js.map +1 -0
  65. package/dist/date-time-range-picker.d.ts +87 -0
  66. package/dist/date-time-range-picker.d.ts.map +1 -0
  67. package/dist/date-time-range-picker.js +252 -0
  68. package/dist/date-time-range-picker.js.map +1 -0
  69. package/dist/dialog.d.ts +17 -0
  70. package/dist/dialog.d.ts.map +1 -0
  71. package/dist/dialog.js +6 -0
  72. package/dist/dialog.js.map +1 -0
  73. package/dist/disclosure.d.ts +3 -0
  74. package/dist/disclosure.d.ts.map +1 -0
  75. package/dist/disclosure.js +3 -0
  76. package/dist/disclosure.js.map +1 -0
  77. package/dist/drawer.d.ts +24 -0
  78. package/dist/drawer.d.ts.map +1 -0
  79. package/dist/drawer.js +36 -0
  80. package/dist/drawer.js.map +1 -0
  81. package/dist/editable.d.ts +29 -0
  82. package/dist/editable.d.ts.map +1 -0
  83. package/dist/editable.js +34 -0
  84. package/dist/editable.js.map +1 -0
  85. package/dist/feed.d.ts +49 -0
  86. package/dist/feed.d.ts.map +1 -0
  87. package/dist/feed.js +124 -0
  88. package/dist/feed.js.map +1 -0
  89. package/dist/form.d.ts +135 -0
  90. package/dist/form.d.ts.map +1 -0
  91. package/dist/form.js +627 -0
  92. package/dist/form.js.map +1 -0
  93. package/dist/index.d.ts +37 -0
  94. package/dist/index.d.ts.map +1 -0
  95. package/dist/index.js +2 -0
  96. package/dist/index.js.map +1 -0
  97. package/dist/interaction.d.ts +15 -0
  98. package/dist/interaction.d.ts.map +1 -0
  99. package/dist/interaction.js +42 -0
  100. package/dist/interaction.js.map +1 -0
  101. package/dist/internal/composites/calendar.d.ts +36 -0
  102. package/dist/internal/composites/calendar.d.ts.map +1 -0
  103. package/dist/internal/composites/calendar.js +143 -0
  104. package/dist/internal/composites/calendar.js.map +1 -0
  105. package/dist/internal/composites/combobox.d.ts +42 -0
  106. package/dist/internal/composites/combobox.d.ts.map +1 -0
  107. package/dist/internal/composites/combobox.js +188 -0
  108. package/dist/internal/composites/combobox.js.map +1 -0
  109. package/dist/internal/composites/grid-control.d.ts +37 -0
  110. package/dist/internal/composites/grid-control.d.ts.map +1 -0
  111. package/dist/internal/composites/grid-control.js +90 -0
  112. package/dist/internal/composites/grid-control.js.map +1 -0
  113. package/dist/internal/composites/linear-action.d.ts +36 -0
  114. package/dist/internal/composites/linear-action.d.ts.map +1 -0
  115. package/dist/internal/composites/linear-action.js +96 -0
  116. package/dist/internal/composites/linear-action.js.map +1 -0
  117. package/dist/internal/composites/linear-choice.d.ts +41 -0
  118. package/dist/internal/composites/linear-choice.d.ts.map +1 -0
  119. package/dist/internal/composites/linear-choice.js +139 -0
  120. package/dist/internal/composites/linear-choice.js.map +1 -0
  121. package/dist/internal/composites/listbox.d.ts +52 -0
  122. package/dist/internal/composites/listbox.d.ts.map +1 -0
  123. package/dist/internal/composites/listbox.js +251 -0
  124. package/dist/internal/composites/listbox.js.map +1 -0
  125. package/dist/internal/composites/menu.d.ts +29 -0
  126. package/dist/internal/composites/menu.d.ts.map +1 -0
  127. package/dist/internal/composites/menu.js +76 -0
  128. package/dist/internal/composites/menu.js.map +1 -0
  129. package/dist/internal/composites/popup.d.ts +21 -0
  130. package/dist/internal/composites/popup.d.ts.map +1 -0
  131. package/dist/internal/composites/popup.js +10 -0
  132. package/dist/internal/composites/popup.js.map +1 -0
  133. package/dist/internal/composites/slider.d.ts +21 -0
  134. package/dist/internal/composites/slider.d.ts.map +1 -0
  135. package/dist/internal/composites/slider.js +73 -0
  136. package/dist/internal/composites/slider.js.map +1 -0
  137. package/dist/internal/composites/tree-grid.d.ts +67 -0
  138. package/dist/internal/composites/tree-grid.d.ts.map +1 -0
  139. package/dist/internal/composites/tree-grid.js +281 -0
  140. package/dist/internal/composites/tree-grid.js.map +1 -0
  141. package/dist/internal/composites/tree-view.d.ts +42 -0
  142. package/dist/internal/composites/tree-view.d.ts.map +1 -0
  143. package/dist/internal/composites/tree-view.js +196 -0
  144. package/dist/internal/composites/tree-view.js.map +1 -0
  145. package/dist/internal/editing/text.d.ts +66 -0
  146. package/dist/internal/editing/text.d.ts.map +1 -0
  147. package/dist/internal/editing/text.js +248 -0
  148. package/dist/internal/editing/text.js.map +1 -0
  149. package/dist/internal/kernel/decimal.d.ts +22 -0
  150. package/dist/internal/kernel/decimal.d.ts.map +1 -0
  151. package/dist/internal/kernel/decimal.js +137 -0
  152. package/dist/internal/kernel/decimal.js.map +1 -0
  153. package/dist/internal/kernel/foundation.d.ts +12 -0
  154. package/dist/internal/kernel/foundation.d.ts.map +1 -0
  155. package/dist/internal/kernel/foundation.js +132 -0
  156. package/dist/internal/kernel/foundation.js.map +1 -0
  157. package/dist/internal/kernel/indexed-sequence.d.ts +26 -0
  158. package/dist/internal/kernel/indexed-sequence.d.ts.map +1 -0
  159. package/dist/internal/kernel/indexed-sequence.js +117 -0
  160. package/dist/internal/kernel/indexed-sequence.js.map +1 -0
  161. package/dist/internal/kernel/machine.d.ts +8 -0
  162. package/dist/internal/kernel/machine.d.ts.map +1 -0
  163. package/dist/internal/kernel/machine.js +6 -0
  164. package/dist/internal/kernel/machine.js.map +1 -0
  165. package/dist/internal/runtime/revision.d.ts +23 -0
  166. package/dist/internal/runtime/revision.d.ts.map +1 -0
  167. package/dist/internal/runtime/revision.js +76 -0
  168. package/dist/internal/runtime/revision.js.map +1 -0
  169. package/dist/internal/state/checked.d.ts +22 -0
  170. package/dist/internal/state/checked.d.ts.map +1 -0
  171. package/dist/internal/state/checked.js +33 -0
  172. package/dist/internal/state/checked.js.map +1 -0
  173. package/dist/internal/state/cursor.d.ts +13 -0
  174. package/dist/internal/state/cursor.d.ts.map +1 -0
  175. package/dist/internal/state/cursor.js +24 -0
  176. package/dist/internal/state/cursor.js.map +1 -0
  177. package/dist/internal/state/expansion.d.ts +8 -0
  178. package/dist/internal/state/expansion.d.ts.map +1 -0
  179. package/dist/internal/state/expansion.js +23 -0
  180. package/dist/internal/state/expansion.js.map +1 -0
  181. package/dist/internal/state/open-state.d.ts +17 -0
  182. package/dist/internal/state/open-state.d.ts.map +1 -0
  183. package/dist/internal/state/open-state.js +29 -0
  184. package/dist/internal/state/open-state.js.map +1 -0
  185. package/dist/internal/state/selection.d.ts +23 -0
  186. package/dist/internal/state/selection.d.ts.map +1 -0
  187. package/dist/internal/state/selection.js +110 -0
  188. package/dist/internal/state/selection.js.map +1 -0
  189. package/dist/layer-stack.d.ts +47 -0
  190. package/dist/layer-stack.d.ts.map +1 -0
  191. package/dist/layer-stack.js +115 -0
  192. package/dist/layer-stack.js.map +1 -0
  193. package/dist/listbox.d.ts +3 -0
  194. package/dist/listbox.d.ts.map +1 -0
  195. package/dist/listbox.js +3 -0
  196. package/dist/listbox.js.map +1 -0
  197. package/dist/menu-button.d.ts +5 -0
  198. package/dist/menu-button.d.ts.map +1 -0
  199. package/dist/menu-button.js +5 -0
  200. package/dist/menu-button.js.map +1 -0
  201. package/dist/menu.d.ts +10 -0
  202. package/dist/menu.d.ts.map +1 -0
  203. package/dist/menu.js +9 -0
  204. package/dist/menu.js.map +1 -0
  205. package/dist/menubar.d.ts +5 -0
  206. package/dist/menubar.d.ts.map +1 -0
  207. package/dist/menubar.js +5 -0
  208. package/dist/menubar.js.map +1 -0
  209. package/dist/month-picker.d.ts +5 -0
  210. package/dist/month-picker.d.ts.map +1 -0
  211. package/dist/month-picker.js +4 -0
  212. package/dist/month-picker.js.map +1 -0
  213. package/dist/month-range-picker.d.ts +6 -0
  214. package/dist/month-range-picker.d.ts.map +1 -0
  215. package/dist/month-range-picker.js +5 -0
  216. package/dist/month-range-picker.js.map +1 -0
  217. package/dist/multi-thumb-slider.d.ts +36 -0
  218. package/dist/multi-thumb-slider.d.ts.map +1 -0
  219. package/dist/multi-thumb-slider.js +72 -0
  220. package/dist/multi-thumb-slider.js.map +1 -0
  221. package/dist/navigation-menu.d.ts +6 -0
  222. package/dist/navigation-menu.d.ts.map +1 -0
  223. package/dist/navigation-menu.js +5 -0
  224. package/dist/navigation-menu.js.map +1 -0
  225. package/dist/number-field.d.ts +51 -0
  226. package/dist/number-field.d.ts.map +1 -0
  227. package/dist/number-field.js +461 -0
  228. package/dist/number-field.js.map +1 -0
  229. package/dist/pagination.d.ts +65 -0
  230. package/dist/pagination.d.ts.map +1 -0
  231. package/dist/pagination.js +197 -0
  232. package/dist/pagination.js.map +1 -0
  233. package/dist/pin-input.d.ts +31 -0
  234. package/dist/pin-input.d.ts.map +1 -0
  235. package/dist/pin-input.js +53 -0
  236. package/dist/pin-input.js.map +1 -0
  237. package/dist/popover.d.ts +17 -0
  238. package/dist/popover.d.ts.map +1 -0
  239. package/dist/popover.js +6 -0
  240. package/dist/popover.js.map +1 -0
  241. package/dist/quantity-field.d.ts +59 -0
  242. package/dist/quantity-field.d.ts.map +1 -0
  243. package/dist/quantity-field.js +254 -0
  244. package/dist/quantity-field.js.map +1 -0
  245. package/dist/radio-group.d.ts +23 -0
  246. package/dist/radio-group.d.ts.map +1 -0
  247. package/dist/radio-group.js +20 -0
  248. package/dist/radio-group.js.map +1 -0
  249. package/dist/range-calendar.d.ts +6 -0
  250. package/dist/range-calendar.d.ts.map +1 -0
  251. package/dist/range-calendar.js +5 -0
  252. package/dist/range-calendar.js.map +1 -0
  253. package/dist/rating.d.ts +18 -0
  254. package/dist/rating.d.ts.map +1 -0
  255. package/dist/rating.js +19 -0
  256. package/dist/rating.js.map +1 -0
  257. package/dist/reorder.d.ts +47 -0
  258. package/dist/reorder.d.ts.map +1 -0
  259. package/dist/reorder.js +110 -0
  260. package/dist/reorder.js.map +1 -0
  261. package/dist/result.d.ts +10 -0
  262. package/dist/result.d.ts.map +1 -0
  263. package/dist/result.js +19 -0
  264. package/dist/result.js.map +1 -0
  265. package/dist/revision.d.ts +3 -0
  266. package/dist/revision.d.ts.map +1 -0
  267. package/dist/revision.js +3 -0
  268. package/dist/revision.js.map +1 -0
  269. package/dist/select.d.ts +31 -0
  270. package/dist/select.d.ts.map +1 -0
  271. package/dist/select.js +32 -0
  272. package/dist/select.js.map +1 -0
  273. package/dist/shared.d.ts +43 -0
  274. package/dist/shared.d.ts.map +1 -0
  275. package/dist/shared.js +3 -0
  276. package/dist/shared.js.map +1 -0
  277. package/dist/slider.d.ts +3 -0
  278. package/dist/slider.d.ts.map +1 -0
  279. package/dist/slider.js +3 -0
  280. package/dist/slider.js.map +1 -0
  281. package/dist/spin-button.d.ts +31 -0
  282. package/dist/spin-button.d.ts.map +1 -0
  283. package/dist/spin-button.js +65 -0
  284. package/dist/spin-button.js.map +1 -0
  285. package/dist/stepper.d.ts +18 -0
  286. package/dist/stepper.d.ts.map +1 -0
  287. package/dist/stepper.js +16 -0
  288. package/dist/stepper.js.map +1 -0
  289. package/dist/structures/grid.d.ts +29 -0
  290. package/dist/structures/grid.d.ts.map +1 -0
  291. package/dist/structures/grid.js +202 -0
  292. package/dist/structures/grid.js.map +1 -0
  293. package/dist/structures/range.d.ts +41 -0
  294. package/dist/structures/range.d.ts.map +1 -0
  295. package/dist/structures/range.js +249 -0
  296. package/dist/structures/range.js.map +1 -0
  297. package/dist/structures/sequence.d.ts +19 -0
  298. package/dist/structures/sequence.d.ts.map +1 -0
  299. package/dist/structures/sequence.js +28 -0
  300. package/dist/structures/sequence.js.map +1 -0
  301. package/dist/structures/tree.d.ts +33 -0
  302. package/dist/structures/tree.d.ts.map +1 -0
  303. package/dist/structures/tree.js +238 -0
  304. package/dist/structures/tree.js.map +1 -0
  305. package/dist/switch.d.ts +21 -0
  306. package/dist/switch.d.ts.map +1 -0
  307. package/dist/switch.js +8 -0
  308. package/dist/switch.js.map +1 -0
  309. package/dist/tabs.d.ts +16 -0
  310. package/dist/tabs.d.ts.map +1 -0
  311. package/dist/tabs.js +27 -0
  312. package/dist/tabs.js.map +1 -0
  313. package/dist/tags-input.d.ts +43 -0
  314. package/dist/tags-input.d.ts.map +1 -0
  315. package/dist/tags-input.js +48 -0
  316. package/dist/tags-input.js.map +1 -0
  317. package/dist/text.d.ts +4 -0
  318. package/dist/text.d.ts.map +1 -0
  319. package/dist/text.js +4 -0
  320. package/dist/text.js.map +1 -0
  321. package/dist/time-field.d.ts +48 -0
  322. package/dist/time-field.d.ts.map +1 -0
  323. package/dist/time-field.js +157 -0
  324. package/dist/time-field.js.map +1 -0
  325. package/dist/time-range-field.d.ts +53 -0
  326. package/dist/time-range-field.d.ts.map +1 -0
  327. package/dist/time-range-field.js +75 -0
  328. package/dist/time-range-field.js.map +1 -0
  329. package/dist/timer.d.ts +37 -0
  330. package/dist/timer.d.ts.map +1 -0
  331. package/dist/timer.js +84 -0
  332. package/dist/timer.js.map +1 -0
  333. package/dist/toast.d.ts +56 -0
  334. package/dist/toast.d.ts.map +1 -0
  335. package/dist/toast.js +87 -0
  336. package/dist/toast.js.map +1 -0
  337. package/dist/toggle-button.d.ts +20 -0
  338. package/dist/toggle-button.d.ts.map +1 -0
  339. package/dist/toggle-button.js +20 -0
  340. package/dist/toggle-button.js.map +1 -0
  341. package/dist/toggle-group.d.ts +25 -0
  342. package/dist/toggle-group.d.ts.map +1 -0
  343. package/dist/toggle-group.js +30 -0
  344. package/dist/toggle-group.js.map +1 -0
  345. package/dist/toolbar.d.ts +3 -0
  346. package/dist/toolbar.d.ts.map +1 -0
  347. package/dist/toolbar.js +3 -0
  348. package/dist/toolbar.js.map +1 -0
  349. package/dist/tooltip.d.ts +3 -0
  350. package/dist/tooltip.d.ts.map +1 -0
  351. package/dist/tooltip.js +3 -0
  352. package/dist/tooltip.js.map +1 -0
  353. package/dist/tree-grid.d.ts +13 -0
  354. package/dist/tree-grid.d.ts.map +1 -0
  355. package/dist/tree-grid.js +20 -0
  356. package/dist/tree-grid.js.map +1 -0
  357. package/dist/tree-view.d.ts +3 -0
  358. package/dist/tree-view.d.ts.map +1 -0
  359. package/dist/tree-view.js +3 -0
  360. package/dist/tree-view.js.map +1 -0
  361. package/dist/units.d.ts +77 -0
  362. package/dist/units.d.ts.map +1 -0
  363. package/dist/units.js +512 -0
  364. package/dist/units.js.map +1 -0
  365. package/dist/window-splitter.d.ts +3 -0
  366. package/dist/window-splitter.d.ts.map +1 -0
  367. package/dist/window-splitter.js +3 -0
  368. package/dist/window-splitter.js.map +1 -0
  369. package/dist/year-picker.d.ts +10 -0
  370. package/dist/year-picker.d.ts.map +1 -0
  371. package/dist/year-picker.js +27 -0
  372. package/dist/year-picker.js.map +1 -0
  373. package/dist/year-range-picker.d.ts +6 -0
  374. package/dist/year-range-picker.d.ts.map +1 -0
  375. package/dist/year-range-picker.js +5 -0
  376. package/dist/year-range-picker.js.map +1 -0
  377. package/package.json +7 -2
package/dist/result.js ADDED
@@ -0,0 +1,19 @@
1
+ export class SectileResultError extends Error {
2
+ class;
3
+ code;
4
+ details;
5
+ constructor(error) {
6
+ super(error.message, { cause: error });
7
+ this.name = 'SectileResultError';
8
+ this.class = error.class;
9
+ this.code = error.code;
10
+ if (error.details !== undefined)
11
+ this.details = error.details;
12
+ }
13
+ }
14
+ export function unwrap(result) {
15
+ if (result.ok)
16
+ return result.value;
17
+ throw new SectileResultError(result.error);
18
+ }
19
+ //# sourceMappingURL=result.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"result.js","sourceRoot":"","sources":["../src/result.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAC3B,KAAK,CAAa;IAClB,IAAI,CAAS;IACb,OAAO,CAAqC;IAE5D,YAAmB,KAAmB;QACpC,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,CAAI,MAAiB;IACzC,IAAI,MAAM,CAAC,EAAE;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC;IACnC,MAAM,IAAI,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC7C,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { applyRevisionedEvent, createRevisionSnapshot, mapRevisionCommands, rejectRevisionInput, type EventReducer, type MachineUpdate, type RevisionSnapshot, type RevisionResult, } from './internal/runtime/revision.js';
2
+ export { tryCreateRevisionSnapshot } from './internal/runtime/revision.js';
3
+ //# sourceMappingURL=revision.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"revision.d.ts","sourceRoot":"","sources":["../src/revision.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,mBAAmB,EACnB,mBAAmB,EACnB,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,cAAc,GACpB,MAAM,gCAAgC,CAAC;AAExC,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { applyRevisionedEvent, createRevisionSnapshot, mapRevisionCommands, rejectRevisionInput, } from './internal/runtime/revision.js';
2
+ export { tryCreateRevisionSnapshot } from './internal/runtime/revision.js';
3
+ //# sourceMappingURL=revision.js.map
@@ -0,0 +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"}
@@ -0,0 +1,31 @@
1
+ import type { Result, StableID } from './shared.js';
2
+ import type { Sequence } from './structures/sequence.js';
3
+ import { type LinearChoiceCommand, type LinearChoicePolicies, type LinearChoiceState } from './internal/composites/linear-choice.js';
4
+ export type SelectEvent<ID extends StableID = StableID> = 'open' | 'close' | 'toggle' | 'next' | 'previous' | 'first' | 'last' | 'select' | {
5
+ readonly type: 'focus';
6
+ readonly id: ID;
7
+ } | {
8
+ readonly type: 'select';
9
+ readonly id: ID;
10
+ };
11
+ export type SelectCommand<ID extends StableID = StableID> = LinearChoiceCommand<ID> | {
12
+ readonly type: 'close-popup';
13
+ };
14
+ export interface SelectState<ID extends StableID = StableID> {
15
+ readonly open: boolean;
16
+ readonly choice: LinearChoiceState<ID>;
17
+ }
18
+ export interface SelectStateInput<ID extends StableID = StableID> {
19
+ readonly open?: boolean;
20
+ readonly value?: ID | null;
21
+ readonly current?: ID | null;
22
+ }
23
+ export type SelectPolicies<ID extends StableID = StableID> = Omit<LinearChoicePolicies<ID>, 'selectionFollowsFocus'>;
24
+ export interface SelectUpdate<ID extends StableID = StableID> {
25
+ readonly state: SelectState<ID>;
26
+ readonly commands: readonly SelectCommand<ID>[];
27
+ }
28
+ export declare function createSelectState<ID extends StableID>(domain: Sequence<ID>, input?: SelectStateInput<ID>): SelectState<ID>;
29
+ export declare function tryCreateSelectState<ID extends StableID>(domain: Sequence<ID>, input?: SelectStateInput<ID>): Result<SelectState<ID>>;
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 @@
1
+ {"version":3,"file":"select.d.ts","sourceRoot":"","sources":["../src/select.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AAGzD,OAAO,EAGL,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,iBAAiB,EACvB,MAAM,wCAAwC,CAAC;AAEhD,MAAM,MAAM,WAAW,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ,IAClD,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,GAC/E;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAA;CAAE,GAC3C;IAAE,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAA;CAAE,CAAC;AACjD,MAAM,MAAM,aAAa,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ,IAAI,mBAAmB,CAAC,EAAE,CAAC,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAA;CAAE,CAAC;AACvH,MAAM,WAAW,WAAW,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ;IAAI,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,iBAAiB,CAAC,EAAE,CAAC,CAAA;CAAE;AAC/H,MAAM,WAAW,gBAAgB,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ;IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC;IAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,GAAG,IAAI,CAAA;CAAE;AACvJ,MAAM,MAAM,cAAc,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ,IAAI,IAAI,CAAC,oBAAoB,CAAC,EAAE,CAAC,EAAE,uBAAuB,CAAC,CAAC;AACrH,MAAM,WAAW,YAAY,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ;IAAI,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC,EAAE,CAAC,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,SAAS,aAAa,CAAC,EAAE,CAAC,EAAE,CAAA;CAAE;AAElJ,wBAAgB,iBAAiB,CAAC,EAAE,SAAS,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,KAAK,GAAE,gBAAgB,CAAC,EAAE,CAAM,GAAG,WAAW,CAAC,EAAE,CAAC,CAE9H;AAED,wBAAgB,oBAAoB,CAAC,EAAE,SAAS,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,KAAK,GAAE,gBAAgB,CAAC,EAAE,CAAM,GAAG,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAIzI;AAED,wBAAgB,gBAAgB,CAAC,EAAE,SAAS,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,EAAE,CAAC,EAAE,QAAQ,GAAE,cAAc,CAAC,EAAE,CAAM,GAAG,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAcvL"}
package/dist/select.js ADDED
@@ -0,0 +1,32 @@
1
+ import { unwrap } from './result.js';
2
+ import { fail, ok } from './internal/kernel/foundation.js';
3
+ import { createMachineUpdate } from './internal/kernel/machine.js';
4
+ import { applyLinearChoiceEvent, createLinearChoiceState, } from './internal/composites/linear-choice.js';
5
+ export function createSelectState(domain, input = {}) {
6
+ return unwrap(tryCreateSelectState(domain, input));
7
+ }
8
+ export function tryCreateSelectState(domain, input = {}) {
9
+ if (input.open !== undefined && typeof input.open !== 'boolean')
10
+ return fail('construction', 'invalid-select-open', 'Select open state must be boolean.');
11
+ const choice = createLinearChoiceState(domain, { selected: input.value === undefined || input.value === null ? [] : [input.value], current: input.current ?? input.value ?? null });
12
+ return choice.ok ? ok(Object.freeze({ open: input.open ?? false, choice: choice.value })) : choice;
13
+ }
14
+ export function applySelectEvent(domain, state, event, policies = {}) {
15
+ const valid = tryCreateSelectState(domain, { open: state.open, value: state.choice.selection.selected[0] ?? null, current: state.choice.cursor.current });
16
+ if (!valid.ok)
17
+ return { ok: false, error: { ...valid.error, class: 'transition-rejection' } };
18
+ if (event === 'open' || event === 'close' || event === 'toggle') {
19
+ const open = event === 'toggle' ? !state.open : event === 'open';
20
+ return createMachineUpdate(open === state.open ? state : Object.freeze({ open, choice: state.choice }));
21
+ }
22
+ const mapped = event === 'select' ? 'select' : event;
23
+ const result = applyLinearChoiceEvent(domain, state.choice, mapped, { ...policies, selectionFollowsFocus: false });
24
+ if (!result.ok)
25
+ return result;
26
+ const selecting = event === 'select' || (typeof event === 'object' && event.type === 'select');
27
+ const commands = [...result.value.commands];
28
+ if (selecting)
29
+ commands.push({ type: 'close-popup' });
30
+ return createMachineUpdate(Object.freeze({ open: selecting ? false : true, choice: result.value.state }), commands);
31
+ }
32
+ //# sourceMappingURL=select.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"select.js","sourceRoot":"","sources":["../src/select.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ /** Shared public contracts for the canonical Sectile structures. */
2
+ export type StableID = string;
3
+ export type ErrorClass = 'construction' | 'transition-rejection' | 'resource-rejection' | 'internal-invariant';
4
+ export interface SectileError {
5
+ readonly class: ErrorClass;
6
+ readonly code: string;
7
+ readonly message: string;
8
+ readonly details?: Readonly<Record<string, unknown>>;
9
+ }
10
+ export type Result<T> = {
11
+ readonly ok: true;
12
+ readonly value: T;
13
+ } | {
14
+ readonly ok: false;
15
+ readonly error: SectileError;
16
+ };
17
+ export type BoundaryPolicy = 'stop' | 'wrap';
18
+ export type AxisBoundaryPolicy = 'stop' | 'wrap-axis';
19
+ export type Direction = -1 | 1;
20
+ export type GridDirection = 'left' | 'right' | 'up' | 'down';
21
+ export type TiePolicy = 'lower' | 'upper' | 'even-tick';
22
+ export interface ScanOptions<ID extends StableID> {
23
+ readonly eligible?: (id: ID) => boolean;
24
+ readonly maxScan?: number;
25
+ }
26
+ export type ScanEligiblePredicate<ID extends StableID> = NonNullable<ScanOptions<ID>['eligible']>;
27
+ export type MoveResult<ID extends StableID> = {
28
+ readonly kind: 'found';
29
+ readonly id: ID;
30
+ readonly scanned: number;
31
+ } | {
32
+ readonly kind: 'none';
33
+ readonly scanned: number;
34
+ } | {
35
+ readonly kind: 'resource-rejected';
36
+ readonly scanned: number;
37
+ readonly error: SectileError;
38
+ };
39
+ export interface ResourceCeilings {
40
+ readonly maxIDCodeUnits?: number;
41
+ }
42
+ export declare const DEFAULT_MAX_ID_CODE_UNITS = 1024;
43
+ //# sourceMappingURL=shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../src/shared.ts"],"names":[],"mappings":"AAAA,oEAAoE;AAEpE,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAC;AAE9B,MAAM,MAAM,UAAU,GAClB,cAAc,GACd,sBAAsB,GACtB,oBAAoB,GACpB,oBAAoB,CAAC;AAEzB,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACtD;AAED,MAAM,MAAM,MAAM,CAAC,CAAC,IAChB;IAAE,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAA;CAAE,GACxC;IAAE,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAA;CAAE,CAAC;AAEzD,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,MAAM,CAAC;AAC7C,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,WAAW,CAAC;AACtD,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;AAC/B,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,MAAM,CAAC;AAC7D,MAAM,MAAM,SAAS,GAAG,OAAO,GAAG,OAAO,GAAG,WAAW,CAAC;AAExD,MAAM,WAAW,WAAW,CAAC,EAAE,SAAS,QAAQ;IAC9C,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,OAAO,CAAC;IACxC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,MAAM,qBAAqB,CAAC,EAAE,SAAS,QAAQ,IAAI,WAAW,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC;AAElG,MAAM,MAAM,UAAU,CAAC,EAAE,SAAS,QAAQ,IACtC;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACrE;IAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACnD;IACE,QAAQ,CAAC,IAAI,EAAE,mBAAmB,CAAC;IACnC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC;CAC9B,CAAC;AAEN,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CAClC;AAED,eAAO,MAAM,yBAAyB,OAAQ,CAAC"}
package/dist/shared.js ADDED
@@ -0,0 +1,3 @@
1
+ /** Shared public contracts for the canonical Sectile structures. */
2
+ export const DEFAULT_MAX_ID_CODE_UNITS = 1_024;
3
+ //# sourceMappingURL=shared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../src/shared.ts"],"names":[],"mappings":"AAAA,oEAAoE;AA+CpE,MAAM,CAAC,MAAM,yBAAyB,GAAG,KAAK,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { applySliderEvent, createSliderState, type SliderCommand, type SliderEvent, type SliderState, type SliderUpdate, } from './internal/composites/slider.js';
2
+ export { tryCreateSliderState } from './internal/composites/slider.js';
3
+ //# sourceMappingURL=slider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slider.d.ts","sourceRoot":"","sources":["../src/slider.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,YAAY,GAClB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC"}
package/dist/slider.js ADDED
@@ -0,0 +1,3 @@
1
+ export { applySliderEvent, createSliderState, } from './internal/composites/slider.js';
2
+ export { tryCreateSliderState } from './internal/composites/slider.js';
3
+ //# sourceMappingURL=slider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"slider.js","sourceRoot":"","sources":["../src/slider.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,iBAAiB,GAKlB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC"}
@@ -0,0 +1,31 @@
1
+ import type { Result } from './shared.js';
2
+ import type { QuantizedRange } from './structures/range.js';
3
+ import { type SliderEvent } from './internal/composites/slider.js';
4
+ export interface SpinButtonState {
5
+ readonly value: string;
6
+ readonly draft: string | null;
7
+ }
8
+ export type SpinButtonEvent = SliderEvent | {
9
+ readonly type: 'input';
10
+ readonly text: string;
11
+ } | 'commit' | 'cancel';
12
+ export type SpinButtonCommand = {
13
+ readonly type: 'draft-changed';
14
+ readonly text: string | null;
15
+ } | {
16
+ readonly type: 'announce-value';
17
+ readonly value: string;
18
+ };
19
+ export interface SpinButtonPolicies {
20
+ readonly page?: number;
21
+ readonly parse?: (text: string) => string | null;
22
+ }
23
+ export type SpinButtonParser = NonNullable<SpinButtonPolicies['parse']>;
24
+ export interface SpinButtonUpdate {
25
+ readonly state: SpinButtonState;
26
+ readonly commands: readonly SpinButtonCommand[];
27
+ }
28
+ export declare function createSpinButtonState(range: QuantizedRange, value?: string, draft?: string | null): SpinButtonState;
29
+ export declare function tryCreateSpinButtonState(range: QuantizedRange, value?: string, draft?: string | null): Result<SpinButtonState>;
30
+ export declare function applySpinButtonEvent(range: QuantizedRange, state: SpinButtonState, event: SpinButtonEvent, policies?: SpinButtonPolicies): Result<SpinButtonUpdate>;
31
+ //# sourceMappingURL=spin-button.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spin-button.d.ts","sourceRoot":"","sources":["../src/spin-button.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAG5D,OAAO,EAGL,KAAK,WAAW,EAEjB,MAAM,iCAAiC,CAAC;AAEzC,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,MAAM,MAAM,eAAe,GACvB,WAAW,GACX;IAAE,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GACjD,QAAQ,GACR,QAAQ,CAAC;AAEb,MAAM,MAAM,iBAAiB,GACzB;IAAE,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,GAChE;IAAE,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEhE,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;CAClD;AAED,MAAM,MAAM,gBAAgB,GAAG,WAAW,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC;AAExE,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,SAAS,iBAAiB,EAAE,CAAC;CACjD;AAED,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,cAAc,EACrB,KAAK,GAAE,MAAoB,EAC3B,KAAK,GAAE,MAAM,GAAG,IAAW,GAC1B,eAAe,CAEjB;AAED,wBAAgB,wBAAwB,CACtC,KAAK,EAAE,cAAc,EACrB,KAAK,GAAE,MAAoB,EAC3B,KAAK,GAAE,MAAM,GAAG,IAAW,GAC1B,MAAM,CAAC,eAAe,CAAC,CAYzB;AAED,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,cAAc,EACrB,KAAK,EAAE,eAAe,EACtB,KAAK,EAAE,eAAe,EACtB,QAAQ,GAAE,kBAAuB,GAChC,MAAM,CAAC,gBAAgB,CAAC,CAiD1B"}
@@ -0,0 +1,65 @@
1
+ import { unwrap } from './result.js';
2
+ import { fail, ok } from './internal/kernel/foundation.js';
3
+ import { createMachineUpdate } from './internal/kernel/machine.js';
4
+ import { applySliderEvent, createSliderState, tryCreateSliderState, } from './internal/composites/slider.js';
5
+ export function createSpinButtonState(range, value = range.lower, draft = null) {
6
+ return unwrap(tryCreateSpinButtonState(range, value, draft));
7
+ }
8
+ export function tryCreateSpinButtonState(range, value = range.lower, draft = null) {
9
+ if (typeof value !== 'string') {
10
+ return fail('construction', 'invalid-spin-button-value', 'Spin button value must be decimal text.');
11
+ }
12
+ const tick = range.tickOf(value);
13
+ if (tick === null) {
14
+ return fail('construction', 'spin-button-value-outside-lattice', 'Spin button value must lie on the range lattice.', { value });
15
+ }
16
+ if (draft !== null && typeof draft !== 'string') {
17
+ return fail('construction', 'invalid-spin-button-draft', 'Spin button draft must be text or null.');
18
+ }
19
+ return ok(Object.freeze({ value: range.valueAt(tick), draft }));
20
+ }
21
+ export function applySpinButtonEvent(range, state, event, policies = {}) {
22
+ const valid = tryCreateSpinButtonState(range, state.value, state.draft);
23
+ if (!valid.ok)
24
+ return { ok: false, error: { ...valid.error, class: 'transition-rejection' } };
25
+ if (typeof event === 'object' && event.type === 'input') {
26
+ if (typeof event.text !== 'string') {
27
+ return fail('transition-rejection', 'invalid-spin-button-input', 'Spin button input must be text.');
28
+ }
29
+ if (event.text === state.draft)
30
+ return createMachineUpdate(state);
31
+ return createMachineUpdate(Object.freeze({ value: state.value, draft: event.text }), [{ type: 'draft-changed', text: event.text }]);
32
+ }
33
+ if (event === 'cancel') {
34
+ if (state.draft === null)
35
+ return createMachineUpdate(state);
36
+ return createMachineUpdate(Object.freeze({ value: state.value, draft: null }), [{ type: 'draft-changed', text: null }]);
37
+ }
38
+ if (event === 'commit') {
39
+ if (state.draft === null)
40
+ return createMachineUpdate(state);
41
+ const parsed = (policies.parse ?? ((text) => text))(state.draft);
42
+ const tick = parsed === null ? null : range.tickOf(parsed);
43
+ if (tick === null) {
44
+ return fail('transition-rejection', 'spin-button-draft-invalid', 'Spin button draft must parse to a value on the range lattice.', { draft: state.draft });
45
+ }
46
+ const value = range.valueAt(tick);
47
+ return createMachineUpdate(Object.freeze({ value, draft: null }), [
48
+ { type: 'draft-changed', text: null },
49
+ ...(value === state.value ? [] : [{ type: 'announce-value', value }]),
50
+ ]);
51
+ }
52
+ const currentTick = range.tickOf(state.value);
53
+ const sliderState = tryCreateSliderState(range, currentTick);
54
+ if (!sliderState.ok)
55
+ return sliderState;
56
+ const moved = applySliderEvent(range, sliderState.value, event, policies.page);
57
+ if (!moved.ok)
58
+ return moved;
59
+ const value = range.valueAt(moved.value.state.tick);
60
+ return createMachineUpdate(Object.freeze({ value, draft: null }), [
61
+ ...(state.draft === null ? [] : [{ type: 'draft-changed', text: null }]),
62
+ ...(value === state.value ? [] : [{ type: 'announce-value', value }]),
63
+ ]);
64
+ }
65
+ //# sourceMappingURL=spin-button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"spin-button.js","sourceRoot":"","sources":["../src/spin-button.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { Result, StableID } from './shared.js';
2
+ import type { Sequence } from './structures/sequence.js';
3
+ import { type LinearChoiceCommand, type LinearChoicePolicies, type LinearChoiceState, type LinearChoiceUpdate } from './internal/composites/linear-choice.js';
4
+ export type StepperEvent<ID extends StableID = StableID> = 'next-step' | 'previous-step' | 'first-step' | 'last-step' | 'activate-step' | {
5
+ readonly type: 'focus-step';
6
+ readonly id: ID;
7
+ } | {
8
+ readonly type: 'activate-step';
9
+ readonly id: ID;
10
+ };
11
+ export type StepperCommand<ID extends StableID = StableID> = LinearChoiceCommand<ID>;
12
+ export type StepperState<ID extends StableID = StableID> = LinearChoiceState<ID>;
13
+ export type StepperPolicies<ID extends StableID = StableID> = Omit<LinearChoicePolicies<ID>, 'selectionFollowsFocus'>;
14
+ export type StepperUpdate<ID extends StableID = StableID> = LinearChoiceUpdate<ID>;
15
+ export declare function createStepperState<ID extends StableID>(domain: Sequence<ID>, value?: ID | null, current?: ID | null): StepperState<ID>;
16
+ export declare function tryCreateStepperState<ID extends StableID>(domain: Sequence<ID>, value?: ID | null, current?: ID | null): Result<StepperState<ID>>;
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 @@
1
+ {"version":3,"file":"stepper.d.ts","sourceRoot":"","sources":["../src/stepper.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAmD,KAAK,mBAAmB,EAAE,KAAK,oBAAoB,EAAE,KAAK,iBAAiB,EAAE,KAAK,kBAAkB,EAAE,MAAM,wCAAwC,CAAC;AAE/M,MAAM,MAAM,YAAY,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ,IAAI,WAAW,GAAG,eAAe,GAAG,YAAY,GAAG,WAAW,GAAG,eAAe,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAA;CAAE,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAA;CAAE,CAAC;AACjP,MAAM,MAAM,cAAc,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ,IAAI,mBAAmB,CAAC,EAAE,CAAC,CAAC;AACrF,MAAM,MAAM,YAAY,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ,IAAI,iBAAiB,CAAC,EAAE,CAAC,CAAC;AACjF,MAAM,MAAM,eAAe,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ,IAAI,IAAI,CAAC,oBAAoB,CAAC,EAAE,CAAC,EAAE,uBAAuB,CAAC,CAAC;AACtH,MAAM,MAAM,aAAa,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ,IAAI,kBAAkB,CAAC,EAAE,CAAC,CAAC;AAEnF,wBAAgB,kBAAkB,CAAC,EAAE,SAAS,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,KAAK,GAAE,EAAE,GAAG,IAAW,EAAE,OAAO,GAAE,EAAE,GAAG,IAAY,GAAG,YAAY,CAAC,EAAE,CAAC,CAEnJ;AAED,wBAAgB,qBAAqB,CAAC,EAAE,SAAS,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,KAAK,GAAE,EAAE,GAAG,IAAW,EAAE,OAAO,GAAE,EAAE,GAAG,IAAY,GAAG,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAE9J;AACD,wBAAgB,iBAAiB,CAAC,EAAE,SAAS,QAAQ,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,EAAE,CAAC,EAAE,KAAK,EAAE,YAAY,CAAC,EAAE,CAAC,EAAE,QAAQ,GAAE,eAAe,CAAC,EAAE,CAAM,GAAG,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAM5L"}
@@ -0,0 +1,16 @@
1
+ import { unwrap } from './result.js';
2
+ import { applyLinearChoiceEvent, createLinearChoiceState } from './internal/composites/linear-choice.js';
3
+ export function createStepperState(domain, value = null, current = value) {
4
+ return unwrap(tryCreateStepperState(domain, value, current));
5
+ }
6
+ export function tryCreateStepperState(domain, value = null, current = value) {
7
+ return createLinearChoiceState(domain, { current, selected: value === null ? [] : [value] });
8
+ }
9
+ export function applyStepperEvent(domain, state, event, policies = {}) {
10
+ const mapped = typeof event === 'object'
11
+ ? { type: event.type === 'focus-step' ? 'focus' : 'select', id: event.id }
12
+ : event === 'next-step' ? 'next' : event === 'previous-step' ? 'previous'
13
+ : event === 'first-step' ? 'first' : event === 'last-step' ? 'last' : 'select';
14
+ return applyLinearChoiceEvent(domain, state, mapped, { ...policies, selectionFollowsFocus: false });
15
+ }
16
+ //# sourceMappingURL=stepper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stepper.js","sourceRoot":"","sources":["../src/stepper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAGrC,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAwG,MAAM,wCAAwC,CAAC;AAQ/M,MAAM,UAAU,kBAAkB,CAAsB,MAAoB,EAAE,KAAK,GAAc,IAAI,EAAE,OAAO,GAAc,KAAK;IAC/H,OAAO,MAAM,CAAC,qBAAqB,CAAC,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAsB,MAAoB,EAAE,KAAK,GAAc,IAAI,EAAE,OAAO,GAAc,KAAK;IAClI,OAAO,uBAAuB,CAAC,MAAM,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AAC/F,CAAC;AACD,MAAM,UAAU,iBAAiB,CAAsB,MAAoB,EAAE,KAAuB,EAAE,KAAuB,EAAE,QAAQ,GAAwB,EAAE;IAC/J,MAAM,MAAM,GAAG,OAAO,KAAK,KAAK,QAAQ;QACtC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC,CAAC,CAAC,OAAgB,CAAC,CAAC,CAAC,QAAiB,EAAE,EAAE,EAAE,KAAK,CAAC,EAAE,EAAE;QAC5F,CAAC,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC,CAAC,MAAe,CAAC,CAAC,CAAC,KAAK,KAAK,eAAe,CAAC,CAAC,CAAC,UAAmB;YACzF,CAAC,CAAC,KAAK,KAAK,YAAY,CAAC,CAAC,CAAC,OAAgB,CAAC,CAAC,CAAC,KAAK,KAAK,WAAW,CAAC,CAAC,CAAC,MAAe,CAAC,CAAC,CAAC,QAAiB,CAAC;IAC9G,OAAO,sBAAsB,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,GAAG,QAAQ,EAAE,qBAAqB,EAAE,KAAK,EAAE,CAAC,CAAC;AACtG,CAAC"}
@@ -0,0 +1,29 @@
1
+ import { type AxisBoundaryPolicy, type GridDirection, type MoveResult, type ResourceCeilings, type Result, type ScanOptions, type StableID } from '../shared.js';
2
+ import type { Sequence } from './sequence.js';
3
+ export interface GridPosition {
4
+ readonly row: number;
5
+ readonly column: number;
6
+ }
7
+ export interface GridOptions extends ResourceCeilings {
8
+ readonly columnCount?: number;
9
+ readonly maxRows?: number;
10
+ readonly maxColumns?: number;
11
+ readonly maxItems?: number;
12
+ readonly maxCells?: number;
13
+ }
14
+ export interface Grid<ID extends StableID = StableID> {
15
+ readonly rowCount: number;
16
+ readonly columnCount: number;
17
+ readonly size: number;
18
+ cellAt(row: number, column: number): ID | null;
19
+ positionOf(id: ID): GridPosition | null;
20
+ row(row: number): Sequence<ID> | null;
21
+ column(column: number): Sequence<ID> | null;
22
+ move(current: ID, direction: GridDirection, boundary?: AxisBoundaryPolicy, options?: ScanOptions<ID>): MoveResult<ID>;
23
+ }
24
+ export declare function createGrid<ID extends StableID>(rows: readonly (readonly (ID | null)[])[], options?: GridOptions): Grid<ID>;
25
+ export declare function tryCreateGrid<ID extends StableID>(rows: readonly (readonly (ID | null)[])[], options?: GridOptions): Result<Grid<ID>>;
26
+ export type { AxisBoundaryPolicy, GridDirection, MoveResult, Result, ScanOptions, StableID, } from '../shared.js';
27
+ export { applyGridEvent, createGridState, type GridCommand, type GridEditMode, type GridEvent, type GridPolicies, type GridState, type GridStateInput, type GridUpdate, } from '../internal/composites/grid-control.js';
28
+ export { tryCreateGridState } from '../internal/composites/grid-control.js';
29
+ //# sourceMappingURL=grid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grid.d.ts","sourceRoot":"","sources":["../../src/structures/grid.ts"],"names":[],"mappings":"AACA,OAAO,EAEL,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,KAAK,UAAU,EACf,KAAK,gBAAgB,EACrB,KAAK,MAAM,EACX,KAAK,WAAW,EAChB,KAAK,QAAQ,EACd,MAAM,cAAc,CAAC;AAWtB,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,WAAY,SAAQ,gBAAgB;IACnD,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,IAAI,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ;IAClD,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,MAAM,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,EAAE,GAAG,IAAI,CAAC;IAC/C,UAAU,CAAC,EAAE,EAAE,EAAE,GAAG,YAAY,GAAG,IAAI,CAAC;IACxC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;IACtC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;IAC5C,IAAI,CACF,OAAO,EAAE,EAAE,EACX,SAAS,EAAE,aAAa,EACxB,QAAQ,CAAC,EAAE,kBAAkB,EAC7B,OAAO,CAAC,EAAE,WAAW,CAAC,EAAE,CAAC,GACxB,UAAU,CAAC,EAAE,CAAC,CAAC;CACnB;AAwHD,wBAAgB,UAAU,CAAC,EAAE,SAAS,QAAQ,EAC5C,IAAI,EAAE,SAAS,CAAC,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,EAAE,EACzC,OAAO,GAAE,WAAgB,GACxB,IAAI,CAAC,EAAE,CAAC,CAEV;AAED,wBAAgB,aAAa,CAAC,EAAE,SAAS,QAAQ,EAC/C,IAAI,EAAE,SAAS,CAAC,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,EAAE,EACzC,OAAO,GAAE,WAAgB,GACxB,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAgFlB;AAkBD,YAAY,EACV,kBAAkB,EAClB,aAAa,EACb,UAAU,EACV,MAAM,EACN,WAAW,EACX,QAAQ,GACT,MAAM,cAAc,CAAC;AAEtB,OAAO,EACL,cAAc,EACd,eAAe,EACf,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,SAAS,EACd,KAAK,cAAc,EACnB,KAAK,UAAU,GAChB,MAAM,wCAAwC,CAAC;AAEhD,OAAO,EAAE,kBAAkB,EAAE,MAAM,wCAAwC,CAAC"}
@@ -0,0 +1,202 @@
1
+ import { unwrap } from '../result.js';
2
+ import { DEFAULT_MAX_ID_CODE_UNITS, } from '../shared.js';
3
+ import { fail, freezeArray, normalizeMaxScan, ok, resourceError, validateSafeCeiling, validateStableID, } from '../internal/kernel/foundation.js';
4
+ import { IndexedSequence } from '../internal/kernel/indexed-sequence.js';
5
+ class IndexedGrid {
6
+ rowCount;
7
+ columnCount;
8
+ size;
9
+ #cells;
10
+ #positions;
11
+ constructor(rowCount, columnCount, cells, positions) {
12
+ this.rowCount = rowCount;
13
+ this.columnCount = columnCount;
14
+ this.#cells = freezeArray(cells);
15
+ this.#positions = positions;
16
+ this.size = positions.size;
17
+ Object.freeze(this);
18
+ }
19
+ cellAt(row, column) {
20
+ if (!Number.isSafeInteger(row) ||
21
+ !Number.isSafeInteger(column) ||
22
+ row < 0 ||
23
+ column < 0 ||
24
+ row >= this.rowCount ||
25
+ column >= this.columnCount) {
26
+ return null;
27
+ }
28
+ return this.#cells[row * this.columnCount + column] ?? null;
29
+ }
30
+ positionOf(id) {
31
+ return this.#positions.get(id) ?? null;
32
+ }
33
+ row(row) {
34
+ if (!Number.isSafeInteger(row) || row < 0 || row >= this.rowCount)
35
+ return null;
36
+ const ids = [];
37
+ for (let column = 0; column < this.columnCount; column += 1) {
38
+ const id = this.cellAt(row, column);
39
+ if (id !== null)
40
+ ids.push(id);
41
+ }
42
+ return new IndexedSequence(ids);
43
+ }
44
+ column(column) {
45
+ if (!Number.isSafeInteger(column) || column < 0 || column >= this.columnCount)
46
+ return null;
47
+ const ids = [];
48
+ for (let row = 0; row < this.rowCount; row += 1) {
49
+ const id = this.cellAt(row, column);
50
+ if (id !== null)
51
+ ids.push(id);
52
+ }
53
+ return new IndexedSequence(ids);
54
+ }
55
+ move(current, direction, boundary = 'stop', options = {}) {
56
+ const position = this.#positions.get(current);
57
+ if (position === undefined)
58
+ return { kind: 'none', scanned: 0 };
59
+ const maxScan = normalizeMaxScan(options.maxScan);
60
+ if (typeof maxScan !== 'number') {
61
+ return { kind: 'resource-rejected', scanned: 0, error: maxScan };
62
+ }
63
+ if (!isGridDirection(direction) || (boundary !== 'stop' && boundary !== 'wrap-axis')) {
64
+ return {
65
+ kind: 'resource-rejected',
66
+ scanned: 0,
67
+ error: {
68
+ class: 'internal-invariant',
69
+ code: 'invalid-grid-movement',
70
+ message: 'Grid movement received an impossible runtime value.',
71
+ },
72
+ };
73
+ }
74
+ const eligible = options.eligible ?? (() => true);
75
+ const horizontal = direction === 'left' || direction === 'right';
76
+ const positive = direction === 'right' || direction === 'down';
77
+ const currentAxis = horizontal ? position.column : position.row;
78
+ const axisLength = horizontal ? this.columnCount : this.rowCount;
79
+ const idAtAxis = (axis) => horizontal ? this.cellAt(position.row, axis) : this.cellAt(axis, position.column);
80
+ let scanned = 0;
81
+ let axis = currentAxis + (positive ? 1 : -1);
82
+ while (axis >= 0 && axis < axisLength) {
83
+ if (scanned === maxScan)
84
+ return gridScanRejected(scanned, maxScan);
85
+ const candidate = idAtAxis(axis);
86
+ scanned += 1;
87
+ if (candidate !== null && eligible(candidate)) {
88
+ return { kind: 'found', id: candidate, scanned };
89
+ }
90
+ axis += positive ? 1 : -1;
91
+ }
92
+ if (boundary === 'wrap-axis') {
93
+ axis = positive ? 0 : axisLength - 1;
94
+ while (axis !== currentAxis) {
95
+ if (scanned === maxScan)
96
+ return gridScanRejected(scanned, maxScan);
97
+ const candidate = idAtAxis(axis);
98
+ scanned += 1;
99
+ if (candidate !== null && eligible(candidate)) {
100
+ return { kind: 'found', id: candidate, scanned };
101
+ }
102
+ axis += positive ? 1 : -1;
103
+ }
104
+ }
105
+ return { kind: 'none', scanned };
106
+ }
107
+ }
108
+ export function createGrid(rows, options = {}) {
109
+ return unwrap(tryCreateGrid(rows, options));
110
+ }
111
+ export function tryCreateGrid(rows, options = {}) {
112
+ const maxRows = options.maxRows ?? 10_000;
113
+ const maxColumns = options.maxColumns ?? 10_000;
114
+ const maxItems = options.maxItems ?? 100_000;
115
+ const maxCells = options.maxCells ?? 1_000_000;
116
+ const maxIDCodeUnits = options.maxIDCodeUnits ?? DEFAULT_MAX_ID_CODE_UNITS;
117
+ for (const [value, name] of [
118
+ [maxRows, 'maxRows'],
119
+ [maxColumns, 'maxColumns'],
120
+ [maxItems, 'maxItems'],
121
+ [maxCells, 'maxCells'],
122
+ [maxIDCodeUnits, 'maxIDCodeUnits'],
123
+ ]) {
124
+ const error = validateSafeCeiling(value, name);
125
+ if (error !== null)
126
+ return { ok: false, error };
127
+ }
128
+ if (maxIDCodeUnits < 1) {
129
+ return fail('construction', 'invalid-max-id-code-units', 'maxIDCodeUnits must be a positive safe integer.', { maxIDCodeUnits });
130
+ }
131
+ if (rows.length > maxRows) {
132
+ return fail('resource-rejection', 'row-ceiling-exceeded', 'Grid exceeds maxRows.', {
133
+ rowCount: rows.length,
134
+ maxRows,
135
+ });
136
+ }
137
+ const observedColumns = rows.reduce((maximum, row) => Math.max(maximum, row.length), 0);
138
+ const columnCount = options.columnCount ?? observedColumns;
139
+ const columnError = validateSafeCeiling(columnCount, 'columnCount');
140
+ if (columnError !== null)
141
+ return { ok: false, error: columnError };
142
+ if (columnCount < observedColumns) {
143
+ return fail('construction', 'column-count-too-small', 'columnCount cannot truncate an occupied or explicit input coordinate.', { columnCount, observedColumns });
144
+ }
145
+ if (columnCount > maxColumns) {
146
+ return fail('resource-rejection', 'column-ceiling-exceeded', 'Grid exceeds maxColumns.', {
147
+ columnCount,
148
+ maxColumns,
149
+ });
150
+ }
151
+ const cellCount = rows.length * columnCount;
152
+ if (!Number.isSafeInteger(cellCount) || cellCount > maxCells) {
153
+ return fail('resource-rejection', 'cell-ceiling-exceeded', 'Grid rectangle exceeds maxCells.', {
154
+ rowCount: rows.length,
155
+ columnCount,
156
+ cellCount,
157
+ maxCells,
158
+ });
159
+ }
160
+ const cells = Array.from({ length: cellCount }, () => null);
161
+ const positions = new Map();
162
+ for (let rowIndex = 0; rowIndex < rows.length; rowIndex += 1) {
163
+ const row = rows[rowIndex] ?? [];
164
+ for (let column = 0; column < row.length; column += 1) {
165
+ const id = row[column] ?? null;
166
+ if (id === null)
167
+ continue;
168
+ const idError = validateStableID(id, maxIDCodeUnits);
169
+ if (idError !== null)
170
+ return { ok: false, error: idError };
171
+ if (positions.has(id)) {
172
+ return fail('construction', 'duplicate-id', 'Each grid identity must occupy one coordinate.', {
173
+ id,
174
+ row: rowIndex,
175
+ column,
176
+ });
177
+ }
178
+ if (positions.size === maxItems) {
179
+ return fail('resource-rejection', 'item-ceiling-exceeded', 'Grid exceeds maxItems.', {
180
+ maxItems,
181
+ });
182
+ }
183
+ const position = Object.freeze({ row: rowIndex, column });
184
+ positions.set(id, position);
185
+ cells[rowIndex * columnCount + column] = id;
186
+ }
187
+ }
188
+ return ok(new IndexedGrid(rows.length, columnCount, cells, positions));
189
+ }
190
+ function gridScanRejected(scanned, maxScan) {
191
+ return {
192
+ kind: 'resource-rejected',
193
+ scanned,
194
+ error: resourceError('scan-ceiling-reached', 'Grid movement reached maxScan before its semantic result was determined.', { maxScan }),
195
+ };
196
+ }
197
+ function isGridDirection(value) {
198
+ return value === 'left' || value === 'right' || value === 'up' || value === 'down';
199
+ }
200
+ export { applyGridEvent, createGridState, } from '../internal/composites/grid-control.js';
201
+ export { tryCreateGridState } from '../internal/composites/grid-control.js';
202
+ //# sourceMappingURL=grid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grid.js","sourceRoot":"","sources":["../../src/structures/grid.ts"],"names":[],"mappings":"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"}