@sectile/dom 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (219) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +16 -0
  3. package/dist/accordion.d.ts +36 -0
  4. package/dist/accordion.d.ts.map +1 -0
  5. package/dist/accordion.js +143 -0
  6. package/dist/accordion.js.map +1 -0
  7. package/dist/alert-dialog.d.ts +27 -0
  8. package/dist/alert-dialog.d.ts.map +1 -0
  9. package/dist/alert-dialog.js +14 -0
  10. package/dist/alert-dialog.js.map +1 -0
  11. package/dist/calendar.d.ts +92 -0
  12. package/dist/calendar.d.ts.map +1 -0
  13. package/dist/calendar.js +296 -0
  14. package/dist/calendar.js.map +1 -0
  15. package/dist/carousel.d.ts +54 -0
  16. package/dist/carousel.d.ts.map +1 -0
  17. package/dist/carousel.js +285 -0
  18. package/dist/carousel.js.map +1 -0
  19. package/dist/checkbox-group.d.ts +22 -0
  20. package/dist/checkbox-group.d.ts.map +1 -0
  21. package/dist/checkbox-group.js +32 -0
  22. package/dist/checkbox-group.js.map +1 -0
  23. package/dist/checkbox.d.ts +18 -0
  24. package/dist/checkbox.d.ts.map +1 -0
  25. package/dist/checkbox.js +12 -0
  26. package/dist/checkbox.js.map +1 -0
  27. package/dist/combobox.d.ts +120 -0
  28. package/dist/combobox.d.ts.map +1 -0
  29. package/dist/combobox.js +386 -0
  30. package/dist/combobox.js.map +1 -0
  31. package/dist/date-field.d.ts +36 -0
  32. package/dist/date-field.d.ts.map +1 -0
  33. package/dist/date-field.js +88 -0
  34. package/dist/date-field.js.map +1 -0
  35. package/dist/date-picker.d.ts +43 -0
  36. package/dist/date-picker.d.ts.map +1 -0
  37. package/dist/date-picker.js +118 -0
  38. package/dist/date-picker.js.map +1 -0
  39. package/dist/date-range-picker.d.ts +45 -0
  40. package/dist/date-range-picker.d.ts.map +1 -0
  41. package/dist/date-range-picker.js +64 -0
  42. package/dist/date-range-picker.js.map +1 -0
  43. package/dist/date-time-field.d.ts +36 -0
  44. package/dist/date-time-field.d.ts.map +1 -0
  45. package/dist/date-time-field.js +163 -0
  46. package/dist/date-time-field.js.map +1 -0
  47. package/dist/date-time-picker.d.ts +45 -0
  48. package/dist/date-time-picker.d.ts.map +1 -0
  49. package/dist/date-time-picker.js +259 -0
  50. package/dist/date-time-picker.js.map +1 -0
  51. package/dist/date-time-range-picker.d.ts +47 -0
  52. package/dist/date-time-range-picker.d.ts.map +1 -0
  53. package/dist/date-time-range-picker.js +269 -0
  54. package/dist/date-time-range-picker.js.map +1 -0
  55. package/dist/dialog.d.ts +27 -0
  56. package/dist/dialog.d.ts.map +1 -0
  57. package/dist/dialog.js +15 -0
  58. package/dist/dialog.js.map +1 -0
  59. package/dist/disclosure.d.ts +24 -0
  60. package/dist/disclosure.d.ts.map +1 -0
  61. package/dist/disclosure.js +74 -0
  62. package/dist/disclosure.js.map +1 -0
  63. package/dist/feed.d.ts +33 -0
  64. package/dist/feed.d.ts.map +1 -0
  65. package/dist/feed.js +68 -0
  66. package/dist/feed.js.map +1 -0
  67. package/dist/grid.d.ts +43 -0
  68. package/dist/grid.d.ts.map +1 -0
  69. package/dist/grid.js +165 -0
  70. package/dist/grid.js.map +1 -0
  71. package/dist/index.d.ts +45 -0
  72. package/dist/index.d.ts.map +1 -0
  73. package/dist/index.js +44 -0
  74. package/dist/index.js.map +1 -0
  75. package/dist/internal/checked-control.d.ts +28 -0
  76. package/dist/internal/checked-control.d.ts.map +1 -0
  77. package/dist/internal/checked-control.js +45 -0
  78. package/dist/internal/checked-control.js.map +1 -0
  79. package/dist/internal/controller.d.ts +6 -0
  80. package/dist/internal/controller.d.ts.map +1 -0
  81. package/dist/internal/controller.js +35 -0
  82. package/dist/internal/controller.js.map +1 -0
  83. package/dist/internal/delegated-event.d.ts +2 -0
  84. package/dist/internal/delegated-event.d.ts.map +1 -0
  85. package/dist/internal/delegated-event.js +11 -0
  86. package/dist/internal/delegated-event.js.map +1 -0
  87. package/dist/internal/disabled-items.d.ts +6 -0
  88. package/dist/internal/disabled-items.d.ts.map +1 -0
  89. package/dist/internal/disabled-items.js +15 -0
  90. package/dist/internal/disabled-items.js.map +1 -0
  91. package/dist/internal/facade.d.ts +44 -0
  92. package/dist/internal/facade.d.ts.map +1 -0
  93. package/dist/internal/facade.js +58 -0
  94. package/dist/internal/facade.js.map +1 -0
  95. package/dist/internal/interaction.d.ts +14 -0
  96. package/dist/internal/interaction.d.ts.map +1 -0
  97. package/dist/internal/interaction.js +25 -0
  98. package/dist/internal/interaction.js.map +1 -0
  99. package/dist/internal/menu-control.d.ts +38 -0
  100. package/dist/internal/menu-control.d.ts.map +1 -0
  101. package/dist/internal/menu-control.js +251 -0
  102. package/dist/internal/menu-control.js.map +1 -0
  103. package/dist/internal/popup-control.d.ts +39 -0
  104. package/dist/internal/popup-control.d.ts.map +1 -0
  105. package/dist/internal/popup-control.js +140 -0
  106. package/dist/internal/popup-control.js.map +1 -0
  107. package/dist/internal/semantic-controller.d.ts +20 -0
  108. package/dist/internal/semantic-controller.d.ts.map +1 -0
  109. package/dist/internal/semantic-controller.js +42 -0
  110. package/dist/internal/semantic-controller.js.map +1 -0
  111. package/dist/internal/text-element.d.ts +16 -0
  112. package/dist/internal/text-element.d.ts.map +1 -0
  113. package/dist/internal/text-element.js +215 -0
  114. package/dist/internal/text-element.js.map +1 -0
  115. package/dist/listbox.d.ts +103 -0
  116. package/dist/listbox.d.ts.map +1 -0
  117. package/dist/listbox.js +416 -0
  118. package/dist/listbox.js.map +1 -0
  119. package/dist/menu-button.d.ts +10 -0
  120. package/dist/menu-button.d.ts.map +1 -0
  121. package/dist/menu-button.js +11 -0
  122. package/dist/menu-button.js.map +1 -0
  123. package/dist/menu.d.ts +8 -0
  124. package/dist/menu.d.ts.map +1 -0
  125. package/dist/menu.js +11 -0
  126. package/dist/menu.js.map +1 -0
  127. package/dist/menubar.d.ts +8 -0
  128. package/dist/menubar.d.ts.map +1 -0
  129. package/dist/menubar.js +11 -0
  130. package/dist/menubar.js.map +1 -0
  131. package/dist/multi-thumb-slider.d.ts +38 -0
  132. package/dist/multi-thumb-slider.d.ts.map +1 -0
  133. package/dist/multi-thumb-slider.js +190 -0
  134. package/dist/multi-thumb-slider.js.map +1 -0
  135. package/dist/number-field.d.ts +45 -0
  136. package/dist/number-field.d.ts.map +1 -0
  137. package/dist/number-field.js +136 -0
  138. package/dist/number-field.js.map +1 -0
  139. package/dist/pagination.d.ts +39 -0
  140. package/dist/pagination.d.ts.map +1 -0
  141. package/dist/pagination.js +169 -0
  142. package/dist/pagination.js.map +1 -0
  143. package/dist/pin-input.d.ts +27 -0
  144. package/dist/pin-input.d.ts.map +1 -0
  145. package/dist/pin-input.js +76 -0
  146. package/dist/pin-input.js.map +1 -0
  147. package/dist/quantity-field.d.ts +46 -0
  148. package/dist/quantity-field.d.ts.map +1 -0
  149. package/dist/quantity-field.js +172 -0
  150. package/dist/quantity-field.js.map +1 -0
  151. package/dist/radio-group.d.ts +40 -0
  152. package/dist/radio-group.d.ts.map +1 -0
  153. package/dist/radio-group.js +172 -0
  154. package/dist/radio-group.js.map +1 -0
  155. package/dist/rating.d.ts +22 -0
  156. package/dist/rating.d.ts.map +1 -0
  157. package/dist/rating.js +38 -0
  158. package/dist/rating.js.map +1 -0
  159. package/dist/select.d.ts +45 -0
  160. package/dist/select.d.ts.map +1 -0
  161. package/dist/select.js +87 -0
  162. package/dist/select.js.map +1 -0
  163. package/dist/slider.d.ts +73 -0
  164. package/dist/slider.d.ts.map +1 -0
  165. package/dist/slider.js +265 -0
  166. package/dist/slider.js.map +1 -0
  167. package/dist/spin-button.d.ts +41 -0
  168. package/dist/spin-button.d.ts.map +1 -0
  169. package/dist/spin-button.js +127 -0
  170. package/dist/spin-button.js.map +1 -0
  171. package/dist/stepper.d.ts +24 -0
  172. package/dist/stepper.d.ts.map +1 -0
  173. package/dist/stepper.js +32 -0
  174. package/dist/stepper.js.map +1 -0
  175. package/dist/switch.d.ts +16 -0
  176. package/dist/switch.d.ts.map +1 -0
  177. package/dist/switch.js +12 -0
  178. package/dist/switch.js.map +1 -0
  179. package/dist/tabs.d.ts +55 -0
  180. package/dist/tabs.d.ts.map +1 -0
  181. package/dist/tabs.js +193 -0
  182. package/dist/tabs.js.map +1 -0
  183. package/dist/tags-input.d.ts +32 -0
  184. package/dist/tags-input.d.ts.map +1 -0
  185. package/dist/tags-input.js +94 -0
  186. package/dist/tags-input.js.map +1 -0
  187. package/dist/text.d.ts +80 -0
  188. package/dist/text.d.ts.map +1 -0
  189. package/dist/text.js +203 -0
  190. package/dist/text.js.map +1 -0
  191. package/dist/time-field.d.ts +36 -0
  192. package/dist/time-field.d.ts.map +1 -0
  193. package/dist/time-field.js +57 -0
  194. package/dist/time-field.js.map +1 -0
  195. package/dist/toggle-button.d.ts +16 -0
  196. package/dist/toggle-button.d.ts.map +1 -0
  197. package/dist/toggle-button.js +12 -0
  198. package/dist/toggle-button.js.map +1 -0
  199. package/dist/toolbar.d.ts +37 -0
  200. package/dist/toolbar.d.ts.map +1 -0
  201. package/dist/toolbar.js +148 -0
  202. package/dist/toolbar.js.map +1 -0
  203. package/dist/tooltip.d.ts +18 -0
  204. package/dist/tooltip.d.ts.map +1 -0
  205. package/dist/tooltip.js +14 -0
  206. package/dist/tooltip.js.map +1 -0
  207. package/dist/tree-grid.d.ts +122 -0
  208. package/dist/tree-grid.d.ts.map +1 -0
  209. package/dist/tree-grid.js +449 -0
  210. package/dist/tree-grid.js.map +1 -0
  211. package/dist/tree-view.d.ts +92 -0
  212. package/dist/tree-view.d.ts.map +1 -0
  213. package/dist/tree-view.js +309 -0
  214. package/dist/tree-view.js.map +1 -0
  215. package/dist/window-splitter.d.ts +8 -0
  216. package/dist/window-splitter.d.ts.map +1 -0
  217. package/dist/window-splitter.js +13 -0
  218. package/dist/window-splitter.js.map +1 -0
  219. package/package.json +256 -0
@@ -0,0 +1,27 @@
1
+ import { type FacadeConnection } from './internal/facade.js';
2
+ import type { Result } from '@sectile/core';
3
+ import { type DialogEvent, type DialogState } from '@sectile/core/dialog';
4
+ import { type DOMPopupConnection } from './internal/popup-control.js';
5
+ export interface DialogOptions {
6
+ readonly root: HTMLElement;
7
+ readonly trigger?: HTMLElement;
8
+ readonly open?: boolean;
9
+ readonly defaultOpen?: boolean;
10
+ readonly disabled?: boolean;
11
+ readonly modal?: boolean;
12
+ readonly label?: string;
13
+ readonly labelledBy?: string;
14
+ readonly describedBy?: string;
15
+ readonly initialFocus?: HTMLElement;
16
+ readonly autoFocus?: boolean;
17
+ readonly restoreFocus?: boolean;
18
+ readonly trapFocus?: boolean;
19
+ readonly onOpenChange?: (open: boolean) => void;
20
+ readonly onInitialFocus?: () => void;
21
+ readonly onFocusRestore?: () => void;
22
+ readonly onUpdate?: () => void;
23
+ }
24
+ export type DialogConnection = DOMPopupConnection<DialogState, DialogEvent>;
25
+ export declare function createDialog(o: DialogOptions): FacadeConnection<DialogConnection>;
26
+ export declare function tryCreateDialog(o: DialogOptions): Result<FacadeConnection<DialogConnection>>;
27
+ //# sourceMappingURL=dialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dialog.d.ts","sourceRoot":"","sources":["../src/dialog.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAErF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAA2D,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnI,OAAO,EAAkB,KAAK,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAEtF,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACjJ,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,WAAW,CAAC;IACpJ,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAC7I,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAAC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,IAAI,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CAC5G;AACD,MAAM,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;AAC5E,wBAAgB,YAAY,CAAC,CAAC,EAAE,aAAa,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,CAEjF;AAED,wBAAgB,eAAe,CAAC,CAAC,EAAE,aAAa,GAAG,MAAM,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,CAAC,CAE5F"}
package/dist/dialog.js ADDED
@@ -0,0 +1,15 @@
1
+ import { createFacadeConnection } from './internal/facade.js';
2
+ import { unwrap } from '@sectile/core/result';
3
+ import { applyDialogEvent, createDialogState } from '@sectile/core/dialog';
4
+ import { createDOMPopup } from './internal/popup-control.js';
5
+ export function createDialog(o) {
6
+ return unwrap(tryCreateDialog(o));
7
+ }
8
+ export function tryCreateDialog(o) {
9
+ return createFacadeConnection(o, (o) => tryCreateDialogConnection(o));
10
+ }
11
+ function tryCreateDialogConnection(o) {
12
+ const modal = o.modal ?? true;
13
+ return createDOMPopup({ root: o.root, ...(o.trigger === undefined ? {} : { trigger: o.trigger }), role: 'dialog', modal, ...(o.label === undefined ? {} : { label: o.label }), ...(o.labelledBy === undefined ? {} : { labelledBy: o.labelledBy }), ...(o.describedBy === undefined ? {} : { describedBy: o.describedBy }), controlled: o.open !== undefined, initial: createDialogState(o.open ?? o.defaultOpen ?? false), open: 'open', toggle: 'toggle', close: 'close', reducer: applyDialogEvent, create: createDialogState, read: (s) => s.open, interaction: o, ...(o.initialFocus === undefined ? {} : { initialFocus: o.initialFocus }), autoFocus: o.autoFocus ?? true, restoreFocus: o.restoreFocus ?? true, trapFocus: o.trapFocus ?? modal, onOpenChange: o.onOpenChange, command: (c) => c.type === 'request-initial-focus' ? o.onInitialFocus?.() : o.onFocusRestore?.(), onUpdate: o.onUpdate });
14
+ }
15
+ //# sourceMappingURL=dialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dialog.js","sourceRoot":"","sources":["../src/dialog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAyB,MAAM,sBAAsB,CAAC;AACrF,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAA0D,MAAM,sBAAsB,CAAC;AACnI,OAAO,EAAE,cAAc,EAA2B,MAAM,6BAA6B,CAAC;AAStF,MAAM,UAAU,YAAY,CAAC,CAAgB;IAC3C,OAAO,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;AACpC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,CAAgB;IAC9C,OAAO,sBAAsB,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,yBAAyB,CAAC,CAAC,CAAC,CAAC,CAAC;AACxE,CAAC;AAED,SAAS,yBAAyB,CAAC,CAAgB;IACjD,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC;IAC9B,OAAO,cAAc,CAA0C,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,IAAI,KAAK,SAAS,EAAE,OAAO,EAAE,iBAAiB,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,WAAW,IAAI,KAAK,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,gBAAgB,EAAE,MAAM,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,YAAY,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,IAAI,EAAE,YAAY,EAAE,CAAC,CAAC,YAAY,IAAI,IAAI,EAAE,SAAS,EAAE,CAAC,CAAC,SAAS,IAAI,KAAK,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,cAAc,EAAE,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;AAC55B,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { type FacadeConnection } from './internal/facade.js';
2
+ import type { Result } from '@sectile/core';
3
+ import type { RevisionSnapshot } from '@sectile/core/revision';
4
+ import { type DisclosureEvent, type DisclosureState } from '@sectile/core/disclosure';
5
+ export interface DisclosureOptions {
6
+ readonly trigger: HTMLElement;
7
+ readonly panel?: HTMLElement;
8
+ readonly open?: boolean;
9
+ readonly defaultOpen?: boolean;
10
+ readonly disabled?: boolean;
11
+ readonly panelID?: string;
12
+ readonly onOpenChange?: (open: boolean) => void;
13
+ readonly onUpdate?: () => void;
14
+ }
15
+ export interface DisclosureConnection {
16
+ getSnapshot(): RevisionSnapshot<DisclosureState>;
17
+ syncControlledValue(open: boolean): Result<RevisionSnapshot<DisclosureState>>;
18
+ handleEvent(event: DisclosureEvent): boolean;
19
+ updateAttributes(): void;
20
+ disconnect(): void;
21
+ }
22
+ export declare function createDisclosure(options: DisclosureOptions): FacadeConnection<DisclosureConnection>;
23
+ export declare function tryCreateDisclosure(options: DisclosureOptions): Result<FacadeConnection<DisclosureConnection>>;
24
+ //# sourceMappingURL=disclosure.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"disclosure.d.ts","sourceRoot":"","sources":["../src/disclosure.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAErF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAEmB,KAAK,eAAe,EAAE,KAAK,eAAe,EACnE,MAAM,0BAA0B,CAAC;AAIlC,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,OAAO,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,WAAW,CAAC;IAC7B,QAAQ,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,WAAW,CAAC,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IAChD,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CAChC;AACD,MAAM,WAAW,oBAAoB;IACnC,WAAW,IAAI,gBAAgB,CAAC,eAAe,CAAC,CAAC;IACjD,mBAAmB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC,gBAAgB,CAAC,eAAe,CAAC,CAAC,CAAC;IAC9E,WAAW,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAAC;IAC7C,gBAAgB,IAAI,IAAI,CAAC;IACzB,UAAU,IAAI,IAAI,CAAC;CACpB;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,GAAG,gBAAgB,CAAC,oBAAoB,CAAC,CAEnG;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,CAAC,gBAAgB,CAAC,oBAAoB,CAAC,CAAC,CAE9G"}
@@ -0,0 +1,74 @@
1
+ import { createFacadeConnection } from './internal/facade.js';
2
+ import { unwrap } from '@sectile/core/result';
3
+ import { applyDisclosureEvent, createDisclosureState, } from '@sectile/core/disclosure';
4
+ import { createSemanticController } from './internal/semantic-controller.js';
5
+ import { setInteractionAttributes } from './internal/interaction.js';
6
+ export function createDisclosure(options) {
7
+ return unwrap(tryCreateDisclosure(options));
8
+ }
9
+ export function tryCreateDisclosure(options) {
10
+ return createFacadeConnection(options, (options) => tryCreateDisclosureConnection(options));
11
+ }
12
+ function tryCreateDisclosureConnection(options) {
13
+ const controlled = options.open !== undefined;
14
+ const runtime = createSemanticController({
15
+ initial: createDisclosureState(options.open ?? options.defaultOpen ?? false),
16
+ reducer: applyDisclosureEvent,
17
+ reconcile: (previous, proposed) => createDisclosureState(controlled ? previous.open : proposed.open),
18
+ notify: (previous, proposed) => {
19
+ if (previous.open !== proposed.open)
20
+ options.onOpenChange?.(proposed.open);
21
+ },
22
+ toEffect: (command) => command,
23
+ interaction: options,
24
+ });
25
+ if (!runtime.ok)
26
+ return runtime;
27
+ return { ok: true, value: new DOMDisclosureConnection(options, runtime.value, controlled) };
28
+ }
29
+ class DOMDisclosureConnection {
30
+ #options;
31
+ #runtime;
32
+ #controlled;
33
+ #click;
34
+ constructor(options, runtime, controlled) {
35
+ this.#options = options;
36
+ this.#runtime = runtime;
37
+ this.#controlled = controlled;
38
+ this.#click = () => { this.handleEvent('toggle'); };
39
+ options.trigger.addEventListener('click', this.#click);
40
+ setInteractionAttributes(options.trigger, options, { native: true });
41
+ this.updateAttributes();
42
+ }
43
+ getSnapshot() { return this.#runtime.getSnapshot(); }
44
+ syncControlledValue(open) {
45
+ if (!this.#controlled)
46
+ return uncontrolled();
47
+ const result = this.#runtime.replace(createDisclosureState(open));
48
+ if (result.ok) {
49
+ this.updateAttributes();
50
+ this.#options.onUpdate?.();
51
+ }
52
+ return result;
53
+ }
54
+ handleEvent(event) {
55
+ const result = this.#runtime.handle(event);
56
+ this.updateAttributes();
57
+ if (result.ok)
58
+ this.#options.onUpdate?.();
59
+ return result.ok;
60
+ }
61
+ updateAttributes() {
62
+ const open = this.#runtime.getSnapshot().state.open;
63
+ this.#options.trigger.setAttribute('aria-expanded', String(open));
64
+ if (this.#options.panelID !== undefined)
65
+ this.#options.trigger.setAttribute('aria-controls', this.#options.panelID);
66
+ if (this.#options.panel !== undefined)
67
+ this.#options.panel.hidden = !open;
68
+ }
69
+ disconnect() { this.#options.trigger.removeEventListener('click', this.#click); }
70
+ }
71
+ function uncontrolled() {
72
+ return { ok: false, error: { class: 'construction', code: 'uncontrolled-controller-sync', message: 'An uncontrolled disclosure cannot be synchronized externally.' } };
73
+ }
74
+ //# sourceMappingURL=disclosure.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"disclosure.js","sourceRoot":"","sources":["../src/disclosure.ts"],"names":[],"mappings":"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"}
package/dist/feed.d.ts ADDED
@@ -0,0 +1,33 @@
1
+ import { type FacadeConnection } from './internal/facade.js';
2
+ import type { Result, StableID } from '@sectile/core';
3
+ import { type FeedDirection, type FeedEvent, type FeedState } from '@sectile/core/feed';
4
+ import type { RevisionSnapshot } from '@sectile/core/revision';
5
+ export interface FeedOptions<ID extends StableID = StableID> {
6
+ readonly root: HTMLElement;
7
+ readonly items: readonly ID[];
8
+ readonly revision?: number;
9
+ readonly defaultHighlightedValue?: ID | null;
10
+ readonly disabled?: boolean;
11
+ readonly label?: string;
12
+ readonly setSize?: number;
13
+ readonly getPosition?: (id: ID) => number;
14
+ readonly onHighlightedValueChange?: (value: ID | null) => void;
15
+ readonly onRequestWindow?: (direction: FeedDirection, anchor: ID | null, revision: number) => void;
16
+ readonly onUpdate?: () => void;
17
+ }
18
+ export interface FeedWindow<ID extends StableID = StableID> {
19
+ readonly items: readonly ID[];
20
+ readonly revision: number;
21
+ readonly highlightedValue?: ID | null;
22
+ }
23
+ export interface FeedConnection<ID extends StableID = StableID> {
24
+ getSnapshot(): RevisionSnapshot<FeedState<ID>>;
25
+ syncWindow(window: FeedWindow<ID>): Result<RevisionSnapshot<FeedState<ID>>>;
26
+ setItemAttributes(element: HTMLElement, id: ID): void;
27
+ handleEvent(event: FeedEvent<ID>): boolean;
28
+ focusCurrent(): void;
29
+ disconnect(): void;
30
+ }
31
+ export declare function createFeed<ID extends StableID>(options: FeedOptions<ID>): FacadeConnection<FeedConnection<ID>>;
32
+ export declare function tryCreateFeed<ID extends StableID>(options: FeedOptions<ID>): Result<FacadeConnection<FeedConnection<ID>>>;
33
+ //# sourceMappingURL=feed.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feed.d.ts","sourceRoot":"","sources":["../src/feed.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAErF,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAAyE,OAAO,EAAqD,KAAK,aAAa,EAAE,KAAK,SAAS,EAAE,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAAC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1U,MAAM,WAAW,WAAW,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ;IAAI,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAC;IAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,MAAM,CAAC;IAAC,QAAQ,CAAC,wBAAwB,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,IAAI,CAAC;IAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC,SAAS,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,MAAM,KAAK,IAAI,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAA;CAAE;AAAC,MAAM,WAAW,UAAU,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ;IAAI,QAAQ,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,CAAC;IAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,EAAE,GAAG,IAAI,CAAA;CAAE;AAAC,MAAM,WAAW,cAAc,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ;IAAI,WAAW,IAAI,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;IAAC,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAAC,iBAAiB,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;IAAC,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC;IAAC,YAAY,IAAI,IAAI,CAAC;IAAC,UAAU,IAAI,IAAI,CAAA;CAAE;AACj/B,wBAAgB,UAAU,CAAC,EAAE,SAAS,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAE9G;AAED,wBAAgB,aAAa,CAAC,EAAE,SAAS,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,gBAAgB,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,CAEzH"}
package/dist/feed.js ADDED
@@ -0,0 +1,68 @@
1
+ import { createFacadeConnection } from './internal/facade.js';
2
+ import { unwrap } from '@sectile/core/result';
3
+ import { createSequence } from '@sectile/core/sequence';
4
+ import { applyFeedEvent, createFeedState } from '@sectile/core/feed';
5
+ import { setInteractionAttributes } from './internal/interaction.js';
6
+ import { createSemanticController } from './internal/semantic-controller.js';
7
+ export function createFeed(options) {
8
+ return unwrap(tryCreateFeed(options));
9
+ }
10
+ export function tryCreateFeed(options) {
11
+ return createFacadeConnection(options, (options) => tryCreateFeedConnection(options));
12
+ }
13
+ function tryCreateFeedConnection(options) { const items = createSequence(options.items); if (!items.ok)
14
+ return items; const model = { value: items.value }; const runtime = createSemanticController({ initial: createFeedState(items.value, options.defaultHighlightedValue ?? options.items[0] ?? null, options.revision ?? 0), reducer: (state, event) => applyFeedEvent(model.value, state, event), notify: (previous, proposed) => { if (previous.cursor.current !== proposed.cursor.current)
15
+ options.onHighlightedValueChange?.(proposed.cursor.current); }, toEffect: (command) => command, interaction: options }); return runtime.ok ? { ok: true, value: new DOMFeed(options, model, runtime.value) } : runtime; }
16
+ class DOMFeed {
17
+ #options;
18
+ #model;
19
+ #runtime;
20
+ #elements = new Map();
21
+ #keydown;
22
+ constructor(options, model, runtime) { this.#options = options; this.#model = model; this.#runtime = runtime; this.#keydown = (event) => { const semantic = event.key === 'ArrowDown' || event.key === 'PageDown' ? 'next' : event.key === 'ArrowUp' || event.key === 'PageUp' ? 'previous' : null; if (semantic !== null) {
23
+ this.handleEvent(semantic);
24
+ event.preventDefault();
25
+ } }; options.root.addEventListener('keydown', this.#keydown); options.root.setAttribute('role', 'feed'); setInteractionAttributes(options.root, options); }
26
+ getSnapshot() { return this.#runtime.getSnapshot(); }
27
+ syncWindow(window) { if (window.revision <= this.getSnapshot().state.revision)
28
+ return { ok: false, error: { class: 'construction', code: 'stale-feed-window', message: 'Feed window revision must increase.' } }; const items = createSequence(window.items); if (!items.ok)
29
+ return items; const state = createFeedState(items.value, window.highlightedValue ?? this.getSnapshot().state.cursor.current ?? window.items[0] ?? null, window.revision, null); if (!state.ok)
30
+ return state; this.#model.value = items.value; for (const [id, registration] of this.#elements)
31
+ if (!items.value.contains(id)) {
32
+ registration.element.removeEventListener('click', registration.click);
33
+ this.#elements.delete(id);
34
+ } const result = this.#runtime.replace(state); if (result.ok) {
35
+ this.#refresh();
36
+ this.#options.onUpdate?.();
37
+ this.focusCurrent();
38
+ } return result; }
39
+ setItemAttributes(element, id) { if (!this.#model.value.contains(id))
40
+ return; const previous = this.#elements.get(id); if (previous !== undefined)
41
+ previous.element.removeEventListener('click', previous.click); const click = () => { this.handleEvent({ type: 'focus', id }); }; element.addEventListener('click', click); this.#elements.set(id, { element, click }); this.#refresh(); }
42
+ handleEvent(event) { const result = this.#runtime.handle(event); if (result.ok) {
43
+ for (const command of result.commands) {
44
+ if (command.type === 'request-window')
45
+ this.#options.onRequestWindow?.(command.direction, command.anchor, command.revision);
46
+ else
47
+ this.#elements.get(command.id)?.element.focus();
48
+ }
49
+ this.#refresh();
50
+ } this.#options.onUpdate?.(); this.focusCurrent(); return true; }
51
+ focusCurrent() { queueMicrotask(() => { const current = this.getSnapshot().state.cursor.current; if (current === null)
52
+ this.#options.root.focus();
53
+ else
54
+ this.#elements.get(current)?.element.focus(); }); }
55
+ disconnect() { this.#options.root.removeEventListener('keydown', this.#keydown); for (const { element, click } of this.#elements.values())
56
+ element.removeEventListener('click', click); this.#elements.clear(); }
57
+ #refresh() { const current = this.getSnapshot().state.cursor.current; if (this.#options.label !== undefined)
58
+ this.#options.root.setAttribute('aria-label', this.#options.label); for (const [id, { element }] of this.#elements) {
59
+ element.setAttribute('role', 'article');
60
+ if (this.#options.setSize !== undefined)
61
+ element.setAttribute('aria-setsize', String(this.#options.setSize));
62
+ const position = this.#options.getPosition?.(id);
63
+ if (position !== undefined)
64
+ element.setAttribute('aria-posinset', String(position));
65
+ element.tabIndex = id === current ? 0 : -1;
66
+ } }
67
+ }
68
+ //# sourceMappingURL=feed.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"feed.js","sourceRoot":"","sources":["../src/feed.ts"],"names":[],"mappings":"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"}
package/dist/grid.d.ts ADDED
@@ -0,0 +1,43 @@
1
+ import { type FacadeConnection } from './internal/facade.js';
2
+ import type { Result, StableID } from '@sectile/core';
3
+ import { type Grid, type GridEditMode, type GridEvent, type GridOptions as StructureGridOptions, type GridPolicies, type GridState } from '@sectile/core/grid';
4
+ import type { RevisionSnapshot } from '@sectile/core/revision';
5
+ export interface GridOptions<ID extends StableID = StableID> extends StructureGridOptions {
6
+ readonly root: HTMLElement;
7
+ readonly rows: readonly (readonly (ID | null)[])[];
8
+ readonly value?: ID | null;
9
+ readonly defaultValue?: ID | null;
10
+ readonly highlightedValue?: ID | null;
11
+ readonly defaultHighlightedValue?: ID | null;
12
+ readonly editMode?: GridEditMode;
13
+ readonly defaultEditMode?: GridEditMode;
14
+ readonly policies?: GridPolicies<ID>;
15
+ readonly disabledItems?: readonly ID[];
16
+ readonly disabled?: boolean;
17
+ readonly readOnly?: boolean;
18
+ readonly label?: string;
19
+ readonly onValueChange?: (value: ID | null) => void;
20
+ readonly onHighlightedValueChange?: (value: ID | null) => void;
21
+ readonly onEditModeChange?: (mode: GridEditMode) => void;
22
+ readonly onEditStart?: (id: ID) => void;
23
+ readonly onEditCommit?: (id: ID) => void;
24
+ readonly onEditCancel?: (id: ID) => void;
25
+ readonly onUpdate?: () => void;
26
+ }
27
+ export interface GridControlledValues<ID extends StableID = StableID> {
28
+ readonly value?: ID | null;
29
+ readonly highlightedValue?: ID | null;
30
+ readonly editMode?: GridEditMode;
31
+ }
32
+ export interface GridConnection<ID extends StableID = StableID> {
33
+ readonly grid: Grid<ID>;
34
+ getSnapshot(): RevisionSnapshot<GridState<ID>>;
35
+ syncControlledValues(values: GridControlledValues<ID>): Result<RevisionSnapshot<GridState<ID>>>;
36
+ setCellAttributes(element: HTMLElement, id: ID): void;
37
+ handleEvent(event: GridEvent<ID>): boolean;
38
+ focusCurrent(): void;
39
+ disconnect(): void;
40
+ }
41
+ export declare function createGridControl<ID extends StableID>(options: GridOptions<ID>): FacadeConnection<GridConnection<ID>>;
42
+ export declare function tryCreateGridControl<ID extends StableID>(options: GridOptions<ID>): Result<FacadeConnection<GridConnection<ID>>>;
43
+ //# sourceMappingURL=grid.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grid.d.ts","sourceRoot":"","sources":["../src/grid.ts"],"names":[],"mappings":"AAAA,OAAO,EAA0B,KAAK,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAErF,OAAO,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACtD,OAAO,EAA+C,KAAK,IAAI,EAAoB,KAAK,YAAY,EAAE,KAAK,SAAS,EAAE,KAAK,WAAW,IAAI,oBAAoB,EAAE,KAAK,YAAY,EAAE,KAAK,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC9N,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAI/D,MAAM,WAAW,WAAW,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ,CAAE,SAAQ,oBAAoB;IACvF,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,SAAS,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;IACnD,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC;IAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC;IAC9D,QAAQ,CAAC,gBAAgB,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC;IAAC,QAAQ,CAAC,uBAAuB,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC;IACpF,QAAQ,CAAC,QAAQ,CAAC,EAAE,YAAY,CAAC;IAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,YAAY,CAAC;IAC1E,QAAQ,CAAC,QAAQ,CAAC,EAAE,YAAY,CAAC,EAAE,CAAC,CAAC;IACrC,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,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,IAAI,CAAC;IACpD,QAAQ,CAAC,wBAAwB,CAAC,EAAE,CAAC,KAAK,EAAE,EAAE,GAAG,IAAI,KAAK,IAAI,CAAC;IAC/D,QAAQ,CAAC,gBAAgB,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,IAAI,CAAC;IACzD,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,IAAI,CAAC;IACxC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,IAAI,CAAC;IACzC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,IAAI,CAAC;IACzC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,IAAI,CAAC;CAChC;AACD,MAAM,WAAW,oBAAoB,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ;IAAI,QAAQ,CAAC,KAAK,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC;IAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,EAAE,GAAG,IAAI,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,YAAY,CAAA;CAAE;AAC7K,MAAM,WAAW,cAAc,CAAC,EAAE,SAAS,QAAQ,GAAG,QAAQ;IAC5D,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;IACxB,WAAW,IAAI,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC;IAC/C,oBAAoB,CAAC,MAAM,EAAE,oBAAoB,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,gBAAgB,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAChG,iBAAiB,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,EAAE,EAAE,GAAG,IAAI,CAAC;IACtD,WAAW,CAAC,KAAK,EAAE,SAAS,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC;IAC3C,YAAY,IAAI,IAAI,CAAC;IACrB,UAAU,IAAI,IAAI,CAAC;CACpB;AAED,wBAAgB,iBAAiB,CAAC,EAAE,SAAS,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,CAAC,GAAG,gBAAgB,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAErH;AAED,wBAAgB,oBAAoB,CAAC,EAAE,SAAS,QAAQ,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,gBAAgB,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,CAEhI"}
package/dist/grid.js ADDED
@@ -0,0 +1,165 @@
1
+ import { createFacadeConnection } from './internal/facade.js';
2
+ import { unwrap } from '@sectile/core/result';
3
+ import { applyGridEvent, createGrid, createGridState } from '@sectile/core/grid';
4
+ import { createSemanticController } from './internal/semantic-controller.js';
5
+ import { setInteractionAttributes } from './internal/interaction.js';
6
+ export function createGridControl(options) {
7
+ return unwrap(tryCreateGridControl(options));
8
+ }
9
+ export function tryCreateGridControl(options) {
10
+ return createFacadeConnection(options, (options) => tryCreateGridControlConnection(options));
11
+ }
12
+ function tryCreateGridControlConnection(options) {
13
+ const grid = createGrid(options.rows, options);
14
+ if (!grid.ok)
15
+ return grid;
16
+ const disabled = new Set(options.disabledItems ?? []);
17
+ for (const id of disabled)
18
+ if (grid.value.positionOf(id) === null)
19
+ return { ok: false, error: { class: 'construction', code: 'disabled-item-outside-domain', message: 'Every disabled grid cell must exist in the grid.', details: { id } } };
20
+ const suppliedEligibility = options.policies?.eligible;
21
+ const policies = { ...options.policies, eligible: (id) => !disabled.has(id) && (suppliedEligibility?.(id) ?? true) };
22
+ const valueControlled = options.value !== undefined;
23
+ const highlightControlled = options.highlightedValue !== undefined;
24
+ const editControlled = options.editMode !== undefined;
25
+ const selected = options.value !== undefined ? options.value : options.defaultValue ?? null;
26
+ const runtime = createSemanticController({
27
+ initial: createGridState(grid.value, { current: options.highlightedValue !== undefined ? options.highlightedValue : options.defaultHighlightedValue ?? null, selected: selected === null ? [] : [selected], anchor: selected, editMode: options.editMode ?? options.defaultEditMode ?? 'navigation' }),
28
+ reducer: (state, event) => applyGridEvent(grid.value, state, event, policies),
29
+ reconcile: (previous, proposed) => createGridState(grid.value, { current: highlightControlled ? previous.cursor.current : proposed.cursor.current, selected: valueControlled ? previous.selection.selected : proposed.selection.selected, anchor: valueControlled ? previous.selection.anchor : proposed.selection.anchor, editMode: editControlled ? previous.editMode : proposed.editMode }),
30
+ notify: (previous, proposed) => { const before = previous.selection.selected[0] ?? null; const after = proposed.selection.selected[0] ?? null; if (before !== after)
31
+ options.onValueChange?.(after); if (previous.cursor.current !== proposed.cursor.current)
32
+ options.onHighlightedValueChange?.(proposed.cursor.current); if (previous.editMode !== proposed.editMode)
33
+ options.onEditModeChange?.(proposed.editMode); },
34
+ toEffect: (command) => command,
35
+ interaction: options,
36
+ interactionIntent: gridIntent,
37
+ });
38
+ if (!runtime.ok)
39
+ return runtime;
40
+ return { ok: true, value: new DOMGrid(options, grid.value, runtime.value, disabled, valueControlled, highlightControlled, editControlled) };
41
+ }
42
+ class DOMGrid {
43
+ grid;
44
+ #options;
45
+ #runtime;
46
+ #elements = new Map();
47
+ #disabled;
48
+ #valueControlled;
49
+ #highlightControlled;
50
+ #editControlled;
51
+ #keydown;
52
+ #click;
53
+ #focus;
54
+ constructor(options, grid, runtime, disabled, valueControlled, highlightControlled, editControlled) {
55
+ this.#options = options;
56
+ this.grid = grid;
57
+ this.#runtime = runtime;
58
+ this.#disabled = disabled;
59
+ this.#valueControlled = valueControlled;
60
+ this.#highlightControlled = highlightControlled;
61
+ this.#editControlled = editControlled;
62
+ this.#keydown = (event) => { const semantic = toGridEvent(event, this.getSnapshot().state.editMode); if (semantic !== null && this.handleEvent(semantic))
63
+ event.preventDefault(); };
64
+ this.#click = (event) => { const id = this.#findID(event.target); if (id !== null)
65
+ this.handleEvent({ type: 'select', id }); };
66
+ this.#focus = (event) => { const id = this.#findID(event.target); if (id === null || id === this.getSnapshot().state.cursor.current)
67
+ return; const result = this.#runtime.handle({ type: 'focus', id }); if (result.ok)
68
+ this.#refresh(); queueMicrotask(() => { this.#options.onUpdate?.(); this.focusCurrent(); }); };
69
+ options.root.addEventListener('keydown', this.#keydown);
70
+ options.root.addEventListener('click', this.#click);
71
+ options.root.addEventListener('focusin', this.#focus);
72
+ options.root.setAttribute('role', 'grid');
73
+ options.root.setAttribute('aria-rowcount', String(grid.rowCount));
74
+ options.root.setAttribute('aria-colcount', String(grid.columnCount));
75
+ if (options.label !== undefined)
76
+ options.root.setAttribute('aria-label', options.label);
77
+ setInteractionAttributes(options.root, options, { readOnly: true });
78
+ }
79
+ getSnapshot() { return this.#runtime.getSnapshot(); }
80
+ syncControlledValues(values) {
81
+ if (this.#valueControlled !== (values.value !== undefined) || this.#highlightControlled !== (values.highlightedValue !== undefined) || this.#editControlled !== (values.editMode !== undefined))
82
+ return { ok: false, error: { class: 'construction', code: 'controlled-shape-mismatch', message: 'Controlled grid values must preserve their construction-time shape.' } };
83
+ const current = this.getSnapshot().state;
84
+ const selected = values.value === undefined ? current.selection.selected : values.value === null ? [] : [values.value];
85
+ const result = this.#runtime.replace(createGridState(this.grid, { current: values.highlightedValue === undefined ? current.cursor.current : values.highlightedValue, selected, anchor: values.value === undefined ? current.selection.anchor : values.value, editMode: values.editMode ?? current.editMode }));
86
+ if (result.ok) {
87
+ this.#refresh();
88
+ this.#options.onUpdate?.();
89
+ this.focusCurrent();
90
+ }
91
+ return result;
92
+ }
93
+ setCellAttributes(element, id) { if (this.grid.positionOf(id) !== null) {
94
+ this.#elements.set(id, element);
95
+ this.#refresh();
96
+ } }
97
+ handleEvent(event) { const result = this.#runtime.handle(event); if (result.ok) {
98
+ for (const command of result.commands) {
99
+ if (command.type === 'focus')
100
+ this.#elements.get(command.id)?.focus();
101
+ else if (command.type === 'begin-edit')
102
+ this.#options.onEditStart?.(command.id);
103
+ else if (command.type === 'commit-edit')
104
+ this.#options.onEditCommit?.(command.id);
105
+ else
106
+ this.#options.onEditCancel?.(command.id);
107
+ }
108
+ this.#refresh();
109
+ this.#options.onUpdate?.();
110
+ this.focusCurrent();
111
+ } return result.ok; }
112
+ focusCurrent() { queueMicrotask(() => { const current = this.getSnapshot().state.cursor.current; if (current === null)
113
+ this.#options.root.focus();
114
+ else
115
+ this.#elements.get(current)?.focus(); }); }
116
+ disconnect() { this.#options.root.removeEventListener('keydown', this.#keydown); this.#options.root.removeEventListener('click', this.#click); this.#options.root.removeEventListener('focusin', this.#focus); this.#elements.clear(); }
117
+ #findID(target) { for (const [id, element] of this.#elements)
118
+ if (target === element || (target instanceof Node && element.contains(target)))
119
+ return id; return null; }
120
+ #refresh() { const state = this.getSnapshot().state; for (const [id, element] of this.#elements) {
121
+ const position = this.grid.positionOf(id);
122
+ if (position === null)
123
+ continue;
124
+ element.setAttribute('role', 'gridcell');
125
+ element.setAttribute('aria-rowindex', String(position.row + 1));
126
+ element.setAttribute('aria-colindex', String(position.column + 1));
127
+ element.setAttribute('aria-selected', String(state.selection.has(id)));
128
+ if (this.#disabled.has(id))
129
+ element.setAttribute('aria-disabled', 'true');
130
+ else
131
+ element.removeAttribute('aria-disabled');
132
+ element.tabIndex = state.cursor.current === id ? 0 : -1;
133
+ } }
134
+ }
135
+ function gridIntent(event) {
136
+ const type = typeof event === 'object' ? event.type : event;
137
+ return type === 'start-edit' || type === 'commit-edit' || type === 'cancel-edit' ? 'mutate' : 'navigate';
138
+ }
139
+ function toGridEvent(event, editMode) {
140
+ if (event.isComposing || event.ctrlKey || event.metaKey)
141
+ return null;
142
+ if (editMode === 'editing') {
143
+ if (event.key === 'Enter')
144
+ return 'commit-edit';
145
+ if (event.key === 'Escape')
146
+ return 'cancel-edit';
147
+ return null;
148
+ }
149
+ if (event.altKey)
150
+ return null;
151
+ if (event.key === 'ArrowLeft')
152
+ return 'left';
153
+ if (event.key === 'ArrowRight')
154
+ return 'right';
155
+ if (event.key === 'ArrowUp')
156
+ return 'up';
157
+ if (event.key === 'ArrowDown')
158
+ return 'down';
159
+ if (event.key === ' ')
160
+ return 'select';
161
+ if (event.key === 'Enter' || event.key === 'F2')
162
+ return 'start-edit';
163
+ return null;
164
+ }
165
+ //# sourceMappingURL=grid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grid.js","sourceRoot":"","sources":["../src/grid.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ export type { FacadeConnection } from './internal/facade.js';
2
+ export { connectListbox, createListbox, tryCreateListbox, createListboxController, toListboxEffect, toListboxEvent, type KeyboardInput, type ListboxControlledValues, type ListboxConnection, type ListboxConnectionOptions, type ListboxController, type ListboxControllerOptions, type ListboxEffect, type ListboxHighlightChangeDetails, type ListboxItemAttributes, type ListboxOptions, type ListboxTransitionDetails, type ListboxValueChangeDetails, } from './listbox.js';
3
+ export { createCheckboxGroup, tryCreateCheckboxGroup, type CheckboxGroupConnection, type CheckboxGroupOptions } from './checkbox-group.js';
4
+ export { createSelect, tryCreateSelect, type SelectConnection, type SelectEffect, type SelectOptions } from './select.js';
5
+ export { createPagination, tryCreatePagination, type PaginationConnection, type PaginationControlledValues, type PaginationOptions, } from './pagination.js';
6
+ export { createStepper, tryCreateStepper, type StepperConnection, type StepperOptions } from './stepper.js';
7
+ export { createRating, tryCreateRating, type RatingConnection, type RatingOptions } from './rating.js';
8
+ export { createPinInput, tryCreatePinInput, type PinInputConnection, type PinInputEffect, type PinInputOptions } from './pin-input.js';
9
+ export { createTagsInput, tryCreateTagsInput, type TagsInputConnection, type TagsInputOptions } from './tags-input.js';
10
+ export { createTabs, tryCreateTabs, toTabsEffect, toTabsEvent, type TabsConnection, type TabsEffect, type TabsItemAttributes, type TabsOptions, } from './tabs.js';
11
+ export { createRadioGroup, tryCreateRadioGroup, toRadioGroupEvent, type RadioGroupConnection, type RadioGroupEffect, type RadioGroupOptions, } from './radio-group.js';
12
+ export { createToolbar, tryCreateToolbar, toToolbarEvent, type ToolbarConnection, type ToolbarEffect, type ToolbarOptions, } from './toolbar.js';
13
+ export { createAccordion, tryCreateAccordion, toAccordionEvent, type AccordionConnection, type AccordionEffect, type AccordionOptions, } from './accordion.js';
14
+ export { createDisclosure, tryCreateDisclosure, type DisclosureConnection, type DisclosureOptions, } from './disclosure.js';
15
+ export { createCheckbox, tryCreateCheckbox, type CheckboxConnection, type CheckboxOptions, } from './checkbox.js';
16
+ export { createSwitch, tryCreateSwitch, type SwitchConnection, type SwitchOptions } from './switch.js';
17
+ export { createToggleButton, tryCreateToggleButton, type ToggleButtonConnection, type ToggleButtonOptions } from './toggle-button.js';
18
+ export { createWindowSplitter, tryCreateWindowSplitter, type WindowSplitterConnection, type WindowSplitterOptions } from './window-splitter.js';
19
+ export { createSpinButton, tryCreateSpinButton, toSpinButtonEvent, type SpinButtonConnection, type SpinButtonOptions } from './spin-button.js';
20
+ export { createNumberField, tryCreateNumberField, type NumberFieldConnection, type NumberFieldOptions, type NumberFieldValueChangeDetails } from './number-field.js';
21
+ export { createQuantityField, tryCreateQuantityField, type QuantityFieldConnection, type QuantityFieldOptions, type QuantityFieldValueChangeDetails } from './quantity-field.js';
22
+ export { createDialog, tryCreateDialog, type DialogConnection, type DialogOptions } from './dialog.js';
23
+ export { createAlertDialog, tryCreateAlertDialog, type AlertDialogConnection, type AlertDialogOptions } from './alert-dialog.js';
24
+ export { createTooltip, tryCreateTooltip, type TooltipConnection, type TooltipOptions } from './tooltip.js';
25
+ export { createMultiThumbSlider, tryCreateMultiThumbSlider, type MultiThumbSliderConnection, type MultiThumbSliderOptions } from './multi-thumb-slider.js';
26
+ export { createMenu, tryCreateMenu, type MenuConnection, type MenuOptions } from './menu.js';
27
+ export { createMenubar, tryCreateMenubar, type MenubarConnection, type MenubarOptions } from './menubar.js';
28
+ export { createMenuButton, tryCreateMenuButton, type MenuButtonConnection, type MenuButtonOptions } from './menu-button.js';
29
+ export { createCarousel, tryCreateCarousel, type CarouselAutoplayOptions, type CarouselConnection, type CarouselControlledValues, type CarouselOptions, type CarouselScheduler, } from './carousel.js';
30
+ export { createFeed, tryCreateFeed, type FeedConnection, type FeedOptions, type FeedWindow } from './feed.js';
31
+ export { createGridControl, tryCreateGridControl, type GridConnection, type GridControlledValues, type GridOptions } from './grid.js';
32
+ export { connectCalendar, createCalendar, tryCreateCalendar, createCalendarController, toCalendarEffect, toCalendarEvent, type CalendarControlledValues, type CalendarCellAttributes, type CalendarConnection, type CalendarConnectionOptions, type CalendarController, type CalendarControllerOptions, type CalendarEffect, type CalendarHighlightChangeDetails, type CalendarOptions, type CalendarPageRequestDetails, type CalendarTransitionDetails, type CalendarValueChangeDetails, type KeyboardInput as CalendarKeyboardInput, } from './calendar.js';
33
+ export { connectCombobox, createCombobox, tryCreateCombobox, createComboboxController, toComboboxEffect, toComboboxEvent, toComboboxTextEvent, type ComboboxControlledValues, type ComboboxConnection, type ComboboxConnectionOptions, type ComboboxController, type ComboboxControllerOptions, type ComboboxEffect, type ComboboxHighlightChangeDetails, type ComboboxItem, type ComboboxItemAttributes, type ComboboxOptions, type ComboboxInputStateChangeDetails, type ComboboxOpenChangeDetails, type ComboboxValueChangeDetails, type ComboboxTransitionDetails, type KeyboardInput as ComboboxKeyboardInput, } from './combobox.js';
34
+ export { connectSlider, createSlider, tryCreateSlider, createSliderController, toSliderEffect, toSliderEvent, type KeyboardInput as SliderKeyboardInput, type SliderControlledValues, type SliderConnection, type SliderConnectionOptions, type SliderController, type SliderControllerOptions, type SliderEffect, type SliderOptions, type SliderTransitionDetails, type SliderValueChangeDetails, } from './slider.js';
35
+ export { connectTreeView, createTreeView, tryCreateTreeView, createTreeViewController, toTreeViewEffect, toTreeViewEvent, type KeyboardInput as TreeViewKeyboardInput, type TreeViewControlledValues, type TreeViewConnection, type TreeViewConnectionOptions, type TreeViewController, type TreeViewControllerOptions, type TreeViewEffect, type TreeViewExpandedChangeDetails, type TreeViewHighlightChangeDetails, type TreeViewItemAttributes, type TreeViewOptions, type TreeViewTransitionDetails, type TreeViewValueChangeDetails, } from './tree-view.js';
36
+ export { connectTreeGrid, createTreeGrid, tryCreateTreeGrid, createTreeGridController, toTreeGridEffect, toTreeGridEvent, type KeyboardInput as TreeGridKeyboardInput, type TreeGridControlledValues, type TreeGridCellAttributes, type TreeGridConnection, type TreeGridConnectionOptions, type TreeGridController, type TreeGridControllerOptions, type TreeGridEditModeChangeDetails, type TreeGridEditorOptions, type TreeGridEffect, type TreeGridExpandedChangeDetails, type TreeGridHighlightChangeDetails, type TreeGridOptions, type TreeGridRowAttributes, type TreeGridTransitionDetails, type TreeGridValueChangeDetails, } from './tree-grid.js';
37
+ export { connectText, createText, tryCreateText, createTextController, toTextEvent, type TextControlledValues, type TextConnection, type TextConnectionOptions, type TextController, type TextControllerOptions, type TextInput as DOMTextInput, type TextElement, type TextOptions, type TextTransitionDetails, type TextValueChangeDetails, } from './text.js';
38
+ export { createDateField, tryCreateDateField, type DateFieldConnection, type DateFieldControlledValues, type DateFieldOptions } from './date-field.js';
39
+ export { createDateTimeField, tryCreateDateTimeField, type DateTimeFieldConnection, type DateTimeFieldControlledValues, type DateTimeFieldOptions } from './date-time-field.js';
40
+ export { createTimeField, tryCreateTimeField, type TimeFieldConnection, type TimeFieldControlledValues, type TimeFieldOptions } from './time-field.js';
41
+ export { createDatePicker, tryCreateDatePicker, type DatePickerConnection, type DatePickerControlledValues, type DatePickerOptions } from './date-picker.js';
42
+ export { createDateRangePicker, tryCreateDateRangePicker, type DateRangePickerConnection, type DateRangePickerControlledValues, type DateRangePickerOptions } from './date-range-picker.js';
43
+ export { createDateTimePicker, tryCreateDateTimePicker, type DateTimePickerConnection, type DateTimePickerControlledValues, type DateTimePickerOptions } from './date-time-picker.js';
44
+ export { createDateTimeRangePicker, tryCreateDateTimeRangePicker, type DateTimeRangePickerConnection, type DateTimeRangePickerControlledValues, type DateTimeRangePickerOptions } from './date-time-range-picker.js';
45
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}