@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
@@ -1 +0,0 @@
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,58 +0,0 @@
1
- export function createFacadeConnection(options, construct) {
2
- const subscribers = new Set();
3
- let connection;
4
- let active = true;
5
- const onUpdate = () => {
6
- options.onUpdate?.();
7
- if (connection === undefined)
8
- return;
9
- const snapshot = connection.getSnapshot();
10
- for (const subscriber of subscribers)
11
- subscriber(snapshot);
12
- };
13
- const constructed = construct({ ...options, onUpdate });
14
- if (!constructed.ok)
15
- return constructed;
16
- connection = constructed.value;
17
- const target = connection;
18
- const facade = new Proxy(target, {
19
- get: (_target, property) => {
20
- if (property === 'state')
21
- return connection?.getSnapshot().state;
22
- if (property === 'send')
23
- return (input) => active && Boolean(callFirst(target, ['handleEvent', 'handleKeyboardInput', 'handleKeyboardEvent', 'handleBeforeInput'], input));
24
- if (property === 'update')
25
- return (input) => callFirst(target, ['syncControlledValues', 'syncControlledValue', 'syncWindow'], input);
26
- if (property === 'subscribe')
27
- return (listener) => {
28
- subscribers.add(listener);
29
- return () => { subscribers.delete(listener); };
30
- };
31
- if (property === 'destroy')
32
- return () => {
33
- if (!active)
34
- return;
35
- active = false;
36
- const disconnect = target['disconnect'];
37
- if (typeof disconnect === 'function')
38
- Reflect.apply(disconnect, target, []);
39
- subscribers.clear();
40
- };
41
- const value = Reflect.get(target, property, target);
42
- const ownDescriptor = Reflect.getOwnPropertyDescriptor(target, property);
43
- if (ownDescriptor !== undefined && ownDescriptor.configurable === false)
44
- return value;
45
- return typeof value === 'function' ? value.bind(target) : value;
46
- },
47
- });
48
- return { ok: true, value: facade };
49
- }
50
- function callFirst(target, names, input) {
51
- for (const name of names) {
52
- const method = target[name];
53
- if (typeof method === 'function')
54
- return Reflect.apply(method, target, [input]);
55
- }
56
- throw new TypeError(`The connection does not implement ${names.join(' or ')}.`);
57
- }
58
- //# sourceMappingURL=facade.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"facade.js","sourceRoot":"","sources":["../../src/internal/facade.ts"],"names":[],"mappings":"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"}
@@ -1,34 +0,0 @@
1
- import type { Result, StableID } from '@sectile/core';
2
- import type { RevisionSnapshot } from '@sectile/core/revision';
3
- import type { TreeNodeInput } from '@sectile/core/tree';
4
- import { type MenuEvent, type MenuPolicies, type MenuState } from '@sectile/core/menu';
5
- import type { TerminalKeyboardInput } from '../keyboard.js';
6
- export type MenuKind = 'menu' | 'menubar' | 'menu-button';
7
- export interface MenuTypeaheadOptions<ID extends StableID> {
8
- readonly textValue: (id: ID) => string;
9
- readonly timeout?: number;
10
- readonly now?: () => number;
11
- readonly normalize?: (text: string) => string;
12
- }
13
- export interface MenuControlOptions<ID extends StableID> {
14
- readonly disabled?: boolean;
15
- readonly items: readonly TreeNodeInput<ID>[];
16
- readonly kind: MenuKind;
17
- readonly policies?: MenuPolicies<ID>;
18
- readonly disabledItems?: readonly ID[];
19
- readonly open?: boolean;
20
- readonly defaultOpen?: boolean;
21
- readonly defaultHighlightedValue?: ID | null;
22
- readonly typeahead?: MenuTypeaheadOptions<ID>;
23
- readonly onOpenChange?: (open: boolean) => void;
24
- readonly onInvoke?: (id: ID) => void;
25
- readonly onUpdate?: () => void;
26
- }
27
- export interface MenuControl<ID extends StableID> {
28
- getSnapshot(): RevisionSnapshot<MenuState<ID>>;
29
- syncControlledValue(open: boolean): Result<RevisionSnapshot<MenuState<ID>>>;
30
- handleEvent(event: MenuEvent<ID>): boolean;
31
- handleKeyboardInput(input: TerminalKeyboardInput): boolean;
32
- }
33
- export declare function createMenuControl<ID extends StableID>(options: MenuControlOptions<ID>): Result<MenuControl<ID>>;
34
- //# sourceMappingURL=menu-control.d.ts.map
@@ -1 +0,0 @@
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,48 +0,0 @@
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; }
8
- class TerminalMenuControl {
9
- #options;
10
- #tree;
11
- #runtime;
12
- #openControlled;
13
- #typeaheadBuffer = '';
14
- #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;
35
- }
36
- } return true; }
37
- }
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
- //# sourceMappingURL=menu-control.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"menu-control.js","sourceRoot":"","sources":["../../src/internal/menu-control.ts"],"names":[],"mappings":"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"}
@@ -1,24 +0,0 @@
1
- import type { Result } from '@sectile/core';
2
- import type { InteractionStateInput } from '@sectile/core/interaction';
3
- import type { MachineUpdate, RevisionSnapshot } from '@sectile/core/revision';
4
- import type { TerminalKeyboardInput } from '../keyboard.js';
5
- export interface TerminalPopupConnection<State, Event> {
6
- getSnapshot(): RevisionSnapshot<State>;
7
- syncControlledValue(open: boolean): Result<RevisionSnapshot<State>>;
8
- handleEvent(event: Event): boolean;
9
- handleKeyboardInput(input: TerminalKeyboardInput): boolean;
10
- }
11
- export interface Options<State, Event, Command> {
12
- readonly controlled: boolean;
13
- readonly initial: Result<State>;
14
- readonly reducer: (state: State, event: Event) => Result<MachineUpdate<State, Command>>;
15
- readonly create: (open: boolean) => Result<State>;
16
- readonly read: (state: State) => boolean;
17
- readonly close: Event;
18
- readonly onOpenChange?: ((open: boolean) => void) | undefined;
19
- readonly command?: ((command: Command) => void) | undefined;
20
- readonly onUpdate?: (() => void) | undefined;
21
- readonly interaction?: InteractionStateInput;
22
- }
23
- export declare function createTerminalPopup<State, Event, Command>(options: Options<State, Event, Command>): Result<TerminalPopupConnection<State, Event>>;
24
- //# sourceMappingURL=popup-control.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"popup-control.d.ts","sourceRoot":"","sources":["../../src/internal/popup-control.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC9E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAG5D,MAAM,WAAW,uBAAuB,CAAC,KAAK,EAAE,KAAK;IAAI,WAAW,IAAI,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAAC,mBAAmB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;IAAC,WAAW,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC;IAAC,mBAAmB,CAAC,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAA;CAAE;AACtQ,MAAM,WAAW,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO;IAAI,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,KAAK,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC;IAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC;IAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,OAAO,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,KAAK,CAAC;IAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC,GAAG,SAAS,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;IAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,qBAAqB,CAAA;CAAE;AACthB,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,uBAAuB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAIjJ"}
@@ -1,23 +0,0 @@
1
- import { createSemanticController } from './semantic-controller.js';
2
- export function createTerminalPopup(options) {
3
- const runtime = createSemanticController({ initial: options.initial, reducer: options.reducer, reconcile: (previous, proposed) => options.create(options.controlled ? options.read(previous) : options.read(proposed)), notify: (previous, proposed) => { if (options.read(previous) !== options.read(proposed))
4
- options.onOpenChange?.(options.read(proposed)); }, toEffect: (command) => command, interaction: options.interaction });
5
- if (!runtime.ok)
6
- return runtime;
7
- return { ok: true, value: new TerminalPopup(options, runtime.value) };
8
- }
9
- class TerminalPopup {
10
- #options;
11
- #runtime;
12
- constructor(options, runtime) { this.#options = options; this.#runtime = runtime; }
13
- getSnapshot() { return this.#runtime.getSnapshot(); }
14
- syncControlledValue(open) { if (!this.#options.controlled)
15
- return { ok: false, error: { class: 'construction', code: 'uncontrolled-controller-sync', message: 'An uncontrolled popup cannot be synchronized externally.' } }; const result = this.#runtime.replace(this.#options.create(open)); if (result.ok)
16
- this.#options.onUpdate?.(); return result; }
17
- handleEvent(event) { const result = this.#runtime.handle(event); if (result.ok)
18
- for (const command of result.commands)
19
- this.#options.command?.(command); if (result.ok)
20
- this.#options.onUpdate?.(); return result.ok; }
21
- handleKeyboardInput(input) { return input.key === 'escape' ? this.handleEvent(this.#options.close) : false; }
22
- }
23
- //# sourceMappingURL=popup-control.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"popup-control.js","sourceRoot":"","sources":["../../src/internal/popup-control.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,wBAAwB,EAA2B,MAAM,0BAA0B,CAAC;AAI7F,MAAM,UAAU,mBAAmB,CAAwB,OAAuC;IAChG,MAAM,OAAO,GAAG,wBAAwB,CAAiC,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,SAAS,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,EAAE,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;YAAE,OAAO,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC;IACxc,IAAI,CAAC,OAAO,CAAC,EAAE;QAAE,OAAO,OAAO,CAAC;IAChC,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;AACxE,CAAC;AACD,MAAM,aAAa;IACR,QAAQ,CAAiC;IAAU,QAAQ,CAA4C;IAChH,YAAmB,OAAuC,EAAE,OAAkD,IAAI,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC;IAC9J,WAAW,KAA8B,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAC9E,mBAAmB,CAAC,IAAa,IAAqC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,IAAI,EAAE,8BAA8B,EAAE,OAAO,EAAE,0DAA0D,EAAE,EAAE,CAAC,CAAC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,EAAE;QAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,OAAO,MAAM,CAAC,CAAC,CAAC;IACrY,WAAW,CAAC,KAAY,IAAa,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,EAAE;QAAE,KAAK,MAAM,OAAO,IAAI,MAAM,CAAC,QAAQ;YAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,EAAE;QAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,OAAO,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IACvO,mBAAmB,CAAC,KAA4B,IAAa,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;CACrJ"}
@@ -1,20 +0,0 @@
1
- import type { Result } from '@sectile/core';
2
- import { type InteractionStateInput } from '@sectile/core/interaction';
3
- import { type EventReducer, type RevisionResult, type RevisionSnapshot } from '@sectile/core/revision';
4
- export interface SemanticController<State, Event, Effect> {
5
- getSnapshot(): RevisionSnapshot<State>;
6
- replace(state: Result<State>): Result<RevisionSnapshot<State>>;
7
- handle(event: Event, expectedRevision?: number): RevisionResult<State, Effect>;
8
- reject(code: string, message: string, details?: Readonly<Record<string, unknown>>): RevisionResult<State, Effect>;
9
- }
10
- export interface SemanticControllerOptions<State, Event, Command, Effect> {
11
- readonly initial: Result<State>;
12
- readonly reducer: EventReducer<State, Event, Command>;
13
- readonly reconcile?: (previous: State, proposed: State) => Result<State>;
14
- readonly notify?: (previous: State, proposed: State) => void;
15
- readonly toEffect: (command: Command) => Effect;
16
- readonly interaction?: InteractionStateInput | undefined;
17
- readonly interactionIntent?: (event: Event) => 'navigate' | 'mutate';
18
- }
19
- export declare function createSemanticController<State, Event, Command, Effect>(options: SemanticControllerOptions<State, Event, Command, Effect>): Result<SemanticController<State, Event, Effect>>;
20
- //# sourceMappingURL=semantic-controller.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"semantic-controller.d.ts","sourceRoot":"","sources":["../../src/internal/semantic-controller.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAGL,KAAK,qBAAqB,EAC3B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAGL,KAAK,YAAY,EACjB,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACtB,MAAM,wBAAwB,CAAC;AAGhC,MAAM,WAAW,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM;IACtD,WAAW,IAAI,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACvC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC;IAC/D,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC/E,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,GAAG,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;CACnH;AAED,MAAM,WAAW,yBAAyB,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM;IACtE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAChC,QAAQ,CAAC,OAAO,EAAE,YAAY,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IACtD,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC;IACzE,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,KAAK,IAAI,CAAC;IAC7D,QAAQ,CAAC,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,CAAC;IAChD,QAAQ,CAAC,WAAW,CAAC,EAAE,qBAAqB,GAAG,SAAS,CAAC;IACzD,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,UAAU,GAAG,QAAQ,CAAC;CACtE;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EACpE,OAAO,EAAE,yBAAyB,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,GAChE,MAAM,CAAC,kBAAkB,CAAC,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC,CAiDlD"}
@@ -1,42 +0,0 @@
1
- import { createInteractionState, requireInteraction, } from '@sectile/core/interaction';
2
- import { createRevisionSnapshot, rejectRevisionInput, } from '@sectile/core/revision';
3
- import { applyControllerEvent, synchronizeControllerState } from './controller.js';
4
- export function createSemanticController(options) {
5
- if (!options.initial.ok)
6
- return options.initial;
7
- const interaction = createInteractionState(options.interaction);
8
- if (!interaction.ok)
9
- return interaction;
10
- const snapshot = createRevisionSnapshot(options.initial.value);
11
- if (!snapshot.ok)
12
- return snapshot;
13
- let current = snapshot.value;
14
- return {
15
- ok: true,
16
- value: Object.freeze({
17
- getSnapshot: () => current,
18
- replace: (state) => {
19
- const next = synchronizeControllerState(current, state);
20
- if (next.ok)
21
- current = next.value;
22
- return next;
23
- },
24
- handle: (event, expectedRevision = current.revision) => {
25
- const permitted = requireInteraction(interaction.value, options.interactionIntent?.(event) ?? 'mutate');
26
- if (!permitted.ok)
27
- return rejectRevisionInput(current, permitted.error);
28
- const result = applyControllerEvent(current, expectedRevision, event, options.reducer, options.reconcile ?? ((_previous, proposed) => ({ ok: true, value: proposed })), options.notify ?? (() => undefined), options.toEffect);
29
- if (result.ok)
30
- current = result.snapshot;
31
- return result;
32
- },
33
- reject: (code, message, details) => rejectRevisionInput(current, {
34
- class: 'transition-rejection',
35
- code,
36
- message,
37
- ...(details === undefined ? {} : { details }),
38
- }),
39
- }),
40
- };
41
- }
42
- //# sourceMappingURL=semantic-controller.js.map
@@ -1 +0,0 @@
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,5 +0,0 @@
1
- import type { TextEditingState } from '@sectile/core/text';
2
- import type { TerminalKeyboardInput } from '../keyboard.js';
3
- import type { TextInput } from '../text.js';
4
- export declare function toTerminalTextInput(state: TextEditingState, input: TerminalKeyboardInput): TextInput | null;
5
- //# sourceMappingURL=text-input.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"text-input.d.ts","sourceRoot":"","sources":["../../src/internal/text-input.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAsB,MAAM,oBAAoB,CAAC;AAC/E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAC5D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,gBAAgB,EACvB,KAAK,EAAE,qBAAqB,GAC3B,SAAS,GAAG,IAAI,CA0BlB"}
@@ -1,53 +0,0 @@
1
- export function toTerminalTextInput(state, input) {
2
- if (input.ctrlKey === true || input.altKey === true)
3
- return null;
4
- const snapshot = state.snapshot;
5
- let start = snapshot.selection.startCodeUnitOffset;
6
- let end = snapshot.selection.endCodeUnitOffset;
7
- let text;
8
- let type;
9
- if (input.key === 'backspace') {
10
- if (start === end)
11
- start = previousGraphemeOffset(snapshot.text, start);
12
- text = '';
13
- type = 'delete';
14
- }
15
- else if (input.key === 'delete') {
16
- if (start === end)
17
- end = nextGraphemeOffset(snapshot.text, end);
18
- text = '';
19
- type = 'delete';
20
- }
21
- else if (input.text !== undefined && input.text.length > 0) {
22
- text = input.text;
23
- type = start === end ? 'insert' : 'replace';
24
- }
25
- else {
26
- return null;
27
- }
28
- const offset = start + text.length;
29
- const selection = collapsedSelection(offset);
30
- return type === 'delete'
31
- ? { type, startCodeUnitOffset: start, endCodeUnitOffset: end, selection }
32
- : { type, text, startCodeUnitOffset: start, endCodeUnitOffset: end, selection };
33
- }
34
- function collapsedSelection(offset) {
35
- return Object.freeze({ anchorCodeUnitOffset: offset, focusCodeUnitOffset: offset });
36
- }
37
- function previousGraphemeOffset(text, offset) {
38
- let previous = 0;
39
- for (const segment of new Intl.Segmenter(undefined, { granularity: 'grapheme' }).segment(text)) {
40
- if (segment.index >= offset)
41
- break;
42
- previous = segment.index;
43
- }
44
- return previous;
45
- }
46
- function nextGraphemeOffset(text, offset) {
47
- for (const segment of new Intl.Segmenter(undefined, { granularity: 'grapheme' }).segment(text)) {
48
- if (segment.index > offset)
49
- return segment.index;
50
- }
51
- return text.length;
52
- }
53
- //# sourceMappingURL=text-input.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"text-input.js","sourceRoot":"","sources":["../../src/internal/text-input.ts"],"names":[],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- export interface TerminalKeyboardInput {
2
- readonly key: string;
3
- readonly text?: string;
4
- readonly altKey?: boolean;
5
- readonly ctrlKey?: boolean;
6
- readonly shiftKey?: boolean;
7
- }
8
- export declare function applyTerminalTextInput(value: string, input: TerminalKeyboardInput): string | null;
9
- export declare function removeLastGrapheme(value: string): string;
10
- //# sourceMappingURL=keyboard.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"keyboard.d.ts","sourceRoot":"","sources":["../src/keyboard.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;CAC7B;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,MAAM,EACb,KAAK,EAAE,qBAAqB,GAC3B,MAAM,GAAG,IAAI,CAKf;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIxD"}
package/dist/keyboard.js DELETED
@@ -1,16 +0,0 @@
1
- export function applyTerminalTextInput(value, input) {
2
- if (input.ctrlKey === true || input.altKey === true)
3
- return null;
4
- if (input.key === 'backspace')
5
- return removeLastGrapheme(value);
6
- if (input.text === undefined || input.text.length === 0)
7
- return null;
8
- return `${value}${input.text}`;
9
- }
10
- export function removeLastGrapheme(value) {
11
- const segments = Array.from(new Intl.Segmenter(undefined, { granularity: 'grapheme' }).segment(value));
12
- if (segments.length === 0)
13
- return value;
14
- return value.slice(0, segments.at(-1)?.index ?? value.length);
15
- }
16
- //# sourceMappingURL=keyboard.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"keyboard.js","sourceRoot":"","sources":["../src/keyboard.ts"],"names":[],"mappings":"AAQA,MAAM,UAAU,sBAAsB,CACpC,KAAa,EACb,KAA4B;IAE5B,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IACjE,IAAI,KAAK,CAAC,GAAG,KAAK,WAAW;QAAE,OAAO,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAChE,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACrE,OAAO,GAAG,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;AACjC,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IACvG,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACxC,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC;AAChE,CAAC"}
package/dist/layout.d.ts DELETED
@@ -1,2 +0,0 @@
1
- export declare function fitTerminalText(value: string, width: number): string;
2
- //# sourceMappingURL=layout.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"layout.d.ts","sourceRoot":"","sources":["../src/layout.ts"],"names":[],"mappings":"AAEA,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAmBpE"}
package/dist/layout.js DELETED
@@ -1,24 +0,0 @@
1
- import stringWidth from 'string-width';
2
- export function fitTerminalText(value, width) {
3
- if (!Number.isSafeInteger(width) || width < 0) {
4
- throw new RangeError('Terminal text width must be a non-negative safe integer.');
5
- }
6
- if (width === 0)
7
- return '';
8
- const valueWidth = stringWidth(value);
9
- if (valueWidth <= width)
10
- return `${value}${' '.repeat(width - valueWidth)}`;
11
- const ellipsis = '…';
12
- const contentWidth = width - stringWidth(ellipsis);
13
- let rendered = '';
14
- let renderedWidth = 0;
15
- for (const segment of new Intl.Segmenter(undefined, { granularity: 'grapheme' }).segment(value)) {
16
- const segmentWidth = stringWidth(segment.segment);
17
- if (renderedWidth + segmentWidth > contentWidth)
18
- break;
19
- rendered += segment.segment;
20
- renderedWidth += segmentWidth;
21
- }
22
- return `${rendered}${' '.repeat(contentWidth - renderedWidth)}${ellipsis}`;
23
- }
24
- //# sourceMappingURL=layout.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"layout.js","sourceRoot":"","sources":["../src/layout.ts"],"names":[],"mappings":"AAAA,OAAO,WAAW,MAAM,cAAc,CAAC;AAEvC,MAAM,UAAU,eAAe,CAAC,KAAa,EAAE,KAAa;IAC1D,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,UAAU,CAAC,0DAA0D,CAAC,CAAC;IACnF,CAAC;IACD,IAAI,KAAK,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAC3B,MAAM,UAAU,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IACtC,IAAI,UAAU,IAAI,KAAK;QAAE,OAAO,GAAG,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,GAAG,UAAU,CAAC,EAAE,CAAC;IAE5E,MAAM,QAAQ,GAAG,GAAG,CAAC;IACrB,MAAM,YAAY,GAAG,KAAK,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IACnD,IAAI,QAAQ,GAAG,EAAE,CAAC;IAClB,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,KAAK,MAAM,OAAO,IAAI,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAChG,MAAM,YAAY,GAAG,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAClD,IAAI,aAAa,GAAG,YAAY,GAAG,YAAY;YAAE,MAAM;QACvD,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC;QAC5B,aAAa,IAAI,YAAY,CAAC;IAChC,CAAC;IACD,OAAO,GAAG,QAAQ,GAAG,GAAG,CAAC,MAAM,CAAC,YAAY,GAAG,aAAa,CAAC,GAAG,QAAQ,EAAE,CAAC;AAC7E,CAAC"}
package/dist/listbox.d.ts DELETED
@@ -1,87 +0,0 @@
1
- import { type FacadeConnection } from './internal/facade.js';
2
- import type { Result, StableID } from '@sectile/core';
3
- import { type ListboxCommand, type ListboxEvent, type ListboxPolicies, type ListboxSelectionMode, type ListboxState } from '@sectile/core/listbox';
4
- import { type Sequence } from '@sectile/core/sequence';
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 ListboxEffect<ID extends StableID = StableID> = {
9
- readonly type: 'move-highlight';
10
- readonly id: ID;
11
- } | {
12
- readonly type: 'submit-item';
13
- readonly id: ID;
14
- };
15
- export interface ListboxValueChangeDetails<ID extends StableID = StableID> {
16
- readonly value: readonly ID[];
17
- readonly previousValue: readonly ID[];
18
- }
19
- export interface ListboxHighlightChangeDetails<ID extends StableID = StableID> {
20
- readonly value: ID | null;
21
- readonly previousValue: ID | null;
22
- }
23
- export interface ListboxControllerOptions<ID extends StableID = StableID> {
24
- readonly domain: Sequence<ID>;
25
- readonly policies?: ListboxPolicies<ID>;
26
- readonly selectionMode?: ListboxSelectionMode;
27
- readonly orientation?: 'horizontal' | 'vertical';
28
- readonly disabledItems?: readonly ID[];
29
- readonly disabled?: boolean;
30
- readonly readOnly?: boolean;
31
- readonly typeahead?: ListboxTypeaheadOptions<ID>;
32
- readonly value?: readonly ID[];
33
- readonly defaultValue?: readonly ID[];
34
- readonly highlightedValue?: ID | null;
35
- readonly defaultHighlightedValue?: ID | null;
36
- readonly onValueChange?: (change: ListboxValueChangeDetails<ID>) => void;
37
- readonly onHighlightedValueChange?: (change: ListboxHighlightChangeDetails<ID>) => void;
38
- }
39
- export interface ListboxTypeaheadOptions<ID extends StableID = StableID> {
40
- readonly textValue: (id: ID) => string;
41
- readonly normalize?: (text: string) => string;
42
- readonly timeoutMs?: number;
43
- readonly now?: () => number;
44
- }
45
- export interface ListboxControlledValues<ID extends StableID = StableID> {
46
- readonly value?: readonly ID[];
47
- readonly highlightedValue?: ID | null;
48
- }
49
- export interface ListboxController<ID extends StableID = StableID> {
50
- getSnapshot(): RevisionSnapshot<ListboxState<ID>>;
51
- syncControlledValues(values: ListboxControlledValues<ID>): Result<RevisionSnapshot<ListboxState<ID>>>;
52
- handleKeyboardInput(input: KeyboardInput, expectedRevision?: number): RevisionResult<ListboxState<ID>, ListboxEffect<ID>>;
53
- handleEvent(event: ListboxEvent<ID>, expectedRevision?: number): RevisionResult<ListboxState<ID>, ListboxEffect<ID>>;
54
- }
55
- export interface ListboxTransitionDetails<ID extends StableID = StableID> {
56
- readonly event: ListboxEvent<ID> | {
57
- readonly type: 'typeahead';
58
- readonly query: string;
59
- };
60
- readonly result: RevisionResult<ListboxState<ID>, ListboxEffect<ID>>;
61
- }
62
- export interface ListboxConnectionOptions<ID extends StableID = StableID> {
63
- readonly controller: ListboxController<ID>;
64
- readonly disabled?: boolean;
65
- readonly readOnly?: boolean;
66
- readonly orientation?: 'horizontal' | 'vertical';
67
- readonly typeahead?: ListboxTypeaheadOptions<ID>;
68
- readonly onActivate?: (id: ID) => void;
69
- readonly onTransition?: (details: ListboxTransitionDetails<ID>) => void;
70
- readonly onUpdate?: () => void;
71
- }
72
- export interface ListboxConnection<ID extends StableID = StableID> {
73
- getSnapshot(): RevisionSnapshot<ListboxState<ID>>;
74
- syncControlledValues(values: ListboxControlledValues<ID>): Result<RevisionSnapshot<ListboxState<ID>>>;
75
- handleKeyboardInput(input: KeyboardInput): boolean;
76
- handleEvent(event: ListboxEvent<ID>): boolean;
77
- }
78
- export type ListboxOptions<ID extends StableID = StableID> = Omit<ListboxControllerOptions<ID>, 'domain'> & Omit<ListboxConnectionOptions<ID>, 'controller'> & {
79
- readonly items: readonly ID[];
80
- };
81
- export declare function createListboxController<ID extends StableID>(options: ListboxControllerOptions<ID>): Result<ListboxController<ID>>;
82
- export declare function createListbox<ID extends StableID>(options: ListboxOptions<ID>): FacadeConnection<ListboxConnection<ID>>;
83
- export declare function tryCreateListbox<ID extends StableID>(options: ListboxOptions<ID>): Result<FacadeConnection<ListboxConnection<ID>>>;
84
- export declare function connectListbox<ID extends StableID>(options: ListboxConnectionOptions<ID>): ListboxConnection<ID>;
85
- export declare function toListboxEvent<ID extends StableID = StableID>(input: KeyboardInput, orientation?: 'horizontal' | 'vertical'): ListboxEvent<ID> | null;
86
- export declare function toListboxEffect<ID extends StableID>(command: ListboxCommand<ID>): ListboxEffect<ID>;
87
- //# sourceMappingURL=listbox.d.ts.map
@@ -1 +0,0 @@
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"}