@sectile/terminal 0.1.0 → 0.2.1

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 (248) hide show
  1. package/README.md +15 -1
  2. package/dist/accordion.d.ts +3 -0
  3. package/dist/accordion.d.ts.map +1 -1
  4. package/dist/accordion.js +6 -6
  5. package/dist/accordion.js.map +1 -1
  6. package/dist/alert-dialog.d.ts +5 -0
  7. package/dist/alert-dialog.d.ts.map +1 -1
  8. package/dist/alert-dialog.js +2 -2
  9. package/dist/alert-dialog.js.map +1 -1
  10. package/dist/appearance.d.ts +50 -0
  11. package/dist/appearance.d.ts.map +1 -0
  12. package/dist/appearance.js +200 -0
  13. package/dist/appearance.js.map +1 -0
  14. package/dist/calendar.d.ts +5 -0
  15. package/dist/calendar.d.ts.map +1 -1
  16. package/dist/calendar.js +10 -10
  17. package/dist/calendar.js.map +1 -1
  18. package/dist/carousel.d.ts +6 -1
  19. package/dist/carousel.d.ts.map +1 -1
  20. package/dist/carousel.js +6 -6
  21. package/dist/carousel.js.map +1 -1
  22. package/dist/cascade-select.d.ts +43 -0
  23. package/dist/cascade-select.d.ts.map +1 -0
  24. package/dist/cascade-select.js +71 -0
  25. package/dist/cascade-select.js.map +1 -0
  26. package/dist/checkbox.d.ts +2 -0
  27. package/dist/checkbox.d.ts.map +1 -1
  28. package/dist/checkbox.js +2 -2
  29. package/dist/checkbox.js.map +1 -1
  30. package/dist/color-picker.d.ts +39 -0
  31. package/dist/color-picker.d.ts.map +1 -0
  32. package/dist/color-picker.js +62 -0
  33. package/dist/color-picker.js.map +1 -0
  34. package/dist/combobox.d.ts +7 -0
  35. package/dist/combobox.d.ts.map +1 -1
  36. package/dist/combobox.js +12 -12
  37. package/dist/combobox.js.map +1 -1
  38. package/dist/date-field.d.ts +3 -0
  39. package/dist/date-field.d.ts.map +1 -1
  40. package/dist/date-field.js +3 -3
  41. package/dist/date-field.js.map +1 -1
  42. package/dist/date-picker.d.ts +4 -0
  43. package/dist/date-picker.d.ts.map +1 -1
  44. package/dist/date-picker.js +4 -4
  45. package/dist/date-picker.js.map +1 -1
  46. package/dist/date-range-field.d.ts +43 -0
  47. package/dist/date-range-field.d.ts.map +1 -0
  48. package/dist/date-range-field.js +49 -0
  49. package/dist/date-range-field.js.map +1 -0
  50. package/dist/date-range-picker.d.ts +4 -0
  51. package/dist/date-range-picker.d.ts.map +1 -1
  52. package/dist/date-range-picker.js +4 -4
  53. package/dist/date-range-picker.js.map +1 -1
  54. package/dist/date-time-field.d.ts +3 -0
  55. package/dist/date-time-field.d.ts.map +1 -1
  56. package/dist/date-time-field.js +4 -4
  57. package/dist/date-time-field.js.map +1 -1
  58. package/dist/date-time-picker.d.ts +4 -0
  59. package/dist/date-time-picker.d.ts.map +1 -1
  60. package/dist/date-time-picker.js +6 -5
  61. package/dist/date-time-picker.js.map +1 -1
  62. package/dist/date-time-range-picker.d.ts +4 -0
  63. package/dist/date-time-range-picker.d.ts.map +1 -1
  64. package/dist/date-time-range-picker.js +6 -5
  65. package/dist/date-time-range-picker.js.map +1 -1
  66. package/dist/dialog.d.ts +4 -0
  67. package/dist/dialog.d.ts.map +1 -1
  68. package/dist/dialog.js +2 -2
  69. package/dist/dialog.js.map +1 -1
  70. package/dist/disclosure.d.ts +2 -0
  71. package/dist/disclosure.d.ts.map +1 -1
  72. package/dist/disclosure.js +4 -4
  73. package/dist/disclosure.js.map +1 -1
  74. package/dist/editable.d.ts +27 -0
  75. package/dist/editable.d.ts.map +1 -0
  76. package/dist/editable.js +70 -0
  77. package/dist/editable.js.map +1 -0
  78. package/dist/feed.d.ts +10 -2
  79. package/dist/feed.d.ts.map +1 -1
  80. package/dist/feed.js +77 -19
  81. package/dist/feed.js.map +1 -1
  82. package/dist/form.d.ts +65 -0
  83. package/dist/form.d.ts.map +1 -0
  84. package/dist/form.js +234 -0
  85. package/dist/form.js.map +1 -0
  86. package/dist/grid.d.ts +7 -0
  87. package/dist/grid.d.ts.map +1 -1
  88. package/dist/grid.js +4 -4
  89. package/dist/grid.js.map +1 -1
  90. package/dist/index.d.ts +66 -2
  91. package/dist/index.d.ts.map +1 -1
  92. package/dist/index.js +18 -0
  93. package/dist/index.js.map +1 -1
  94. package/dist/internal/controller.js +2 -2
  95. package/dist/internal/controller.js.map +1 -1
  96. package/dist/internal/facade.d.ts +2 -1
  97. package/dist/internal/facade.d.ts.map +1 -1
  98. package/dist/internal/facade.js.map +1 -1
  99. package/dist/internal/menu-control.d.ts +1 -1
  100. package/dist/internal/menu-control.d.ts.map +1 -1
  101. package/dist/internal/menu-control.js +161 -38
  102. package/dist/internal/menu-control.js.map +1 -1
  103. package/dist/internal/semantic-controller.js +4 -4
  104. package/dist/internal/semantic-controller.js.map +1 -1
  105. package/dist/layer-stack.d.ts +16 -0
  106. package/dist/layer-stack.d.ts.map +1 -0
  107. package/dist/layer-stack.js +49 -0
  108. package/dist/layer-stack.js.map +1 -0
  109. package/dist/listbox.d.ts +11 -0
  110. package/dist/listbox.d.ts.map +1 -1
  111. package/dist/listbox.js +18 -11
  112. package/dist/listbox.js.map +1 -1
  113. package/dist/month-picker.d.ts +3 -0
  114. package/dist/month-picker.d.ts.map +1 -0
  115. package/dist/month-picker.js +2 -0
  116. package/dist/month-picker.js.map +1 -0
  117. package/dist/month-range-picker.d.ts +3 -0
  118. package/dist/month-range-picker.d.ts.map +1 -0
  119. package/dist/month-range-picker.js +2 -0
  120. package/dist/month-range-picker.js.map +1 -0
  121. package/dist/multi-thumb-slider.d.ts +2 -0
  122. package/dist/multi-thumb-slider.d.ts.map +1 -1
  123. package/dist/multi-thumb-slider.js +8 -8
  124. package/dist/multi-thumb-slider.js.map +1 -1
  125. package/dist/navigation-menu.d.ts +8 -0
  126. package/dist/navigation-menu.d.ts.map +1 -0
  127. package/dist/navigation-menu.js +10 -0
  128. package/dist/navigation-menu.js.map +1 -0
  129. package/dist/node.d.ts +29 -1
  130. package/dist/node.d.ts.map +1 -1
  131. package/dist/node.js +124 -6
  132. package/dist/node.js.map +1 -1
  133. package/dist/number-field.d.ts +3 -0
  134. package/dist/number-field.d.ts.map +1 -1
  135. package/dist/number-field.js +4 -4
  136. package/dist/number-field.js.map +1 -1
  137. package/dist/pagination.d.ts +3 -0
  138. package/dist/pagination.d.ts.map +1 -1
  139. package/dist/pagination.js +5 -5
  140. package/dist/pagination.js.map +1 -1
  141. package/dist/pin-input.d.ts +3 -0
  142. package/dist/pin-input.d.ts.map +1 -1
  143. package/dist/pin-input.js +3 -3
  144. package/dist/pin-input.js.map +1 -1
  145. package/dist/popover.d.ts +21 -0
  146. package/dist/popover.d.ts.map +1 -0
  147. package/dist/popover.js +8 -0
  148. package/dist/popover.js.map +1 -0
  149. package/dist/quantity-field.d.ts +4 -0
  150. package/dist/quantity-field.d.ts.map +1 -1
  151. package/dist/quantity-field.js +4 -4
  152. package/dist/quantity-field.js.map +1 -1
  153. package/dist/radio-group.d.ts +3 -0
  154. package/dist/radio-group.d.ts.map +1 -1
  155. package/dist/radio-group.js +6 -6
  156. package/dist/radio-group.js.map +1 -1
  157. package/dist/range-calendar.d.ts +3 -0
  158. package/dist/range-calendar.d.ts.map +1 -0
  159. package/dist/range-calendar.js +2 -0
  160. package/dist/range-calendar.js.map +1 -0
  161. package/dist/rating.d.ts +1 -0
  162. package/dist/rating.d.ts.map +1 -1
  163. package/dist/rating.js.map +1 -1
  164. package/dist/reorder.d.ts +42 -0
  165. package/dist/reorder.d.ts.map +1 -0
  166. package/dist/reorder.js +166 -0
  167. package/dist/reorder.js.map +1 -0
  168. package/dist/screen.d.ts +108 -0
  169. package/dist/screen.d.ts.map +1 -0
  170. package/dist/screen.js +364 -0
  171. package/dist/screen.js.map +1 -0
  172. package/dist/select.d.ts +4 -0
  173. package/dist/select.d.ts.map +1 -1
  174. package/dist/select.js +5 -5
  175. package/dist/select.js.map +1 -1
  176. package/dist/slider.d.ts +3 -0
  177. package/dist/slider.d.ts.map +1 -1
  178. package/dist/slider.js +10 -10
  179. package/dist/slider.js.map +1 -1
  180. package/dist/spin-button.d.ts +3 -0
  181. package/dist/spin-button.d.ts.map +1 -1
  182. package/dist/spin-button.js +6 -6
  183. package/dist/spin-button.js.map +1 -1
  184. package/dist/switch.d.ts +2 -0
  185. package/dist/switch.d.ts.map +1 -1
  186. package/dist/switch.js +2 -2
  187. package/dist/switch.js.map +1 -1
  188. package/dist/tabs.d.ts +4 -0
  189. package/dist/tabs.d.ts.map +1 -1
  190. package/dist/tabs.js +6 -6
  191. package/dist/tabs.js.map +1 -1
  192. package/dist/tags-input.d.ts +3 -0
  193. package/dist/tags-input.d.ts.map +1 -1
  194. package/dist/tags-input.js +51 -10
  195. package/dist/tags-input.js.map +1 -1
  196. package/dist/text.d.ts +3 -0
  197. package/dist/text.d.ts.map +1 -1
  198. package/dist/text.js +6 -6
  199. package/dist/text.js.map +1 -1
  200. package/dist/time-field.d.ts +3 -0
  201. package/dist/time-field.d.ts.map +1 -1
  202. package/dist/time-field.js +3 -3
  203. package/dist/time-field.js.map +1 -1
  204. package/dist/time-range-field.d.ts +42 -0
  205. package/dist/time-range-field.d.ts.map +1 -0
  206. package/dist/time-range-field.js +43 -0
  207. package/dist/time-range-field.js.map +1 -0
  208. package/dist/timer.d.ts +30 -0
  209. package/dist/timer.d.ts.map +1 -0
  210. package/dist/timer.js +31 -0
  211. package/dist/timer.js.map +1 -0
  212. package/dist/toast.d.ts +29 -0
  213. package/dist/toast.d.ts.map +1 -0
  214. package/dist/toast.js +38 -0
  215. package/dist/toast.js.map +1 -0
  216. package/dist/toggle-button.d.ts +2 -0
  217. package/dist/toggle-button.d.ts.map +1 -1
  218. package/dist/toggle-button.js +2 -2
  219. package/dist/toggle-button.js.map +1 -1
  220. package/dist/toggle-group.d.ts +22 -0
  221. package/dist/toggle-group.d.ts.map +1 -0
  222. package/dist/toggle-group.js +33 -0
  223. package/dist/toggle-group.js.map +1 -0
  224. package/dist/toolbar.d.ts +3 -0
  225. package/dist/toolbar.d.ts.map +1 -1
  226. package/dist/toolbar.js +6 -6
  227. package/dist/toolbar.js.map +1 -1
  228. package/dist/tooltip.d.ts +2 -0
  229. package/dist/tooltip.d.ts.map +1 -1
  230. package/dist/tooltip.js +2 -2
  231. package/dist/tooltip.js.map +1 -1
  232. package/dist/tree-grid.d.ts +8 -0
  233. package/dist/tree-grid.d.ts.map +1 -1
  234. package/dist/tree-grid.js +9 -9
  235. package/dist/tree-grid.js.map +1 -1
  236. package/dist/tree-view.d.ts +14 -6
  237. package/dist/tree-view.d.ts.map +1 -1
  238. package/dist/tree-view.js +27 -24
  239. package/dist/tree-view.js.map +1 -1
  240. package/dist/year-picker.d.ts +3 -0
  241. package/dist/year-picker.d.ts.map +1 -0
  242. package/dist/year-picker.js +2 -0
  243. package/dist/year-picker.js.map +1 -0
  244. package/dist/year-range-picker.d.ts +3 -0
  245. package/dist/year-range-picker.d.ts.map +1 -0
  246. package/dist/year-range-picker.js +2 -0
  247. package/dist/year-range-picker.js.map +1 -0
  248. package/package.json +103 -3
@@ -1 +1 @@
1
- {"version":3,"file":"controller.js","sourceRoot":"","sources":["../../src/internal/controller.ts"],"names":[],"mappings":"AACA,OAAO,EACL,oBAAoB,EACpB,sBAAsB,EACtB,mBAAmB,EACnB,mBAAmB,GAIpB,MAAM,wBAAwB,CAAC;AAEhC,MAAM,UAAU,oBAAoB,CAClC,OAAgC,EAChC,gBAAwB,EACxB,KAAY,EACZ,OAA4C,EAC5C,SAA8D,EAC9D,MAAkD,EAClD,QAAsC;IAEtC,MAAM,QAAQ,GAAG,oBAAoB,CAAC,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IACjF,IAAI,CAAC,QAAQ,CAAC,EAAE;QAAE,OAAO,QAAQ,CAAC;IAClC,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpE,IAAI,CAAC,SAAS,CAAC,EAAE;QAAE,OAAO,mBAAmB,CAAC,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;IACxE,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC;QAC7B,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,QAAQ;QACpC,KAAK,EAAE,SAAS,CAAC,KAAK;KACvB,CAAC,CAAC;IACH,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC/C,OAAO,mBAAmB,CACxB,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,EAC3E,QAAQ,CACT,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,OAAgC,EAChC,KAAoB;IAEpB,IAAI,CAAC,KAAK,CAAC,EAAE;QAAE,OAAO,KAAK,CAAC;IAC5B,IAAI,OAAO,CAAC,QAAQ,KAAK,MAAM,CAAC,gBAAgB,EAAE,CAAC;QACjD,OAAO;YACL,EAAE,EAAE,KAAK;YACT,KAAK,EAAE;gBACL,KAAK,EAAE,oBAAoB;gBAC3B,IAAI,EAAE,0BAA0B;gBAChC,OAAO,EAAE,qEAAqE;gBAC9E,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE;aACxC;SACF,CAAC;IACJ,CAAC;IACD,OAAO,sBAAsB,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;AACnE,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAQ,IAAW,EAAE,KAAY;IAClE,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACxD,CAAC"}
1
+ {"version":3,"file":"controller.js","sourceRoot":"","sources":["../../src/internal/controller.ts"],"names":[],"mappings":"AACA,OAAO,EACL,oBAAoB,EACpB,yBAAyB,EACzB,mBAAmB,EACnB,mBAAmB,GAIpB,MAAM,wBAAwB,CAAC;AAEhC,MAAM,UAAU,oBAAoB,CAClC,OAAgC,EAChC,gBAAwB,EACxB,KAAY,EACZ,OAA4C,EAC5C,SAA8D,EAC9D,MAAkD,EAClD,QAAsC;IAEtC,MAAM,QAAQ,GAAG,oBAAoB,CAAC,OAAO,EAAE,gBAAgB,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IACjF,IAAI,CAAC,QAAQ,CAAC,EAAE;QAAE,OAAO,QAAQ,CAAC;IAClC,MAAM,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACpE,IAAI,CAAC,SAAS,CAAC,EAAE;QAAE,OAAO,mBAAmB,CAAC,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;IACxE,MAAM,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC;QAC7B,QAAQ,EAAE,QAAQ,CAAC,QAAQ,CAAC,QAAQ;QACpC,KAAK,EAAE,SAAS,CAAC,KAAK;KACvB,CAAC,CAAC;IACH,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC/C,OAAO,mBAAmB,CACxB,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,IAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC,EAC3E,QAAQ,CACT,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,OAAgC,EAChC,KAAoB;IAEpB,IAAI,CAAC,KAAK,CAAC,EAAE;QAAE,OAAO,KAAK,CAAC;IAC5B,IAAI,OAAO,CAAC,QAAQ,KAAK,MAAM,CAAC,gBAAgB,EAAE,CAAC;QACjD,OAAO;YACL,EAAE,EAAE,KAAK;YACT,KAAK,EAAE;gBACL,KAAK,EAAE,oBAAoB;gBAC3B,IAAI,EAAE,0BAA0B;gBAChC,OAAO,EAAE,qEAAqE;gBAC9E,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE;aACxC;SACF,CAAC;IACJ,CAAC;IACD,OAAO,yBAAyB,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;AACtE,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAQ,IAAW,EAAE,KAAY;IAClE,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AACxD,CAAC"}
@@ -8,6 +8,7 @@ interface FacadeOptions {
8
8
  readonly onUpdate?: () => void;
9
9
  }
10
10
  type SnapshotOf<Connection extends SnapshotConnection> = ReturnType<Connection['getSnapshot']>;
11
+ export type FacadeSnapshotListener<Connection extends SnapshotConnection> = (snapshot: SnapshotOf<Connection>) => void;
11
12
  type StateOf<Connection extends SnapshotConnection> = SnapshotOf<Connection>['state'];
12
13
  type SendInput<Connection> = Connection extends {
13
14
  handleEvent(input: infer Input): boolean;
@@ -36,7 +37,7 @@ export type FacadeConnection<Connection extends SnapshotConnection> = Connection
36
37
  readonly state: StateOf<Connection>;
37
38
  send(input: SendInput<Connection>): boolean;
38
39
  update(input: UpdateInput<Connection>): UpdateResult<Connection>;
39
- subscribe(listener: (snapshot: SnapshotOf<Connection>) => void): () => void;
40
+ subscribe(listener: FacadeSnapshotListener<Connection>): () => void;
40
41
  destroy(): void;
41
42
  };
42
43
  export declare function createFacadeConnection<Options extends FacadeOptions, Connection extends SnapshotConnection>(options: Options, construct: (options: Options) => Result<Connection>): Result<FacadeConnection<Connection>>;
@@ -1 +1 @@
1
- {"version":3,"file":"facade.d.ts","sourceRoot":"","sources":["../../src/internal/facade.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAE5C,UAAU,kBAAkB;IAC1B,WAAW,IAAI;QAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC;CAC5C;AAED,UAAU,aAAa;IACrB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CAChC;AAED,KAAK,UAAU,CAAC,UAAU,SAAS,kBAAkB,IAAI,UAAU,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC;AAC/F,KAAK,OAAO,CAAC,UAAU,SAAS,kBAAkB,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC;AACtF,KAAK,SAAS,CAAC,UAAU,IAAI,UAAU,SAAS;IAAE,WAAW,CAAC,KAAK,EAAE,MAAM,KAAK,GAAG,OAAO,CAAA;CAAE,GACxF,KAAK,GACL,UAAU,SAAS;IAAE,mBAAmB,CAAC,KAAK,EAAE,MAAM,KAAK,GAAG,OAAO,CAAA;CAAE,GACrE,KAAK,GACL,UAAU,SAAS;IAAE,mBAAmB,CAAC,KAAK,EAAE,MAAM,KAAK,GAAG,OAAO,CAAA;CAAE,GACrE,KAAK,GACL,UAAU,SAAS;IAAE,iBAAiB,CAAC,KAAK,EAAE,MAAM,KAAK,GAAG,OAAO,CAAA;CAAE,GACnE,KAAK,GACL,KAAK,CAAC;AAChB,KAAK,WAAW,CAAC,UAAU,IAAI,UAAU,SAAS;IAAE,oBAAoB,CAAC,KAAK,EAAE,MAAM,KAAK,GAAG,OAAO,CAAA;CAAE,GACnG,KAAK,GACL,UAAU,SAAS;IAAE,mBAAmB,CAAC,KAAK,EAAE,MAAM,KAAK,GAAG,OAAO,CAAA;CAAE,GACrE,KAAK,GACL,UAAU,SAAS;IAAE,UAAU,CAAC,KAAK,EAAE,MAAM,KAAK,GAAG,OAAO,CAAA;CAAE,GAC5D,KAAK,GACL,KAAK,CAAC;AACd,KAAK,YAAY,CAAC,UAAU,IAAI,UAAU,SAAS;IAAE,oBAAoB,CAAC,KAAK,EAAE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAA;CAAE,GAC1G,MAAM,GACN,UAAU,SAAS;IAAE,mBAAmB,CAAC,KAAK,EAAE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAA;CAAE,GAC3E,MAAM,GACN,UAAU,SAAS;IAAE,UAAU,CAAC,KAAK,EAAE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAA;CAAE,GAClE,MAAM,GACN,KAAK,CAAC;AAEd,MAAM,MAAM,gBAAgB,CAAC,UAAU,SAAS,kBAAkB,IAAI,UAAU,GAAG;IACjF,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IACpC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC;IAC5C,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,UAAU,CAAC,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;IACjE,SAAS,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,UAAU,CAAC,UAAU,CAAC,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;IAC5E,OAAO,IAAI,IAAI,CAAC;CACjB,CAAC;AAEF,wBAAgB,sBAAsB,CACpC,OAAO,SAAS,aAAa,EAC7B,UAAU,SAAS,kBAAkB,EAErC,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,CAAC,UAAU,CAAC,GAClD,MAAM,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAqCtC"}
1
+ {"version":3,"file":"facade.d.ts","sourceRoot":"","sources":["../../src/internal/facade.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAE5C,UAAU,kBAAkB;IAC1B,WAAW,IAAI;QAAE,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC;CAC5C;AAED,UAAU,aAAa;IACrB,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CAChC;AAED,KAAK,UAAU,CAAC,UAAU,SAAS,kBAAkB,IAAI,UAAU,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC;AAC/F,MAAM,MAAM,sBAAsB,CAAC,UAAU,SAAS,kBAAkB,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC;AACvH,KAAK,OAAO,CAAC,UAAU,SAAS,kBAAkB,IAAI,UAAU,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC;AACtF,KAAK,SAAS,CAAC,UAAU,IAAI,UAAU,SAAS;IAAE,WAAW,CAAC,KAAK,EAAE,MAAM,KAAK,GAAG,OAAO,CAAA;CAAE,GACxF,KAAK,GACL,UAAU,SAAS;IAAE,mBAAmB,CAAC,KAAK,EAAE,MAAM,KAAK,GAAG,OAAO,CAAA;CAAE,GACrE,KAAK,GACL,UAAU,SAAS;IAAE,mBAAmB,CAAC,KAAK,EAAE,MAAM,KAAK,GAAG,OAAO,CAAA;CAAE,GACrE,KAAK,GACL,UAAU,SAAS;IAAE,iBAAiB,CAAC,KAAK,EAAE,MAAM,KAAK,GAAG,OAAO,CAAA;CAAE,GACnE,KAAK,GACL,KAAK,CAAC;AAChB,KAAK,WAAW,CAAC,UAAU,IAAI,UAAU,SAAS;IAAE,oBAAoB,CAAC,KAAK,EAAE,MAAM,KAAK,GAAG,OAAO,CAAA;CAAE,GACnG,KAAK,GACL,UAAU,SAAS;IAAE,mBAAmB,CAAC,KAAK,EAAE,MAAM,KAAK,GAAG,OAAO,CAAA;CAAE,GACrE,KAAK,GACL,UAAU,SAAS;IAAE,UAAU,CAAC,KAAK,EAAE,MAAM,KAAK,GAAG,OAAO,CAAA;CAAE,GAC5D,KAAK,GACL,KAAK,CAAC;AACd,KAAK,YAAY,CAAC,UAAU,IAAI,UAAU,SAAS;IAAE,oBAAoB,CAAC,KAAK,EAAE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAA;CAAE,GAC1G,MAAM,GACN,UAAU,SAAS;IAAE,mBAAmB,CAAC,KAAK,EAAE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAA;CAAE,GAC3E,MAAM,GACN,UAAU,SAAS;IAAE,UAAU,CAAC,KAAK,EAAE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAA;CAAE,GAClE,MAAM,GACN,KAAK,CAAC;AAEd,MAAM,MAAM,gBAAgB,CAAC,UAAU,SAAS,kBAAkB,IAAI,UAAU,GAAG;IACjF,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,UAAU,CAAC,CAAC;IACpC,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC;IAC5C,MAAM,CAAC,KAAK,EAAE,WAAW,CAAC,UAAU,CAAC,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;IACjE,SAAS,CAAC,QAAQ,EAAE,sBAAsB,CAAC,UAAU,CAAC,GAAG,MAAM,IAAI,CAAC;IACpE,OAAO,IAAI,IAAI,CAAC;CACjB,CAAC;AAEF,wBAAgB,sBAAsB,CACpC,OAAO,SAAS,aAAa,EAC7B,UAAU,SAAS,kBAAkB,EAErC,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,CAAC,UAAU,CAAC,GAClD,MAAM,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAqCtC"}
@@ -1 +1 @@
1
- {"version":3,"file":"facade.js","sourceRoot":"","sources":["../../src/internal/facade.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"facade.js","sourceRoot":"","sources":["../../src/internal/facade.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ import type { RevisionSnapshot } from '@sectile/core/revision';
3
3
  import type { TreeNodeInput } from '@sectile/core/tree';
4
4
  import { type MenuEvent, type MenuPolicies, type MenuState } from '@sectile/core/menu';
5
5
  import type { TerminalKeyboardInput } from '../keyboard.js';
6
- export type MenuKind = 'menu' | 'menubar' | 'menu-button';
6
+ export type MenuKind = 'menu' | 'menubar' | 'menu-button' | 'navigation-menu';
7
7
  export interface MenuTypeaheadOptions<ID extends StableID> {
8
8
  readonly textValue: (id: ID) => string;
9
9
  readonly timeout?: number;
@@ -1 +1 @@
1
- {"version":3,"file":"menu-control.d.ts","sourceRoot":"","sources":["../../src/internal/menu-control.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAAC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAAC,OAAO,KAAK,EAAQ,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAAC,OAAO,EAAsE,KAAK,SAAS,EAAE,KAAK,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAAC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAC9Y,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,aAAa,CAAC;AAAC,MAAM,WAAW,oBAAoB,CAAC,EAAE,SAAS,QAAQ;IAAI,QAAQ,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAA;CAAE;AAAC,MAAM,WAAW,kBAAkB,CAAC,EAAE,SAAS,QAAQ;IAAI,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,aAAa,CAAC,EAAE,CAAC,EAAE,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC;IAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,EAAE,CAAC;IAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC;IAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,oBAAoB,CAAC,EAAE,CAAC,CAAC;IAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,IAAI,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;CAAE;AAAC,MAAM,WAAW,WAAW,CAAC,EAAE,SAAS,QAAQ;IAAI,WAAW,IAAI,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;IAAC,mBAAmB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAAC,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC;IAAC,mBAAmB,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAA;CAAE;AAC5hC,wBAAgB,iBAAiB,CAAC,EAAE,SAAS,QAAQ,EAAE,OAAO,EAAE,kBAAkB,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAwlD"}
1
+ {"version":3,"file":"menu-control.d.ts","sourceRoot":"","sources":["../../src/internal/menu-control.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAQ,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAKL,KAAK,SAAS,EACd,KAAK,YAAY,EACjB,KAAK,SAAS,EACf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAM5D,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,SAAS,GAAG,aAAa,GAAG,iBAAiB,CAAC;AAE9E,MAAM,WAAW,oBAAoB,CAAC,EAAE,SAAS,QAAQ;IACvD,QAAQ,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,MAAM,CAAC;IACvC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;CAC/C;AAED,MAAM,WAAW,kBAAkB,CAAC,EAAE,SAAS,QAAQ;IACrD,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,SAAS,aAAa,CAAC,EAAE,CAAC,EAAE,CAAC;IAC7C,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC;IACxB,QAAQ,CAAC,QAAQ,CAAC,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC;IACrC,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,EAAE,CAAC;IACvC,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,uBAAuB,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC;IAC7C,QAAQ,CAAC,SAAS,CAAC,EAAE,oBAAoB,CAAC,EAAE,CAAC,CAAC;IAC9C,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAChD,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,IAAI,CAAC;IACrC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,WAAW,CAAC,EAAE,SAAS,QAAQ;IAC9C,WAAW,IAAI,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/C,mBAAmB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5E,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC;IAC3C,mBAAmB,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC;CAC5D;AAED,wBAAgB,iBAAiB,CAAC,EAAE,SAAS,QAAQ,EACnD,OAAO,EAAE,kBAAkB,CAAC,EAAE,CAAC,GAC9B,MAAM,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CA4DzB"}
@@ -1,10 +1,55 @@
1
- import { applyMenuEvent, createMenuModel, createMenuState } from '@sectile/core/menu';
2
- import { createSemanticController } from './semantic-controller.js';
3
- export function createMenuControl(options) { const model = createMenuModel(options.items); if (!model.ok)
4
- return model; const disabled = new Set(options.disabledItems ?? []); for (const id of disabled)
5
- if (!model.value.tree.has(id))
6
- return { ok: false, error: { class: 'construction', code: 'disabled-item-outside-domain', message: 'Every disabled menu item must exist in the menu tree.', details: { id } } }; const suppliedDisabled = options.policies?.disabled; const policies = { ...options.policies, disabled: (id) => disabled.has(id) || (suppliedDisabled?.(id) ?? false) }; const openControlled = options.kind === 'menu-button' && options.open !== undefined; const initialOpen = options.kind === 'menu-button' ? options.open ?? options.defaultOpen ?? false : true; const runtime = createSemanticController({ interaction: options, initial: createMenuState(model.value.tree, initialOpen, initialOpen ? options.defaultHighlightedValue ?? null : null, []), reducer: (state, event) => applyMenuEvent(model.value.tree, state, event, policies), reconcile: (previous, proposed) => { const open = options.kind === 'menu-button' ? openControlled ? previous.open : proposed.open : true; return createMenuState(model.value.tree, open, open ? proposed.cursor.current : null, open ? proposed.openPath : []); }, notify: (previous, proposed) => { if (previous.open !== proposed.open)
7
- options.onOpenChange?.(proposed.open); }, toEffect: (command) => command }); return runtime.ok ? { ok: true, value: new TerminalMenuControl(options, model.value.tree, runtime.value, openControlled) } : runtime; }
1
+ import { applyMenuEvent, tryCreateMenuModel, tryCreateMenuState, } from '@sectile/core/menu';
2
+ import { createSemanticController, } from './semantic-controller.js';
3
+ export function createMenuControl(options) {
4
+ const model = tryCreateMenuModel(options.items);
5
+ if (!model.ok)
6
+ return model;
7
+ const disabled = new Set(options.disabledItems ?? []);
8
+ for (const id of disabled) {
9
+ if (!model.value.tree.has(id)) {
10
+ return {
11
+ ok: false,
12
+ error: {
13
+ class: 'construction',
14
+ code: 'disabled-item-outside-domain',
15
+ message: 'Every disabled menu item must exist in the menu tree.',
16
+ details: { id },
17
+ },
18
+ };
19
+ }
20
+ }
21
+ const suppliedDisabled = options.policies?.disabled;
22
+ const policies = {
23
+ ...options.policies,
24
+ disabled: (id) => disabled.has(id) || (suppliedDisabled?.(id) ?? false),
25
+ };
26
+ const openControlled = options.kind === 'menu-button' && options.open !== undefined;
27
+ const initialOpen = options.kind === 'menu-button'
28
+ ? options.open ?? options.defaultOpen ?? false
29
+ : true;
30
+ const runtime = createSemanticController({
31
+ interaction: options,
32
+ initial: tryCreateMenuState(model.value.tree, initialOpen, initialOpen ? options.defaultHighlightedValue ?? null : null, []),
33
+ reducer: (state, event) => applyMenuEvent(model.value.tree, state, event, policies),
34
+ reconcile: (previous, proposed) => {
35
+ const open = options.kind === 'menu-button'
36
+ ? openControlled ? previous.open : proposed.open
37
+ : true;
38
+ return tryCreateMenuState(model.value.tree, open, open ? proposed.cursor.current : null, open ? proposed.openPath : []);
39
+ },
40
+ notify: (previous, proposed) => {
41
+ if (previous.open !== proposed.open)
42
+ options.onOpenChange?.(proposed.open);
43
+ },
44
+ toEffect: (command) => command,
45
+ });
46
+ return runtime.ok
47
+ ? {
48
+ ok: true,
49
+ value: new TerminalMenuControl(options, model.value.tree, runtime.value, openControlled),
50
+ }
51
+ : runtime;
52
+ }
8
53
  class TerminalMenuControl {
9
54
  #options;
10
55
  #tree;
@@ -12,37 +57,115 @@ class TerminalMenuControl {
12
57
  #openControlled;
13
58
  #typeaheadBuffer = '';
14
59
  #lastTypeaheadAt = Number.NEGATIVE_INFINITY;
15
- constructor(options, tree, runtime, openControlled) { this.#options = options; this.#tree = tree; this.#runtime = runtime; this.#openControlled = openControlled; }
16
- getSnapshot() { return this.#runtime.getSnapshot(); }
17
- syncControlledValue(open) { if (!this.#openControlled)
18
- return { ok: false, error: { class: 'construction', code: 'uncontrolled-controller-sync', message: 'Only a controlled menu button can synchronize open state.' } }; const state = this.getSnapshot().state; const result = this.#runtime.replace(createMenuState(this.#tree, open, open ? state.cursor.current : null, open ? state.openPath : [])); if (result.ok)
19
- this.#options.onUpdate?.(); return result; }
20
- handleEvent(event) { const result = this.#runtime.handle(event); if (result.ok) {
21
- for (const effect of result.commands)
22
- if (effect.type === 'invoke')
23
- this.#options.onInvoke?.(effect.id);
24
- this.#options.onUpdate?.();
25
- } return result.ok; }
26
- handleKeyboardInput(input) { if (this.#handleTypeahead(input))
27
- return true; const event = toMenuEvent(input, this.#options.kind); return event === null ? false : this.handleEvent(event); }
28
- #handleTypeahead(input) { const config = this.#options.typeahead; if (config === undefined || input.altKey || input.ctrlKey || input.key.length !== 1)
29
- return false; const now = config.now?.() ?? Date.now(), timeout = config.timeout ?? 500; this.#typeaheadBuffer = now - this.#lastTypeaheadAt > timeout ? input.key : `${this.#typeaheadBuffer}${input.key}`; this.#lastTypeaheadAt = now; const normalize = config.normalize ?? ((text) => text.normalize('NFKC').toLocaleLowerCase()); const current = this.getSnapshot().state.cursor.current; const siblings = current === null || this.#tree.parentOf(current) === null ? this.#tree.roots.ids : this.#tree.childrenOf(this.#tree.parentOf(current))?.ids ?? []; if (siblings.length === 0)
30
- return true; const start = current === null ? 0 : (siblings.indexOf(current) + 1) % siblings.length, query = normalize(this.#typeaheadBuffer); for (let offset = 0; offset < siblings.length; offset += 1) {
31
- const id = siblings[(start + offset) % siblings.length];
32
- if (normalize(config.textValue(id)).startsWith(query)) {
33
- this.handleEvent({ type: 'focus', id });
34
- break;
60
+ constructor(options, tree, runtime, openControlled) {
61
+ this.#options = options;
62
+ this.#tree = tree;
63
+ this.#runtime = runtime;
64
+ this.#openControlled = openControlled;
65
+ }
66
+ getSnapshot() {
67
+ return this.#runtime.getSnapshot();
68
+ }
69
+ syncControlledValue(open) {
70
+ if (!this.#openControlled) {
71
+ return {
72
+ ok: false,
73
+ error: {
74
+ class: 'construction',
75
+ code: 'uncontrolled-controller-sync',
76
+ message: 'Only a controlled menu button can synchronize open state.',
77
+ },
78
+ };
35
79
  }
36
- } return true; }
80
+ const state = this.getSnapshot().state;
81
+ const result = this.#runtime.replace(tryCreateMenuState(this.#tree, open, open ? state.cursor.current : null, open ? state.openPath : []));
82
+ if (result.ok)
83
+ this.#options.onUpdate?.();
84
+ return result;
85
+ }
86
+ handleEvent(event) {
87
+ const result = this.#runtime.handle(event);
88
+ if (result.ok) {
89
+ for (const effect of result.commands) {
90
+ if (effect.type === 'invoke')
91
+ this.#options.onInvoke?.(effect.id);
92
+ }
93
+ this.#options.onUpdate?.();
94
+ }
95
+ return result.ok;
96
+ }
97
+ handleKeyboardInput(input) {
98
+ if (this.#handleTypeahead(input))
99
+ return true;
100
+ const current = this.getSnapshot().state.cursor.current;
101
+ const event = toMenuEvent(input, this.#options.kind, {
102
+ branch: current !== null && !this.#tree.isLeaf(current),
103
+ nested: current !== null && this.#tree.parentOf(current) !== null,
104
+ });
105
+ return event === null ? false : this.handleEvent(event);
106
+ }
107
+ #handleTypeahead(input) {
108
+ const config = this.#options.typeahead;
109
+ if (config === undefined
110
+ || input.altKey
111
+ || input.ctrlKey
112
+ || input.key.length !== 1)
113
+ return false;
114
+ const now = config.now?.() ?? Date.now();
115
+ const timeout = config.timeout ?? 500;
116
+ this.#typeaheadBuffer = now - this.#lastTypeaheadAt > timeout
117
+ ? input.key
118
+ : `${this.#typeaheadBuffer}${input.key}`;
119
+ this.#lastTypeaheadAt = now;
120
+ const normalize = config.normalize
121
+ ?? ((text) => text.normalize('NFKC').toLocaleLowerCase());
122
+ const current = this.getSnapshot().state.cursor.current;
123
+ const siblings = current === null || this.#tree.parentOf(current) === null
124
+ ? this.#tree.roots.ids
125
+ : this.#tree.childrenOf(this.#tree.parentOf(current))?.ids ?? [];
126
+ if (siblings.length === 0)
127
+ return true;
128
+ const start = current === null ? 0 : (siblings.indexOf(current) + 1) % siblings.length;
129
+ const query = normalize(this.#typeaheadBuffer);
130
+ for (let offset = 0; offset < siblings.length; offset += 1) {
131
+ const id = siblings[(start + offset) % siblings.length];
132
+ if (normalize(config.textValue(id)).startsWith(query)) {
133
+ this.handleEvent({ type: 'focus', id });
134
+ break;
135
+ }
136
+ }
137
+ return true;
138
+ }
139
+ }
140
+ function toMenuEvent(input, kind, context) {
141
+ if (input.altKey || input.ctrlKey)
142
+ return null;
143
+ if (input.key === 'escape')
144
+ return 'escape';
145
+ if (input.key === 'home')
146
+ return 'first';
147
+ if (input.key === 'end')
148
+ return 'last';
149
+ if (input.key === 'enter' || input.key === 'space') {
150
+ return context.branch ? 'open-submenu' : 'invoke';
151
+ }
152
+ if (kind === 'navigation-menu' && !context.nested) {
153
+ if (input.key === 'left')
154
+ return 'previous';
155
+ if (input.key === 'right')
156
+ return 'next';
157
+ if (input.key === 'down' || input.key === 'up')
158
+ return 'open-submenu';
159
+ return null;
160
+ }
161
+ if (input.key === 'down')
162
+ return 'next';
163
+ if (input.key === 'up')
164
+ return 'previous';
165
+ if (input.key === 'right')
166
+ return 'open-submenu';
167
+ if (input.key === 'left')
168
+ return 'close-submenu';
169
+ return null;
37
170
  }
38
- function toMenuEvent(input, kind) { if (input.altKey || input.ctrlKey)
39
- return null; if (input.key === 'escape')
40
- return 'escape'; if (input.key === 'home')
41
- return 'first'; if (input.key === 'end')
42
- return 'last'; if (input.key === 'enter' || input.key === 'space')
43
- return 'invoke'; if (input.key === 'down')
44
- return kind === 'menubar' ? 'open-submenu' : 'next'; if (input.key === 'up')
45
- return 'previous'; if (input.key === 'right')
46
- return kind === 'menubar' ? 'next' : 'open-submenu'; if (input.key === 'left')
47
- return kind === 'menubar' ? 'previous' : 'close-submenu'; return null; }
48
171
  //# sourceMappingURL=menu-control.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"menu-control.js","sourceRoot":"","sources":["../../src/internal/menu-control.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"menu-control.js","sourceRoot":"","sources":["../../src/internal/menu-control.ts"],"names":[],"mappings":"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"}
@@ -1,13 +1,13 @@
1
- import { createInteractionState, requireInteraction, } from '@sectile/core/interaction';
2
- import { createRevisionSnapshot, rejectRevisionInput, } from '@sectile/core/revision';
1
+ import { tryCreateInteractionState, requireInteraction, } from '@sectile/core/interaction';
2
+ import { tryCreateRevisionSnapshot, rejectRevisionInput, } from '@sectile/core/revision';
3
3
  import { applyControllerEvent, synchronizeControllerState } from './controller.js';
4
4
  export function createSemanticController(options) {
5
5
  if (!options.initial.ok)
6
6
  return options.initial;
7
- const interaction = createInteractionState(options.interaction);
7
+ const interaction = tryCreateInteractionState(options.interaction);
8
8
  if (!interaction.ok)
9
9
  return interaction;
10
- const snapshot = createRevisionSnapshot(options.initial.value);
10
+ const snapshot = tryCreateRevisionSnapshot(options.initial.value);
11
11
  if (!snapshot.ok)
12
12
  return snapshot;
13
13
  let current = snapshot.value;
@@ -1 +1 @@
1
- {"version":3,"file":"semantic-controller.js","sourceRoot":"","sources":["../../src/internal/semantic-controller.ts"],"names":[],"mappings":"AACA,OAAO,EACL,sBAAsB,EACtB,kBAAkB,GAEnB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,sBAAsB,EACtB,mBAAmB,GAIpB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAmBnF,MAAM,UAAU,wBAAwB,CACtC,OAAiE;IAEjE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;QAAE,OAAO,OAAO,CAAC,OAAO,CAAC;IAChD,MAAM,WAAW,GAAG,sBAAsB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAChE,IAAI,CAAC,WAAW,CAAC,EAAE;QAAE,OAAO,WAAW,CAAC;IACxC,MAAM,QAAQ,GAAG,sBAAsB,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC/D,IAAI,CAAC,QAAQ,CAAC,EAAE;QAAE,OAAO,QAAQ,CAAC;IAClC,IAAI,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC;IAC7B,OAAO;QACL,EAAE,EAAE,IAAI;QACR,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC;YACnB,WAAW,EAAE,GAA4B,EAAE,CAAC,OAAO;YACnD,OAAO,EAAE,CAAC,KAAoB,EAAmC,EAAE;gBACjE,MAAM,IAAI,GAAG,0BAA0B,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBACxD,IAAI,IAAI,CAAC,EAAE;oBAAE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC;gBAClC,OAAO,IAAI,CAAC;YACd,CAAC;YACD,MAAM,EAAE,CACN,KAAY,EACZ,gBAAgB,GAAG,OAAO,CAAC,QAAQ,EACJ,EAAE;gBACjC,MAAM,SAAS,GAAG,kBAAkB,CAClC,WAAW,CAAC,KAAK,EACjB,OAAO,CAAC,iBAAiB,EAAE,CAAC,KAAK,CAAC,IAAI,QAAQ,CAC/C,CAAC;gBACF,IAAI,CAAC,SAAS,CAAC,EAAE;oBAAE,OAAO,mBAAmB,CAAC,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;gBACxE,MAAM,MAAM,GAAG,oBAAoB,CACjC,OAAO,EACP,gBAAgB,EAChB,KAAK,EACL,OAAO,CAAC,OAAO,EACf,OAAO,CAAC,SAAS,IAAI,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,EAC/E,OAAO,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,EACnC,OAAO,CAAC,QAAQ,CACjB,CAAC;gBACF,IAAI,MAAM,CAAC,EAAE;oBAAE,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC;gBACzC,OAAO,MAAM,CAAC;YAChB,CAAC;YACD,MAAM,EAAE,CACN,IAAY,EACZ,OAAe,EACf,OAA2C,EACZ,EAAE,CAAC,mBAAmB,CAAC,OAAO,EAAE;gBAC/D,KAAK,EAAE,sBAAsB;gBAC7B,IAAI;gBACJ,OAAO;gBACP,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC;aAC9C,CAAC;SACH,CAAC;KACH,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"semantic-controller.js","sourceRoot":"","sources":["../../src/internal/semantic-controller.ts"],"names":[],"mappings":"AACA,OAAO,EACL,yBAAyB,EACzB,kBAAkB,GAEnB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,yBAAyB,EACzB,mBAAmB,GAIpB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,oBAAoB,EAAE,0BAA0B,EAAE,MAAM,iBAAiB,CAAC;AAmBnF,MAAM,UAAU,wBAAwB,CACtC,OAAiE;IAEjE,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;QAAE,OAAO,OAAO,CAAC,OAAO,CAAC;IAChD,MAAM,WAAW,GAAG,yBAAyB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IACnE,IAAI,CAAC,WAAW,CAAC,EAAE;QAAE,OAAO,WAAW,CAAC;IACxC,MAAM,QAAQ,GAAG,yBAAyB,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAClE,IAAI,CAAC,QAAQ,CAAC,EAAE;QAAE,OAAO,QAAQ,CAAC;IAClC,IAAI,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC;IAC7B,OAAO;QACL,EAAE,EAAE,IAAI;QACR,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC;YACnB,WAAW,EAAE,GAA4B,EAAE,CAAC,OAAO;YACnD,OAAO,EAAE,CAAC,KAAoB,EAAmC,EAAE;gBACjE,MAAM,IAAI,GAAG,0BAA0B,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;gBACxD,IAAI,IAAI,CAAC,EAAE;oBAAE,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC;gBAClC,OAAO,IAAI,CAAC;YACd,CAAC;YACD,MAAM,EAAE,CACN,KAAY,EACZ,gBAAgB,GAAG,OAAO,CAAC,QAAQ,EACJ,EAAE;gBACjC,MAAM,SAAS,GAAG,kBAAkB,CAClC,WAAW,CAAC,KAAK,EACjB,OAAO,CAAC,iBAAiB,EAAE,CAAC,KAAK,CAAC,IAAI,QAAQ,CAC/C,CAAC;gBACF,IAAI,CAAC,SAAS,CAAC,EAAE;oBAAE,OAAO,mBAAmB,CAAC,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC;gBACxE,MAAM,MAAM,GAAG,oBAAoB,CACjC,OAAO,EACP,gBAAgB,EAChB,KAAK,EACL,OAAO,CAAC,OAAO,EACf,OAAO,CAAC,SAAS,IAAI,CAAC,CAAC,SAAS,EAAE,QAAQ,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC,EAC/E,OAAO,CAAC,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,EACnC,OAAO,CAAC,QAAQ,CACjB,CAAC;gBACF,IAAI,MAAM,CAAC,EAAE;oBAAE,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC;gBACzC,OAAO,MAAM,CAAC;YAChB,CAAC;YACD,MAAM,EAAE,CACN,IAAY,EACZ,OAAe,EACf,OAA2C,EACZ,EAAE,CAAC,mBAAmB,CAAC,OAAO,EAAE;gBAC/D,KAAK,EAAE,sBAAsB;gBAC7B,IAAI;gBACJ,OAAO;gBACP,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC;aAC9C,CAAC;SACH,CAAC;KACH,CAAC;AACJ,CAAC"}
@@ -0,0 +1,16 @@
1
+ import { type LayerDismissReason, type LayerInput, type LayerStackState } from '@sectile/core/layer-stack';
2
+ import type { Result } from '@sectile/core/result';
3
+ export interface TerminalLayerRegistration {
4
+ readonly layer: LayerInput;
5
+ readonly close: (reason: LayerDismissReason | 'ancestor-closed') => void;
6
+ }
7
+ export interface TerminalLayerScope {
8
+ readonly state: LayerStackState;
9
+ open(registration: TerminalLayerRegistration): boolean;
10
+ close(id: string): boolean;
11
+ dismissTop(reason: LayerDismissReason): boolean;
12
+ isTop(id: string): boolean;
13
+ }
14
+ export declare function createLayerStack(): TerminalLayerScope;
15
+ export declare function tryCreateLayerStack(): Result<TerminalLayerScope>;
16
+ //# sourceMappingURL=layer-stack.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layer-stack.d.ts","sourceRoot":"","sources":["../src/layer-stack.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,kBAAkB,EACvB,KAAK,UAAU,EACf,KAAK,eAAe,EACrB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAEnD,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,kBAAkB,GAAG,iBAAiB,KAAK,IAAI,CAAC;CAC1E;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC;IAChC,IAAI,CAAC,YAAY,EAAE,yBAAyB,GAAG,OAAO,CAAC;IACvD,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;IAC3B,UAAU,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC;IAChD,KAAK,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC;CAC5B;AAED,wBAAgB,gBAAgB,IAAI,kBAAkB,CAErD;AAED,wBAAgB,mBAAmB,IAAI,MAAM,CAAC,kBAAkB,CAAC,CAEhE"}
@@ -0,0 +1,49 @@
1
+ import { applyLayerStackEvent, createLayerStackState, getTopLayer, } from '@sectile/core/layer-stack';
2
+ export function createLayerStack() {
3
+ return new ManagedTerminalLayerScope();
4
+ }
5
+ export function tryCreateLayerStack() {
6
+ return { ok: true, value: createLayerStack() };
7
+ }
8
+ class ManagedTerminalLayerScope {
9
+ #state = createLayerStackState();
10
+ #close = new Map();
11
+ get state() { return this.#state; }
12
+ open(registration) {
13
+ const result = applyLayerStackEvent(this.#state, {
14
+ type: 'open-layer',
15
+ layer: registration.layer,
16
+ });
17
+ if (!result.ok)
18
+ return false;
19
+ this.#state = result.value.state;
20
+ this.#close.set(registration.layer.id, registration.close);
21
+ return true;
22
+ }
23
+ close(id) {
24
+ const result = applyLayerStackEvent(this.#state, { type: 'close-layer', id });
25
+ if (!result.ok)
26
+ return false;
27
+ this.#state = result.value.state;
28
+ this.#execute(result.value.commands.map((command) => command.id), id, 'ancestor-closed');
29
+ return true;
30
+ }
31
+ dismissTop(reason) {
32
+ const result = applyLayerStackEvent(this.#state, { type: 'dismiss-top', reason });
33
+ if (!result.ok || result.value.commands.length === 0)
34
+ return false;
35
+ this.#state = result.value.state;
36
+ this.#execute(result.value.commands.map((command) => command.id), undefined, reason);
37
+ return true;
38
+ }
39
+ isTop(id) { return getTopLayer(this.#state)?.id === id; }
40
+ #execute(ids, initiatingID, reason) {
41
+ for (const id of ids) {
42
+ const close = this.#close.get(id);
43
+ this.#close.delete(id);
44
+ if (id !== initiatingID)
45
+ close?.(reason);
46
+ }
47
+ }
48
+ }
49
+ //# sourceMappingURL=layer-stack.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"layer-stack.js","sourceRoot":"","sources":["../src/layer-stack.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,WAAW,GAIZ,MAAM,2BAA2B,CAAC;AAgBnC,MAAM,UAAU,gBAAgB;IAC9B,OAAO,IAAI,yBAAyB,EAAE,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,gBAAgB,EAAE,EAAE,CAAC;AACjD,CAAC;AAED,MAAM,yBAAyB;IAC7B,MAAM,GAAG,qBAAqB,EAAE,CAAC;IACxB,MAAM,GAAG,IAAI,GAAG,EAA8C,CAAC;IACxE,IAAW,KAAK,KAAsB,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IAEpD,IAAI,CAAC,YAAuC;QACjD,MAAM,MAAM,GAAG,oBAAoB,CAAC,IAAI,CAAC,MAAM,EAAE;YAC/C,IAAI,EAAE,YAAY;YAClB,KAAK,EAAE,YAAY,CAAC,KAAK;SAC1B,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,KAAK,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;QACjC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC;QAC3D,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,EAAU;QACrB,MAAM,MAAM,GAAG,oBAAoB,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,EAAE,EAAE,CAAC,CAAC;QAC9E,IAAI,CAAC,MAAM,CAAC,EAAE;YAAE,OAAO,KAAK,CAAC;QAC7B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;QACjC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,iBAAiB,CAAC,CAAC;QACzF,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,UAAU,CAAC,MAA0B;QAC1C,MAAM,MAAM,GAAG,oBAAoB,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,CAAC,CAAC;QAClF,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QACnE,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC;QACjC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QACrF,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,KAAK,CAAC,EAAU,IAAa,OAAO,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC;IAEjF,QAAQ,CACN,GAAsB,EACtB,YAAgC,EAChC,MAA8C;QAE9C,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;YACrB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAClC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACvB,IAAI,EAAE,KAAK,YAAY;gBAAE,KAAK,EAAE,CAAC,MAAM,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC;CACF"}
package/dist/listbox.d.ts CHANGED
@@ -25,6 +25,8 @@ export interface ListboxControllerOptions<ID extends StableID = StableID> {
25
25
  readonly policies?: ListboxPolicies<ID>;
26
26
  readonly selectionMode?: ListboxSelectionMode;
27
27
  readonly orientation?: 'horizontal' | 'vertical';
28
+ readonly activationMode?: 'activate' | 'toggle';
29
+ readonly clearOnEscape?: boolean;
28
30
  readonly disabledItems?: readonly ID[];
29
31
  readonly disabled?: boolean;
30
32
  readonly readOnly?: boolean;
@@ -36,12 +38,17 @@ export interface ListboxControllerOptions<ID extends StableID = StableID> {
36
38
  readonly onValueChange?: (change: ListboxValueChangeDetails<ID>) => void;
37
39
  readonly onHighlightedValueChange?: (change: ListboxHighlightChangeDetails<ID>) => void;
38
40
  }
41
+ export type ListboxControllerValueChangeHandler<ID extends StableID = StableID> = NonNullable<ListboxControllerOptions<ID>['onValueChange']>;
42
+ export type ListboxControllerHighlightedValueChangeHandler<ID extends StableID = StableID> = NonNullable<ListboxControllerOptions<ID>['onHighlightedValueChange']>;
39
43
  export interface ListboxTypeaheadOptions<ID extends StableID = StableID> {
40
44
  readonly textValue: (id: ID) => string;
41
45
  readonly normalize?: (text: string) => string;
42
46
  readonly timeoutMs?: number;
43
47
  readonly now?: () => number;
44
48
  }
49
+ export type ListboxTypeaheadTextValueResolver<ID extends StableID = StableID> = NonNullable<ListboxTypeaheadOptions<ID>['textValue']>;
50
+ export type ListboxTypeaheadNormalizer<ID extends StableID = StableID> = NonNullable<ListboxTypeaheadOptions<ID>['normalize']>;
51
+ export type ListboxTypeaheadClock<ID extends StableID = StableID> = NonNullable<ListboxTypeaheadOptions<ID>['now']>;
45
52
  export interface ListboxControlledValues<ID extends StableID = StableID> {
46
53
  readonly value?: readonly ID[];
47
54
  readonly highlightedValue?: ID | null;
@@ -64,11 +71,15 @@ export interface ListboxConnectionOptions<ID extends StableID = StableID> {
64
71
  readonly disabled?: boolean;
65
72
  readonly readOnly?: boolean;
66
73
  readonly orientation?: 'horizontal' | 'vertical';
74
+ readonly activationMode?: 'activate' | 'toggle';
67
75
  readonly typeahead?: ListboxTypeaheadOptions<ID>;
68
76
  readonly onActivate?: (id: ID) => void;
69
77
  readonly onTransition?: (details: ListboxTransitionDetails<ID>) => void;
70
78
  readonly onUpdate?: () => void;
71
79
  }
80
+ export type ListboxConnectionActivateHandler<ID extends StableID = StableID> = NonNullable<ListboxConnectionOptions<ID>['onActivate']>;
81
+ export type ListboxConnectionTransitionHandler<ID extends StableID = StableID> = NonNullable<ListboxConnectionOptions<ID>['onTransition']>;
82
+ export type ListboxConnectionUpdateHandler<ID extends StableID = StableID> = NonNullable<ListboxConnectionOptions<ID>['onUpdate']>;
72
83
  export interface ListboxConnection<ID extends StableID = StableID> {
73
84
  getSnapshot(): RevisionSnapshot<ListboxState<ID>>;
74
85
  syncControlledValues(values: ListboxControlledValues<ID>): Result<RevisionSnapshot<ListboxState<ID>>>;
@@ -1 +1 @@
1
- {"version":3,"file":"listbox.d.ts","sourceRoot":"","sources":["../src/listbox.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAErF,OAAO,KAAK,EAAE,MAAM,EAAgB,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEpE,OAAO,EAIL,KAAK,cAAc,EACnB,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,oBAAoB,EACzB,KAAK,YAAY,EAElB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAGL,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACtB,MAAM,wBAAwB,CAAC;AAGhC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAE3D,MAAM,MAAM,aAAa,GAAG,qBAAqB,CAAC;AAElD,MAAM,MAAM,aAAa,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ,IACpD;IAAE,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAA;CAAE,GACpD;IAAE,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAAC,QAAQ,CAAC,EAAE,EAAE,EAAE,CAAA;CAAE,CAAC;AAEtD,MAAM,WAAW,yBAAyB,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ;IACvE,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC;IAC9B,QAAQ,CAAC,aAAa,EAAE,SAAS,EAAE,EAAE,CAAC;CACvC;AAED,MAAM,WAAW,6BAA6B,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ;IAC3E,QAAQ,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,CAAC;IAC1B,QAAQ,CAAC,aAAa,EAAE,EAAE,GAAG,IAAI,CAAC;CACnC;AAED,MAAM,WAAW,wBAAwB,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ;IACtE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;IAC9B,QAAQ,CAAC,QAAQ,CAAC,EAAE,eAAe,CAAC,EAAE,CAAC,CAAC;IACxC,QAAQ,CAAC,aAAa,CAAC,EAAE,oBAAoB,CAAC;IAC9C,QAAQ,CAAC,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;IACjD,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,EAAE,CAAC;IACvC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,SAAS,CAAC,EAAE,uBAAuB,CAAC,EAAE,CAAC,CAAC;IACjD,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,EAAE,CAAC;IAC/B,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,EAAE,EAAE,CAAC;IACtC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC;IACtC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC;IAC7C,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,yBAAyB,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC;IACzE,QAAQ,CAAC,wBAAwB,CAAC,EAAE,CAAC,MAAM,EAAE,6BAA6B,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC;CACzF;AAED,MAAM,WAAW,uBAAuB,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ;IACrE,QAAQ,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,MAAM,CAAC;IACvC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,MAAM,CAAC;IAC9C,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;CAC7B;AAED,MAAM,WAAW,uBAAuB,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ;IACrE,QAAQ,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,EAAE,CAAC;IAC/B,QAAQ,CAAC,gBAAgB,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC;CACvC;AAED,MAAM,WAAW,iBAAiB,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ;IAC/D,WAAW,IAAI,gBAAgB,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC;IAClD,oBAAoB,CAClB,MAAM,EAAE,uBAAuB,CAAC,EAAE,CAAC,GAClC,MAAM,CAAC,gBAAgB,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9C,mBAAmB,CACjB,KAAK,EAAE,aAAa,EACpB,gBAAgB,CAAC,EAAE,MAAM,GACxB,cAAc,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC;IACvD,WAAW,CACT,KAAK,EAAE,YAAY,CAAC,EAAE,CAAC,EACvB,gBAAgB,CAAC,EAAE,MAAM,GACxB,cAAc,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC;CACxD;AAED,MAAM,WAAW,wBAAwB,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ;IACtE,QAAQ,CAAC,KAAK,EAAE,YAAY,CAAC,EAAE,CAAC,GAAG;QAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;QAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1F,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,aAAa,CAAC,EAAE,CAAC,CAAC,CAAC;CACtE;AAED,MAAM,WAAW,wBAAwB,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ;IACtE,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC,EAAE,CAAC,CAAC;IAC3C,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,WAAW,CAAC,EAAE,YAAY,GAAG,UAAU,CAAC;IACjD,QAAQ,CAAC,SAAS,CAAC,EAAE,uBAAuB,CAAC,EAAE,CAAC,CAAC;IACjD,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,IAAI,CAAC;IACvC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,wBAAwB,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC;IACxE,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,iBAAiB,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ;IAC/D,WAAW,IAAI,gBAAgB,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC;IAClD,oBAAoB,CAClB,MAAM,EAAE,uBAAuB,CAAC,EAAE,CAAC,GAClC,MAAM,CAAC,gBAAgB,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9C,mBAAmB,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC;IACnD,WAAW,CAAC,KAAK,EAAE,YAAY,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC;CAC/C;AAED,MAAM,MAAM,cAAc,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ,IACvD,IAAI,CAAC,wBAAwB,CAAC,EAAE,CAAC,EAAE,QAAQ,CAAC,GAC1C,IAAI,CAAC,wBAAwB,CAAC,EAAE,CAAC,EAAE,YAAY,CAAC,GAChD;IAAE,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,CAAA;CAAE,CAAC;AAEtC,wBAAgB,uBAAuB,CAAC,EAAE,SAAS,QAAQ,EACzD,OAAO,EAAE,wBAAwB,CAAC,EAAE,CAAC,GACpC,MAAM,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAe/B;AAED,wBAAgB,aAAa,CAAC,EAAE,SAAS,QAAQ,EAC/C,OAAO,EAAE,cAAc,CAAC,EAAE,CAAC,GAC1B,gBAAgB,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAEzC;AAED,wBAAgB,gBAAgB,CAAC,EAAE,SAAS,QAAQ,EAClD,OAAO,EAAE,cAAc,CAAC,EAAE,CAAC,GAC1B,MAAM,CAAC,gBAAgB,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC,CAAC,CAEjD;AAYD,wBAAgB,cAAc,CAAC,EAAE,SAAS,QAAQ,EAChD,OAAO,EAAE,wBAAwB,CAAC,EAAE,CAAC,GACpC,iBAAiB,CAAC,EAAE,CAAC,CAEvB;AAED,wBAAgB,cAAc,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ,EAC3D,KAAK,EAAE,aAAa,EACpB,WAAW,GAAE,YAAY,GAAG,UAAuB,GAClD,YAAY,CAAC,EAAE,CAAC,GAAG,IAAI,CAWzB;AAED,wBAAgB,eAAe,CAAC,EAAE,SAAS,QAAQ,EACjD,OAAO,EAAE,cAAc,CAAC,EAAE,CAAC,GAC1B,aAAa,CAAC,EAAE,CAAC,CAInB"}
1
+ {"version":3,"file":"listbox.d.ts","sourceRoot":"","sources":["../src/listbox.ts"],"names":[],"mappings":"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"}
package/dist/listbox.js CHANGED
@@ -1,19 +1,19 @@
1
1
  import { createFacadeConnection } from './internal/facade.js';
2
2
  import { unwrap } from '@sectile/core/result';
3
- import { createInteractionState, requireInteraction } from '@sectile/core/interaction';
4
- import { applyListboxEvent, createListboxState, findListboxTypeaheadMatch, } from '@sectile/core/listbox';
5
- import { createSequence } from '@sectile/core/sequence';
6
- import { createRevisionSnapshot, rejectRevisionInput, } from '@sectile/core/revision';
3
+ import { tryCreateInteractionState, requireInteraction } from '@sectile/core/interaction';
4
+ import { applyListboxEvent, tryCreateListboxState, findListboxTypeaheadMatch, } from '@sectile/core/listbox';
5
+ import { tryCreateSequence } from '@sectile/core/sequence';
6
+ import { tryCreateRevisionSnapshot, rejectRevisionInput, } from '@sectile/core/revision';
7
7
  import { applyControllerEvent, synchronizeControllerState } from './internal/controller.js';
8
8
  import { createDisabledItems } from './internal/disabled-items.js';
9
9
  export function createListboxController(options) {
10
10
  const policies = listboxPolicies(options);
11
11
  if (!policies.ok)
12
12
  return policies;
13
- const interaction = createInteractionState(options);
13
+ const interaction = tryCreateInteractionState(options);
14
14
  if (!interaction.ok)
15
15
  return interaction;
16
- const initial = createListboxState(options.domain, {
16
+ const initial = tryCreateListboxState(options.domain, {
17
17
  selected: options.value ?? options.defaultValue ?? [],
18
18
  current: options.highlightedValue !== undefined
19
19
  ? options.highlightedValue
@@ -21,7 +21,7 @@ export function createListboxController(options) {
21
21
  }, options.selectionMode ?? options.policies?.selectionMode ?? 'multiple');
22
22
  if (!initial.ok)
23
23
  return initial;
24
- const snapshot = createRevisionSnapshot(initial.value);
24
+ const snapshot = tryCreateRevisionSnapshot(initial.value);
25
25
  if (!snapshot.ok)
26
26
  return snapshot;
27
27
  return { ok: true, value: new TerminalListboxController(options, policies.value, interaction.value, snapshot.value) };
@@ -33,7 +33,7 @@ export function tryCreateListbox(options) {
33
33
  return createFacadeConnection(options, (options) => tryCreateListboxConnection(options));
34
34
  }
35
35
  function tryCreateListboxConnection(options) {
36
- const domain = createSequence(options.items);
36
+ const domain = tryCreateSequence(options.items);
37
37
  if (!domain.ok)
38
38
  return domain;
39
39
  const controller = createListboxController({ ...options, domain: domain.value });
@@ -133,6 +133,8 @@ class TerminalListboxController {
133
133
  #interaction;
134
134
  #selectionMode;
135
135
  #orientation;
136
+ #activationMode;
137
+ #clearOnEscape;
136
138
  #typeahead;
137
139
  #valueControlled;
138
140
  #highlightControlled;
@@ -147,6 +149,8 @@ class TerminalListboxController {
147
149
  this.#interaction = interaction;
148
150
  this.#selectionMode = policies.selectionMode ?? 'multiple';
149
151
  this.#orientation = options.orientation ?? 'vertical';
152
+ this.#activationMode = options.activationMode ?? 'activate';
153
+ this.#clearOnEscape = options.clearOnEscape ?? true;
150
154
  this.#typeahead = options.typeahead;
151
155
  this.#valueControlled = options.value !== undefined;
152
156
  this.#highlightControlled = options.highlightedValue !== undefined;
@@ -171,7 +175,7 @@ class TerminalListboxController {
171
175
  const inputError = controlledInputError(this.#valueControlled, this.#highlightControlled, values);
172
176
  if (inputError !== null)
173
177
  return { ok: false, error: inputError };
174
- const state = createListboxState(this.#domain, {
178
+ const state = tryCreateListboxState(this.#domain, {
175
179
  selected: this.#valueControlled
176
180
  ? values.value
177
181
  : this.#snapshot.state.selection.selected,
@@ -190,7 +194,10 @@ class TerminalListboxController {
190
194
  const permitted = requireInteraction(this.#interaction, 'navigate');
191
195
  if (!permitted.ok)
192
196
  return rejectRevisionInput(this.#snapshot, permitted.error);
193
- const event = toListboxEvent(input, this.#orientation);
197
+ const mapped = toListboxEvent(input, this.#orientation);
198
+ const event = mapped === 'activate' && this.#activationMode === 'toggle'
199
+ ? 'toggle'
200
+ : mapped === 'clear' && !this.#clearOnEscape ? null : mapped;
194
201
  if (event !== null)
195
202
  return this.handleEvent(event, expectedRevision);
196
203
  const queryPart = printableText(input);
@@ -262,7 +269,7 @@ function controlledState(domain, previous, proposed, valueControlled, highlightC
262
269
  anchor: proposed.selection.anchor,
263
270
  current: highlightControlled ? previous.cursor.current : proposed.cursor.current,
264
271
  };
265
- return createListboxState(domain, input, selectionMode);
272
+ return tryCreateListboxState(domain, input, selectionMode);
266
273
  }
267
274
  function listboxPolicies(options) {
268
275
  const disabled = createDisabledItems(options.domain, options.disabledItems);