@sectile/terminal 0.1.0 → 0.2.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 (222) hide show
  1. package/README.md +15 -1
  2. package/package.json +103 -3
  3. package/dist/accordion.d.ts +0 -31
  4. package/dist/accordion.d.ts.map +0 -1
  5. package/dist/accordion.js +0 -76
  6. package/dist/accordion.js.map +0 -1
  7. package/dist/alert-dialog.d.ts +0 -18
  8. package/dist/alert-dialog.d.ts.map +0 -1
  9. package/dist/alert-dialog.js +0 -12
  10. package/dist/alert-dialog.js.map +0 -1
  11. package/dist/calendar.d.ts +0 -75
  12. package/dist/calendar.d.ts.map +0 -1
  13. package/dist/calendar.js +0 -217
  14. package/dist/calendar.js.map +0 -1
  15. package/dist/carousel.d.ts +0 -44
  16. package/dist/carousel.d.ts.map +0 -1
  17. package/dist/carousel.js +0 -129
  18. package/dist/carousel.js.map +0 -1
  19. package/dist/checkbox-group.d.ts +0 -19
  20. package/dist/checkbox-group.d.ts.map +0 -1
  21. package/dist/checkbox-group.js +0 -14
  22. package/dist/checkbox-group.js.map +0 -1
  23. package/dist/checkbox.d.ts +0 -17
  24. package/dist/checkbox.d.ts.map +0 -1
  25. package/dist/checkbox.js +0 -12
  26. package/dist/checkbox.js.map +0 -1
  27. package/dist/combobox.d.ts +0 -100
  28. package/dist/combobox.d.ts.map +0 -1
  29. package/dist/combobox.js +0 -286
  30. package/dist/combobox.js.map +0 -1
  31. package/dist/date-field.d.ts +0 -36
  32. package/dist/date-field.d.ts.map +0 -1
  33. package/dist/date-field.js +0 -46
  34. package/dist/date-field.js.map +0 -1
  35. package/dist/date-picker.d.ts +0 -38
  36. package/dist/date-picker.d.ts.map +0 -1
  37. package/dist/date-picker.js +0 -40
  38. package/dist/date-picker.js.map +0 -1
  39. package/dist/date-range-picker.d.ts +0 -38
  40. package/dist/date-range-picker.d.ts.map +0 -1
  41. package/dist/date-range-picker.js +0 -29
  42. package/dist/date-range-picker.js.map +0 -1
  43. package/dist/date-time-field.d.ts +0 -36
  44. package/dist/date-time-field.d.ts.map +0 -1
  45. package/dist/date-time-field.js +0 -133
  46. package/dist/date-time-field.js.map +0 -1
  47. package/dist/date-time-picker.d.ts +0 -38
  48. package/dist/date-time-picker.d.ts.map +0 -1
  49. package/dist/date-time-picker.js +0 -127
  50. package/dist/date-time-picker.js.map +0 -1
  51. package/dist/date-time-range-picker.d.ts +0 -38
  52. package/dist/date-time-range-picker.d.ts.map +0 -1
  53. package/dist/date-time-range-picker.js +0 -136
  54. package/dist/date-time-range-picker.js.map +0 -1
  55. package/dist/dialog.d.ts +0 -17
  56. package/dist/dialog.d.ts.map +0 -1
  57. package/dist/dialog.js +0 -12
  58. package/dist/dialog.js.map +0 -1
  59. package/dist/disclosure.d.ts +0 -22
  60. package/dist/disclosure.d.ts.map +0 -1
  61. package/dist/disclosure.js +0 -56
  62. package/dist/disclosure.js.map +0 -1
  63. package/dist/feed.d.ts +0 -28
  64. package/dist/feed.d.ts.map +0 -1
  65. package/dist/feed.js +0 -32
  66. package/dist/feed.js.map +0 -1
  67. package/dist/grid.d.ts +0 -40
  68. package/dist/grid.d.ts.map +0 -1
  69. package/dist/grid.js +0 -68
  70. package/dist/grid.js.map +0 -1
  71. package/dist/index.d.ts +0 -46
  72. package/dist/index.d.ts.map +0 -1
  73. package/dist/index.js +0 -44
  74. package/dist/index.js.map +0 -1
  75. package/dist/internal/checked-control.d.ts +0 -23
  76. package/dist/internal/checked-control.d.ts.map +0 -1
  77. package/dist/internal/checked-control.js +0 -22
  78. package/dist/internal/checked-control.js.map +0 -1
  79. package/dist/internal/controller.d.ts +0 -6
  80. package/dist/internal/controller.d.ts.map +0 -1
  81. package/dist/internal/controller.js +0 -35
  82. package/dist/internal/controller.js.map +0 -1
  83. package/dist/internal/disabled-items.d.ts +0 -6
  84. package/dist/internal/disabled-items.d.ts.map +0 -1
  85. package/dist/internal/disabled-items.js +0 -15
  86. package/dist/internal/disabled-items.js.map +0 -1
  87. package/dist/internal/facade.d.ts +0 -44
  88. package/dist/internal/facade.d.ts.map +0 -1
  89. package/dist/internal/facade.js +0 -58
  90. package/dist/internal/facade.js.map +0 -1
  91. package/dist/internal/menu-control.d.ts +0 -34
  92. package/dist/internal/menu-control.d.ts.map +0 -1
  93. package/dist/internal/menu-control.js +0 -48
  94. package/dist/internal/menu-control.js.map +0 -1
  95. package/dist/internal/popup-control.d.ts +0 -24
  96. package/dist/internal/popup-control.d.ts.map +0 -1
  97. package/dist/internal/popup-control.js +0 -23
  98. package/dist/internal/popup-control.js.map +0 -1
  99. package/dist/internal/semantic-controller.d.ts +0 -20
  100. package/dist/internal/semantic-controller.d.ts.map +0 -1
  101. package/dist/internal/semantic-controller.js +0 -42
  102. package/dist/internal/semantic-controller.js.map +0 -1
  103. package/dist/internal/text-input.d.ts +0 -5
  104. package/dist/internal/text-input.d.ts.map +0 -1
  105. package/dist/internal/text-input.js +0 -53
  106. package/dist/internal/text-input.js.map +0 -1
  107. package/dist/keyboard.d.ts +0 -10
  108. package/dist/keyboard.d.ts.map +0 -1
  109. package/dist/keyboard.js +0 -16
  110. package/dist/keyboard.js.map +0 -1
  111. package/dist/layout.d.ts +0 -2
  112. package/dist/layout.d.ts.map +0 -1
  113. package/dist/layout.js +0 -24
  114. package/dist/layout.js.map +0 -1
  115. package/dist/listbox.d.ts +0 -87
  116. package/dist/listbox.d.ts.map +0 -1
  117. package/dist/listbox.js +0 -323
  118. package/dist/listbox.js.map +0 -1
  119. package/dist/menu-button.d.ts +0 -8
  120. package/dist/menu-button.d.ts.map +0 -1
  121. package/dist/menu-button.js +0 -11
  122. package/dist/menu-button.js.map +0 -1
  123. package/dist/menu.d.ts +0 -8
  124. package/dist/menu.d.ts.map +0 -1
  125. package/dist/menu.js +0 -11
  126. package/dist/menu.js.map +0 -1
  127. package/dist/menubar.d.ts +0 -8
  128. package/dist/menubar.d.ts.map +0 -1
  129. package/dist/menubar.js +0 -11
  130. package/dist/menubar.js.map +0 -1
  131. package/dist/multi-thumb-slider.d.ts +0 -32
  132. package/dist/multi-thumb-slider.d.ts.map +0 -1
  133. package/dist/multi-thumb-slider.js +0 -67
  134. package/dist/multi-thumb-slider.js.map +0 -1
  135. package/dist/node.d.ts +0 -15
  136. package/dist/node.d.ts.map +0 -1
  137. package/dist/node.js +0 -78
  138. package/dist/node.js.map +0 -1
  139. package/dist/number-field.d.ts +0 -44
  140. package/dist/number-field.d.ts.map +0 -1
  141. package/dist/number-field.js +0 -157
  142. package/dist/number-field.js.map +0 -1
  143. package/dist/pagination.d.ts +0 -35
  144. package/dist/pagination.d.ts.map +0 -1
  145. package/dist/pagination.js +0 -103
  146. package/dist/pagination.js.map +0 -1
  147. package/dist/pin-input.d.ts +0 -25
  148. package/dist/pin-input.d.ts.map +0 -1
  149. package/dist/pin-input.js +0 -30
  150. package/dist/pin-input.js.map +0 -1
  151. package/dist/quantity-field.d.ts +0 -45
  152. package/dist/quantity-field.d.ts.map +0 -1
  153. package/dist/quantity-field.js +0 -168
  154. package/dist/quantity-field.js.map +0 -1
  155. package/dist/radio-group.d.ts +0 -37
  156. package/dist/radio-group.d.ts.map +0 -1
  157. package/dist/radio-group.js +0 -126
  158. package/dist/radio-group.js.map +0 -1
  159. package/dist/rating.d.ts +0 -22
  160. package/dist/rating.d.ts.map +0 -1
  161. package/dist/rating.js +0 -38
  162. package/dist/rating.js.map +0 -1
  163. package/dist/select.d.ts +0 -41
  164. package/dist/select.d.ts.map +0 -1
  165. package/dist/select.js +0 -50
  166. package/dist/select.js.map +0 -1
  167. package/dist/slider.d.ts +0 -59
  168. package/dist/slider.d.ts.map +0 -1
  169. package/dist/slider.js +0 -156
  170. package/dist/slider.js.map +0 -1
  171. package/dist/spin-button.d.ts +0 -35
  172. package/dist/spin-button.d.ts.map +0 -1
  173. package/dist/spin-button.js +0 -78
  174. package/dist/spin-button.js.map +0 -1
  175. package/dist/stepper.d.ts +0 -19
  176. package/dist/stepper.d.ts.map +0 -1
  177. package/dist/stepper.js +0 -14
  178. package/dist/stepper.js.map +0 -1
  179. package/dist/switch.d.ts +0 -15
  180. package/dist/switch.d.ts.map +0 -1
  181. package/dist/switch.js +0 -12
  182. package/dist/switch.js.map +0 -1
  183. package/dist/tabs.d.ts +0 -42
  184. package/dist/tabs.d.ts.map +0 -1
  185. package/dist/tabs.js +0 -128
  186. package/dist/tabs.js.map +0 -1
  187. package/dist/tags-input.d.ts +0 -29
  188. package/dist/tags-input.d.ts.map +0 -1
  189. package/dist/tags-input.js +0 -27
  190. package/dist/tags-input.js.map +0 -1
  191. package/dist/text.d.ts +0 -60
  192. package/dist/text.d.ts.map +0 -1
  193. package/dist/text.js +0 -143
  194. package/dist/text.js.map +0 -1
  195. package/dist/time-field.d.ts +0 -36
  196. package/dist/time-field.d.ts.map +0 -1
  197. package/dist/time-field.js +0 -40
  198. package/dist/time-field.js.map +0 -1
  199. package/dist/toggle-button.d.ts +0 -15
  200. package/dist/toggle-button.d.ts.map +0 -1
  201. package/dist/toggle-button.js +0 -12
  202. package/dist/toggle-button.js.map +0 -1
  203. package/dist/toolbar.d.ts +0 -34
  204. package/dist/toolbar.d.ts.map +0 -1
  205. package/dist/toolbar.js +0 -108
  206. package/dist/toolbar.js.map +0 -1
  207. package/dist/tooltip.d.ts +0 -15
  208. package/dist/tooltip.d.ts.map +0 -1
  209. package/dist/tooltip.js +0 -12
  210. package/dist/tooltip.js.map +0 -1
  211. package/dist/tree-grid.d.ts +0 -94
  212. package/dist/tree-grid.d.ts.map +0 -1
  213. package/dist/tree-grid.js +0 -308
  214. package/dist/tree-grid.js.map +0 -1
  215. package/dist/tree-view.d.ts +0 -75
  216. package/dist/tree-view.d.ts.map +0 -1
  217. package/dist/tree-view.js +0 -213
  218. package/dist/tree-view.js.map +0 -1
  219. package/dist/window-splitter.d.ts +0 -19
  220. package/dist/window-splitter.d.ts.map +0 -1
  221. package/dist/window-splitter.js +0 -48
  222. package/dist/window-splitter.js.map +0 -1
package/README.md CHANGED
@@ -8,8 +8,22 @@ Terminal bindings for Sectile interaction semantics.
8
8
  - Own controlled or uncontrolled runtime synchronization
9
9
  - Preserve grapheme-safe editing and rendered Unicode width
10
10
  - Provide optional Node TTY integration
11
+ - Provide optional semantic appearance, screen layout, caret projection, and partial screen updates
11
12
 
12
- The package does not provide a terminal component framework, visual theme, screen layout, or application data. Consumers render their own interface from connection state and effects.
13
+ The package does not prescribe an application theme or component markup and does not own application data. Consumers can render connections directly or compose the optional `appearance` and `screen` subpaths into rows, columns, boxes, and text regions.
14
+
15
+ ## Keyboard conventions
16
+
17
+ Bindings follow the shape rendered by the terminal host:
18
+
19
+ - Vertical collections use Up and Down.
20
+ - Horizontal collections use Left and Right.
21
+ - A vertical hierarchy uses Right to open or enter, and Left or Escape to return.
22
+ - Home and End move within the current level.
23
+ - Enter or Space opens a branch or activates a leaf command.
24
+ - Printable text performs typeahead when the connection receives a `textValue` function.
25
+
26
+ Individual connections document any additional editing, paging, or range keys they own.
13
27
 
14
28
  ## API shape
15
29
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sectile/terminal",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "Terminal host adapters for Sectile semantic interaction machines.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -13,7 +13,7 @@
13
13
  },
14
14
  "repository": {
15
15
  "type": "git",
16
- "url": "https://github.com/jinyongp/sectile.git",
16
+ "url": "https://github.com/sectile/sectile.git",
17
17
  "directory": "packages/terminal"
18
18
  },
19
19
  "types": "./dist/index.d.ts",
@@ -28,6 +28,21 @@
28
28
  "import": "./dist/listbox.js",
29
29
  "default": "./dist/listbox.js"
30
30
  },
31
+ "./form": {
32
+ "types": "./dist/form.d.ts",
33
+ "import": "./dist/form.js",
34
+ "default": "./dist/form.js"
35
+ },
36
+ "./reorder": {
37
+ "types": "./dist/reorder.d.ts",
38
+ "import": "./dist/reorder.js",
39
+ "default": "./dist/reorder.js"
40
+ },
41
+ "./layer-stack": {
42
+ "types": "./dist/layer-stack.d.ts",
43
+ "import": "./dist/layer-stack.js",
44
+ "default": "./dist/layer-stack.js"
45
+ },
31
46
  "./checkbox-group": {
32
47
  "types": "./dist/checkbox-group.d.ts",
33
48
  "import": "./dist/checkbox-group.js",
@@ -108,6 +123,11 @@
108
123
  "import": "./dist/toggle-button.js",
109
124
  "default": "./dist/toggle-button.js"
110
125
  },
126
+ "./toggle-group": {
127
+ "types": "./dist/toggle-group.d.ts",
128
+ "import": "./dist/toggle-group.js",
129
+ "default": "./dist/toggle-group.js"
130
+ },
111
131
  "./window-splitter": {
112
132
  "types": "./dist/window-splitter.d.ts",
113
133
  "import": "./dist/window-splitter.js",
@@ -138,6 +158,11 @@
138
158
  "import": "./dist/time-field.js",
139
159
  "default": "./dist/time-field.js"
140
160
  },
161
+ "./time-range-field": {
162
+ "types": "./dist/time-range-field.d.ts",
163
+ "import": "./dist/time-range-field.js",
164
+ "default": "./dist/time-range-field.js"
165
+ },
141
166
  "./date-picker": {
142
167
  "types": "./dist/date-picker.d.ts",
143
168
  "import": "./dist/date-picker.js",
@@ -148,6 +173,31 @@
148
173
  "import": "./dist/date-range-picker.js",
149
174
  "default": "./dist/date-range-picker.js"
150
175
  },
176
+ "./range-calendar": {
177
+ "types": "./dist/range-calendar.d.ts",
178
+ "import": "./dist/range-calendar.js",
179
+ "default": "./dist/range-calendar.js"
180
+ },
181
+ "./month-picker": {
182
+ "types": "./dist/month-picker.d.ts",
183
+ "import": "./dist/month-picker.js",
184
+ "default": "./dist/month-picker.js"
185
+ },
186
+ "./month-range-picker": {
187
+ "types": "./dist/month-range-picker.d.ts",
188
+ "import": "./dist/month-range-picker.js",
189
+ "default": "./dist/month-range-picker.js"
190
+ },
191
+ "./year-picker": {
192
+ "types": "./dist/year-picker.d.ts",
193
+ "import": "./dist/year-picker.js",
194
+ "default": "./dist/year-picker.js"
195
+ },
196
+ "./year-range-picker": {
197
+ "types": "./dist/year-range-picker.d.ts",
198
+ "import": "./dist/year-range-picker.js",
199
+ "default": "./dist/year-range-picker.js"
200
+ },
151
201
  "./date-time-picker": {
152
202
  "types": "./dist/date-time-picker.d.ts",
153
203
  "import": "./dist/date-time-picker.js",
@@ -168,6 +218,31 @@
168
218
  "import": "./dist/dialog.js",
169
219
  "default": "./dist/dialog.js"
170
220
  },
221
+ "./popover": {
222
+ "types": "./dist/popover.d.ts",
223
+ "import": "./dist/popover.js",
224
+ "default": "./dist/popover.js"
225
+ },
226
+ "./toast": {
227
+ "types": "./dist/toast.d.ts",
228
+ "import": "./dist/toast.js",
229
+ "default": "./dist/toast.js"
230
+ },
231
+ "./timer": {
232
+ "types": "./dist/timer.d.ts",
233
+ "import": "./dist/timer.js",
234
+ "default": "./dist/timer.js"
235
+ },
236
+ "./cascade-select": {
237
+ "types": "./dist/cascade-select.d.ts",
238
+ "import": "./dist/cascade-select.js",
239
+ "default": "./dist/cascade-select.js"
240
+ },
241
+ "./color-picker": {
242
+ "types": "./dist/color-picker.d.ts",
243
+ "import": "./dist/color-picker.js",
244
+ "default": "./dist/color-picker.js"
245
+ },
171
246
  "./alert-dialog": {
172
247
  "types": "./dist/alert-dialog.d.ts",
173
248
  "import": "./dist/alert-dialog.js",
@@ -193,6 +268,11 @@
193
268
  "import": "./dist/menubar.js",
194
269
  "default": "./dist/menubar.js"
195
270
  },
271
+ "./navigation-menu": {
272
+ "types": "./dist/navigation-menu.d.ts",
273
+ "import": "./dist/navigation-menu.js",
274
+ "default": "./dist/navigation-menu.js"
275
+ },
196
276
  "./menu-button": {
197
277
  "types": "./dist/menu-button.d.ts",
198
278
  "import": "./dist/menu-button.js",
@@ -238,11 +318,21 @@
238
318
  "import": "./dist/keyboard.js",
239
319
  "default": "./dist/keyboard.js"
240
320
  },
321
+ "./appearance": {
322
+ "types": "./dist/appearance.d.ts",
323
+ "import": "./dist/appearance.js",
324
+ "default": "./dist/appearance.js"
325
+ },
241
326
  "./layout": {
242
327
  "types": "./dist/layout.d.ts",
243
328
  "import": "./dist/layout.js",
244
329
  "default": "./dist/layout.js"
245
330
  },
331
+ "./screen": {
332
+ "types": "./dist/screen.d.ts",
333
+ "import": "./dist/screen.js",
334
+ "default": "./dist/screen.js"
335
+ },
246
336
  "./node": {
247
337
  "types": "./dist/node.d.ts",
248
338
  "import": "./dist/node.js",
@@ -253,11 +343,21 @@
253
343
  "import": "./dist/text.js",
254
344
  "default": "./dist/text.js"
255
345
  },
346
+ "./date-range-field": {
347
+ "types": "./dist/date-range-field.d.ts",
348
+ "import": "./dist/date-range-field.js",
349
+ "default": "./dist/date-range-field.js"
350
+ },
351
+ "./editable": {
352
+ "types": "./dist/editable.d.ts",
353
+ "import": "./dist/editable.js",
354
+ "default": "./dist/editable.js"
355
+ },
256
356
  "./package.json": "./package.json"
257
357
  },
258
358
  "dependencies": {
259
359
  "string-width": "8.1.0",
260
- "@sectile/core": "0.1.0"
360
+ "@sectile/core": "0.2.0"
261
361
  },
262
362
  "devDependencies": {
263
363
  "@types/node": "26.2.0",
@@ -1,31 +0,0 @@
1
- import { type FacadeConnection } from './internal/facade.js';
2
- import type { Result, StableID } from '@sectile/core';
3
- import type { RevisionSnapshot } from '@sectile/core/revision';
4
- import { type AccordionEvent, type AccordionPolicies, type AccordionState } from '@sectile/core/accordion';
5
- import type { TerminalKeyboardInput } from './keyboard.js';
6
- export interface AccordionOptions<ID extends StableID = StableID> {
7
- readonly items: readonly ID[];
8
- readonly policies?: AccordionPolicies<ID>;
9
- readonly disabledItems?: readonly ID[];
10
- readonly disabled?: boolean;
11
- readonly openIDs?: readonly ID[];
12
- readonly defaultOpenIDs?: readonly ID[];
13
- readonly highlightedValue?: ID | null;
14
- readonly defaultHighlightedValue?: ID | null;
15
- readonly onOpenChange?: (openIDs: readonly ID[]) => void;
16
- readonly onHighlightedValueChange?: (value: ID | null) => void;
17
- readonly onUpdate?: () => void;
18
- }
19
- export interface AccordionConnection<ID extends StableID = StableID> {
20
- getSnapshot(): RevisionSnapshot<AccordionState<ID>>;
21
- syncControlledValues(values: {
22
- readonly openIDs?: readonly ID[];
23
- readonly highlightedValue?: ID | null;
24
- }): Result<RevisionSnapshot<AccordionState<ID>>>;
25
- handleEvent(event: AccordionEvent<ID>): boolean;
26
- handleKeyboardInput(input: TerminalKeyboardInput): boolean;
27
- }
28
- export declare function createAccordion<ID extends StableID>(options: AccordionOptions<ID>): FacadeConnection<AccordionConnection<ID>>;
29
- export declare function tryCreateAccordion<ID extends StableID>(options: AccordionOptions<ID>): Result<FacadeConnection<AccordionConnection<ID>>>;
30
- export declare function toAccordionEvent<ID extends StableID = StableID>(input: TerminalKeyboardInput): AccordionEvent<ID> | null;
31
- //# sourceMappingURL=accordion.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"accordion.d.ts","sourceRoot":"","sources":["../src/accordion.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAErF,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAoE,KAAK,cAAc,EAAE,KAAK,iBAAiB,EAAE,KAAK,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAC7K,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAI3D,MAAM,WAAW,gBAAgB,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ;IAC9D,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,iBAAiB,CAAC,EAAE,CAAC,CAAC;IAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,SAAS,EAAE,EAAE,CAAC;IACjH,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,EAAE,CAAC;IAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,SAAS,EAAE,EAAE,CAAC;IAC1E,QAAQ,CAAC,gBAAgB,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC;IAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC;IACpF,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,KAAK,IAAI,CAAC;IACzD,QAAQ,CAAC,wBAAwB,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,IAAI,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CAChG;AACD,MAAM,WAAW,mBAAmB,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ;IACjE,WAAW,IAAI,gBAAgB,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC;IACpD,oBAAoB,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,EAAE,CAAC;QAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,EAAE,GAAG,IAAI,CAAA;KAAE,GAAG,MAAM,CAAC,gBAAgB,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACxJ,WAAW,CAAC,KAAK,EAAE,cAAc,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC;IAAC,mBAAmB,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC;CAC7G;AACD,wBAAgB,eAAe,CAAC,EAAE,SAAS,QAAQ,EAAE,OAAO,EAAE,gBAAgB,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAE7H;AAED,wBAAgB,kBAAkB,CAAC,EAAE,SAAS,QAAQ,EAAE,OAAO,EAAE,gBAAgB,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,gBAAgB,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC,CAAC,CAExI;AAoBD,wBAAgB,gBAAgB,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ,EAAE,KAAK,EAAE,qBAAqB,GAAG,cAAc,CAAC,EAAE,CAAC,GAAG,IAAI,CAExH"}
package/dist/accordion.js DELETED
@@ -1,76 +0,0 @@
1
- import { createFacadeConnection } from './internal/facade.js';
2
- import { unwrap } from '@sectile/core/result';
3
- import { createSequence } from '@sectile/core/sequence';
4
- import { applyAccordionEvent, createAccordionState } from '@sectile/core/accordion';
5
- import { createSemanticController } from './internal/semantic-controller.js';
6
- import { createDisabledItems } from './internal/disabled-items.js';
7
- export function createAccordion(options) {
8
- return unwrap(tryCreateAccordion(options));
9
- }
10
- export function tryCreateAccordion(options) {
11
- return createFacadeConnection(options, (options) => tryCreateAccordionConnection(options));
12
- }
13
- function tryCreateAccordionConnection(options) {
14
- const domain = createSequence(options.items);
15
- if (!domain.ok)
16
- return domain;
17
- const disabled = createDisabledItems(domain.value, options.disabledItems);
18
- if (!disabled.ok)
19
- return disabled;
20
- const suppliedEligibility = options.policies?.eligible;
21
- const policies = Object.freeze({ ...options.policies, eligible: (id) => !disabled.value.has(id) && (suppliedEligibility?.(id) ?? true) });
22
- const openControlled = options.openIDs !== undefined;
23
- const highlightControlled = options.highlightedValue !== undefined;
24
- const initialOpen = options.openIDs ?? options.defaultOpenIDs ?? (options.policies?.collapsible === false && options.items[0] !== undefined ? [options.items[0]] : []);
25
- const runtime = createSemanticController({
26
- initial: createAccordionState(domain.value, { openIDs: initialOpen, current: options.highlightedValue !== undefined ? options.highlightedValue : options.defaultHighlightedValue ?? null }, policies),
27
- reducer: (state, event) => applyAccordionEvent(domain.value, state, event, policies),
28
- reconcile: (previous, proposed) => createAccordionState(domain.value, { openIDs: openControlled ? previous.openIDs : proposed.openIDs, current: highlightControlled ? previous.cursor.current : proposed.cursor.current }, policies),
29
- notify: (previous, proposed) => { if (!sameIDs(previous.openIDs, proposed.openIDs))
30
- options.onOpenChange?.(proposed.openIDs); if (previous.cursor.current !== proposed.cursor.current)
31
- options.onHighlightedValueChange?.(proposed.cursor.current); },
32
- toEffect: (command) => command,
33
- interaction: options,
34
- });
35
- if (!runtime.ok)
36
- return runtime;
37
- return { ok: true, value: new TerminalAccordionConnection(options, domain.value, runtime.value, openControlled, highlightControlled, policies) };
38
- }
39
- export function toAccordionEvent(input) {
40
- if (input.key === 'down')
41
- return 'next';
42
- if (input.key === 'up')
43
- return 'previous';
44
- if (input.key === 'home')
45
- return 'first';
46
- if (input.key === 'end')
47
- return 'last';
48
- if (input.key === 'enter' || input.key === 'space')
49
- return 'toggle';
50
- return null;
51
- }
52
- class TerminalAccordionConnection {
53
- #options;
54
- #domain;
55
- #runtime;
56
- #openControlled;
57
- #highlightControlled;
58
- #policies;
59
- constructor(options, domain, runtime, openControlled, highlightControlled, policies) { this.#options = options; this.#domain = domain; this.#runtime = runtime; this.#openControlled = openControlled; this.#highlightControlled = highlightControlled; this.#policies = policies; }
60
- getSnapshot() { return this.#runtime.getSnapshot(); }
61
- syncControlledValues(values) {
62
- if (this.#openControlled !== (values.openIDs !== undefined) || this.#highlightControlled !== (values.highlightedValue !== undefined))
63
- return { ok: false, error: { class: 'construction', code: 'controlled-shape-mismatch', message: 'Controlled accordion values must preserve their construction-time shape.' } };
64
- const state = this.#runtime.getSnapshot().state;
65
- const result = this.#runtime.replace(createAccordionState(this.#domain, { openIDs: this.#openControlled ? values.openIDs : state.openIDs, current: this.#highlightControlled ? values.highlightedValue : state.cursor.current }, this.#policies));
66
- if (result.ok)
67
- this.#options.onUpdate?.();
68
- return result;
69
- }
70
- handleEvent(event) { const result = this.#runtime.handle(event); if (result.ok)
71
- this.#options.onUpdate?.(); return result.ok; }
72
- handleKeyboardInput(input) { const event = toAccordionEvent(input); if (event === null)
73
- return false; return this.handleEvent(event); }
74
- }
75
- function sameIDs(left, right) { return left.length === right.length && left.every((id, index) => id === right[index]); }
76
- //# sourceMappingURL=accordion.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"accordion.js","sourceRoot":"","sources":["../src/accordion.ts"],"names":[],"mappings":"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"}
@@ -1,18 +0,0 @@
1
- import { type FacadeConnection } from './internal/facade.js';
2
- import type { Result } from '@sectile/core';
3
- import { type AlertDialogEvent, type AlertDialogState } from '@sectile/core/alert-dialog';
4
- import { type TerminalPopupConnection } from './internal/popup-control.js';
5
- export interface AlertDialogOptions {
6
- readonly open?: boolean;
7
- readonly defaultOpen?: boolean;
8
- readonly disabled?: boolean;
9
- readonly onOpenChange?: (open: boolean) => void;
10
- readonly onInitialFocus?: () => void;
11
- readonly onFocusRestore?: () => void;
12
- readonly onAnnounce?: () => void;
13
- readonly onUpdate?: () => void;
14
- }
15
- export type AlertDialogConnection = TerminalPopupConnection<AlertDialogState, AlertDialogEvent>;
16
- export declare function createAlertDialog(o?: AlertDialogOptions): FacadeConnection<AlertDialogConnection>;
17
- export declare function tryCreateAlertDialog(o?: AlertDialogOptions): Result<FacadeConnection<AlertDialogConnection>>;
18
- //# sourceMappingURL=alert-dialog.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"alert-dialog.d.ts","sourceRoot":"","sources":["../src/alert-dialog.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAErF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAA0E,KAAK,gBAAgB,EAAE,KAAK,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAClK,OAAO,EAAuB,KAAK,uBAAuB,EAAE,MAAM,6BAA6B,CAAC;AAChG,MAAM,WAAW,kBAAkB;IAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;CAAE;AAC3T,MAAM,MAAM,qBAAqB,GAAG,uBAAuB,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;AAChG,wBAAgB,iBAAiB,CAAC,CAAC,GAAE,kBAAuB,GAAG,gBAAgB,CAAC,qBAAqB,CAAC,CAErG;AAED,wBAAgB,oBAAoB,CAAC,CAAC,GAAE,kBAAuB,GAAG,MAAM,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,CAAC,CAEhH"}
@@ -1,12 +0,0 @@
1
- import { createFacadeConnection } from './internal/facade.js';
2
- import { unwrap } from '@sectile/core/result';
3
- import { applyAlertDialogEvent, createAlertDialogState } from '@sectile/core/alert-dialog';
4
- import { createTerminalPopup } from './internal/popup-control.js';
5
- export function createAlertDialog(o = {}) {
6
- return unwrap(tryCreateAlertDialog(o));
7
- }
8
- export function tryCreateAlertDialog(o = {}) {
9
- return createFacadeConnection(o, (o) => tryCreateAlertDialogConnection(o));
10
- }
11
- function tryCreateAlertDialogConnection(o = {}) { return createTerminalPopup({ controlled: o.open !== undefined, initial: createAlertDialogState(o.open ?? o.defaultOpen ?? false), reducer: applyAlertDialogEvent, create: createAlertDialogState, read: (s) => s.open, close: 'close', interaction: o, onOpenChange: o.onOpenChange, command: (c) => c.type === 'request-initial-focus' ? o.onInitialFocus?.() : c.type === 'request-focus-restore' ? o.onFocusRestore?.() : o.onAnnounce?.(), onUpdate: o.onUpdate }); }
12
- //# sourceMappingURL=alert-dialog.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"alert-dialog.js","sourceRoot":"","sources":["../src/alert-dialog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAyB,MAAM,sBAAsB,CAAC;AACrF,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAyE,MAAM,4BAA4B,CAAC;AAClK,OAAO,EAAE,mBAAmB,EAAgC,MAAM,6BAA6B,CAAC;AAGhG,MAAM,UAAU,iBAAiB,CAAC,CAAC,GAAuB,EAAE;IAC1D,OAAO,MAAM,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,CAAC,GAAuB,EAAE;IAC7D,OAAO,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,8BAA8B,CAAC,CAAC,CAAC,CAAC,CAAC;AAC7E,CAAC;AAED,SAAS,8BAA8B,CAAC,CAAC,GAAuB,EAAE,IAAmC,OAAO,mBAAmB,CAAyD,EAAE,UAAU,EAAE,CAAC,CAAC,IAAI,KAAK,SAAS,EAAE,OAAO,EAAE,sBAAsB,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,WAAW,IAAI,KAAK,CAAC,EAAE,OAAO,EAAE,qBAAqB,EAAE,MAAM,EAAE,sBAAsB,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,YAAY,EAAE,OAAO,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,uBAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC"}
@@ -1,75 +0,0 @@
1
- import { type FacadeConnection } from './internal/facade.js';
2
- import type { Result, StableID } from '@sectile/core';
3
- import { type CalendarCommand, type CalendarEvent, type CalendarPolicies, type CalendarState } from '@sectile/core/calendar';
4
- import { type Grid } from '@sectile/core/grid';
5
- import { type RevisionResult, type RevisionSnapshot } from '@sectile/core/revision';
6
- import type { TerminalKeyboardInput } from './keyboard.js';
7
- export type KeyboardInput = TerminalKeyboardInput;
8
- export type CalendarEffect<ID extends StableID = StableID> = {
9
- readonly type: 'move-highlight';
10
- readonly id: ID;
11
- } | {
12
- readonly type: 'request-page';
13
- readonly direction: -1 | 1;
14
- readonly from: ID | null;
15
- };
16
- export interface CalendarValueChangeDetails<ID extends StableID = StableID> {
17
- readonly value: ID | null;
18
- readonly previousValue: ID | null;
19
- }
20
- export interface CalendarHighlightChangeDetails<ID extends StableID = StableID> {
21
- readonly value: ID | null;
22
- readonly previousValue: ID | null;
23
- }
24
- export interface CalendarControllerOptions<ID extends StableID = StableID> {
25
- readonly grid: Grid<ID>;
26
- readonly disabled?: boolean;
27
- readonly policies?: CalendarPolicies<ID>;
28
- readonly value?: ID | null;
29
- readonly defaultValue?: ID | null;
30
- readonly highlightedValue?: ID | null;
31
- readonly defaultHighlightedValue?: ID | null;
32
- readonly onValueChange?: (change: CalendarValueChangeDetails<ID>) => void;
33
- readonly onHighlightedValueChange?: (change: CalendarHighlightChangeDetails<ID>) => void;
34
- }
35
- export interface CalendarControlledValues<ID extends StableID = StableID> {
36
- readonly value?: ID | null;
37
- readonly highlightedValue?: ID | null;
38
- }
39
- export interface CalendarController<ID extends StableID = StableID> {
40
- readonly grid: Grid<ID>;
41
- getSnapshot(): RevisionSnapshot<CalendarState<ID>>;
42
- syncControlledValues(values: CalendarControlledValues<ID>): Result<RevisionSnapshot<CalendarState<ID>>>;
43
- handleKeyboardInput(input: KeyboardInput, expectedRevision?: number): RevisionResult<CalendarState<ID>, CalendarEffect<ID>>;
44
- }
45
- export interface CalendarPageRequestDetails<ID extends StableID = StableID> {
46
- readonly direction: -1 | 1;
47
- readonly from: ID | null;
48
- }
49
- export interface CalendarTransitionDetails<ID extends StableID = StableID> {
50
- readonly event: CalendarEvent<ID>;
51
- readonly result: RevisionResult<CalendarState<ID>, CalendarEffect<ID>>;
52
- }
53
- export interface CalendarConnectionOptions<ID extends StableID = StableID> {
54
- readonly controller: CalendarController<ID>;
55
- readonly disabled?: boolean;
56
- readonly onPageRequest?: (details: CalendarPageRequestDetails<ID>) => void;
57
- readonly onTransition?: (details: CalendarTransitionDetails<ID>) => void;
58
- readonly onUpdate?: () => void;
59
- }
60
- export interface CalendarConnection<ID extends StableID = StableID> {
61
- readonly grid: Grid<ID>;
62
- getSnapshot(): RevisionSnapshot<CalendarState<ID>>;
63
- syncControlledValues(values: CalendarControlledValues<ID>): Result<RevisionSnapshot<CalendarState<ID>>>;
64
- handleKeyboardInput(input: KeyboardInput): boolean;
65
- }
66
- export type CalendarOptions<ID extends StableID = StableID> = Omit<CalendarControllerOptions<ID>, 'grid'> & Omit<CalendarConnectionOptions<ID>, 'controller'> & {
67
- readonly rows: readonly (readonly ID[])[];
68
- };
69
- export declare function createCalendarController<ID extends StableID>(options: CalendarControllerOptions<ID>): Result<CalendarController<ID>>;
70
- export declare function createCalendar<ID extends StableID>(options: CalendarOptions<ID>): FacadeConnection<CalendarConnection<ID>>;
71
- export declare function tryCreateCalendar<ID extends StableID>(options: CalendarOptions<ID>): Result<FacadeConnection<CalendarConnection<ID>>>;
72
- export declare function connectCalendar<ID extends StableID>(options: CalendarConnectionOptions<ID>): CalendarConnection<ID>;
73
- export declare function toCalendarEvent<ID extends StableID = StableID>(input: KeyboardInput): CalendarEvent<ID> | null;
74
- export declare function toCalendarEffect<ID extends StableID>(command: CalendarCommand<ID>): CalendarEffect<ID>;
75
- //# sourceMappingURL=calendar.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../src/calendar.ts"],"names":[],"mappings":"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"}