@sectile/vue 0.7.0 → 0.9.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 (319) hide show
  1. package/README.md +4 -2
  2. package/dist/accordion.d.ts +0 -1
  3. package/dist/alert-dialog.d.ts +0 -2
  4. package/dist/alert-dialog.js.map +1 -1
  5. package/dist/calendar.d.ts +2 -3
  6. package/dist/calendar.js +14 -14
  7. package/dist/calendar.js.map +1 -1
  8. package/dist/carousel.d.ts +22 -1
  9. package/dist/carousel.js +7 -1
  10. package/dist/carousel.js.map +1 -1
  11. package/dist/cascade-list.d.ts +339 -0
  12. package/dist/cascade-list.js +240 -0
  13. package/dist/cascade-list.js.map +1 -0
  14. package/dist/cascade-select.d.ts +11 -42
  15. package/dist/cascade-select.js +19 -27
  16. package/dist/cascade-select.js.map +1 -1
  17. package/dist/checkbox-group.d.ts +9 -1
  18. package/dist/checkbox-group.js +57 -13
  19. package/dist/checkbox-group.js.map +1 -1
  20. package/dist/checkbox.d.ts +0 -1
  21. package/dist/checkbox.js +15 -8
  22. package/dist/checkbox.js.map +1 -1
  23. package/dist/color-picker.d.ts +0 -1
  24. package/dist/combobox.d.ts +0 -1
  25. package/dist/combobox.js +46 -6
  26. package/dist/combobox.js.map +1 -1
  27. package/dist/data-grid.d.ts +207 -0
  28. package/dist/data-grid.js +107 -0
  29. package/dist/data-grid.js.map +1 -0
  30. package/dist/data-table.d.ts +239 -0
  31. package/dist/data-table.js +120 -0
  32. package/dist/data-table.js.map +1 -0
  33. package/dist/data-tree-grid.d.ts +218 -0
  34. package/dist/data-tree-grid.js +95 -0
  35. package/dist/data-tree-grid.js.map +1 -0
  36. package/dist/date-field.d.ts +1 -2
  37. package/dist/date-field.js +1 -1
  38. package/dist/date-field.js.map +1 -1
  39. package/dist/date-picker.d.ts +37 -6
  40. package/dist/date-picker.js +3 -1
  41. package/dist/date-picker.js.map +1 -1
  42. package/dist/date-range-field.d.ts +2 -3
  43. package/dist/date-range-field.js +24 -6
  44. package/dist/date-range-field.js.map +1 -1
  45. package/dist/date-range-picker.d.ts +37 -6
  46. package/dist/date-range-picker.js +3 -1
  47. package/dist/date-range-picker.js.map +1 -1
  48. package/dist/date-time-field.d.ts +1 -2
  49. package/dist/date-time-field.js +1 -1
  50. package/dist/date-time-field.js.map +1 -1
  51. package/dist/date-time-picker.d.ts +38 -7
  52. package/dist/date-time-picker.js +3 -1
  53. package/dist/date-time-picker.js.map +1 -1
  54. package/dist/date-time-range-picker.d.ts +38 -7
  55. package/dist/date-time-range-picker.js +3 -1
  56. package/dist/date-time-range-picker.js.map +1 -1
  57. package/dist/dialog.d.ts +0 -2
  58. package/dist/dialog.js.map +1 -1
  59. package/dist/disclosure.d.ts +0 -1
  60. package/dist/drawer.d.ts +1 -2
  61. package/dist/editable.d.ts +0 -1
  62. package/dist/editable.js +25 -6
  63. package/dist/editable.js.map +1 -1
  64. package/dist/feed.d.ts +0 -1
  65. package/dist/form.d.ts +88 -115
  66. package/dist/form.js +461 -233
  67. package/dist/form.js.map +1 -1
  68. package/dist/grid.d.ts +0 -1
  69. package/dist/grid.js +51 -6
  70. package/dist/grid.js.map +1 -1
  71. package/dist/host-provider.d.ts +0 -13
  72. package/dist/host-provider.js +0 -16
  73. package/dist/host-provider.js.map +1 -1
  74. package/dist/index.d.ts +14 -39
  75. package/dist/index.js +6 -19
  76. package/dist/index.js.map +1 -1
  77. package/dist/internal/cascade-choice.d.ts +204 -0
  78. package/dist/internal/cascade-choice.js +161 -0
  79. package/dist/internal/cascade-choice.js.map +1 -0
  80. package/dist/internal/collection.d.ts +3 -8
  81. package/dist/internal/collection.js +14 -20
  82. package/dist/internal/collection.js.map +1 -1
  83. package/dist/internal/controlled-state.d.ts +0 -1
  84. package/dist/internal/date-picker.d.ts +78 -9
  85. package/dist/internal/date-picker.js +116 -27
  86. package/dist/internal/date-picker.js.map +1 -1
  87. package/dist/internal/decimal-input.d.ts +1 -0
  88. package/dist/internal/decimal-input.js +24 -0
  89. package/dist/internal/decimal-input.js.map +1 -0
  90. package/dist/internal/form-control-inventory.d.ts +4 -1
  91. package/dist/internal/form-control-inventory.js +1 -0
  92. package/dist/internal/form-control-inventory.js.map +1 -1
  93. package/dist/internal/form-control.d.ts +100 -2
  94. package/dist/internal/form-control.js +103 -1
  95. package/dist/internal/form-control.js.map +1 -1
  96. package/dist/internal/native-field.d.ts +0 -1
  97. package/dist/internal/native-field.js +11 -2
  98. package/dist/internal/native-field.js.map +1 -1
  99. package/dist/internal/native-input.d.ts +0 -1
  100. package/dist/internal/part-contract.d.ts +0 -1
  101. package/dist/internal/popup.d.ts +5 -27
  102. package/dist/internal/popup.js +15 -21
  103. package/dist/internal/popup.js.map +1 -1
  104. package/dist/internal/presence.d.ts +0 -1
  105. package/dist/internal/scheduled-task.d.ts +5 -0
  106. package/dist/internal/scheduled-task.js +28 -0
  107. package/dist/internal/scheduled-task.js.map +1 -0
  108. package/dist/internal/tabs-context.d.ts +2 -3
  109. package/dist/internal/tabular-components.d.ts +27 -0
  110. package/dist/internal/tabular-components.js +26 -0
  111. package/dist/internal/tabular-components.js.map +1 -0
  112. package/dist/internal/tabular-parts.d.ts +57 -0
  113. package/dist/internal/tabular-parts.js +239 -0
  114. package/dist/internal/tabular-parts.js.map +1 -0
  115. package/dist/internal/tabular-profile.d.ts +75 -0
  116. package/dist/internal/tabular-profile.js +211 -0
  117. package/dist/internal/tabular-profile.js.map +1 -0
  118. package/dist/internal/virtual-collection-model.d.ts +42 -0
  119. package/dist/internal/virtual-collection-model.js +241 -0
  120. package/dist/internal/virtual-collection-model.js.map +1 -0
  121. package/dist/internal/virtual-collection.d.ts +38 -0
  122. package/dist/internal/virtual-collection.js +87 -0
  123. package/dist/internal/virtual-collection.js.map +1 -0
  124. package/dist/{virtual.d.ts → internal/virtual-core.d.ts} +9 -4
  125. package/dist/{virtual.js → internal/virtual-core.js} +7 -7
  126. package/dist/internal/virtual-core.js.map +1 -0
  127. package/dist/internal/virtual-list.d.ts +214 -0
  128. package/dist/internal/virtual-list.js +401 -0
  129. package/dist/internal/virtual-list.js.map +1 -0
  130. package/dist/listbox.d.ts +0 -1
  131. package/dist/listbox.js +52 -6
  132. package/dist/listbox.js.map +1 -1
  133. package/dist/menu-button.d.ts +0 -1
  134. package/dist/menu.d.ts +0 -1
  135. package/dist/menubar.d.ts +0 -1
  136. package/dist/meter-group.d.ts +369 -0
  137. package/dist/meter-group.js +271 -0
  138. package/dist/meter-group.js.map +1 -0
  139. package/dist/meter.d.ts +191 -0
  140. package/dist/meter.js +133 -0
  141. package/dist/meter.js.map +1 -0
  142. package/dist/month-picker.d.ts +37 -6
  143. package/dist/month-picker.js +3 -1
  144. package/dist/month-picker.js.map +1 -1
  145. package/dist/month-range-picker.d.ts +37 -6
  146. package/dist/month-range-picker.js +3 -1
  147. package/dist/month-range-picker.js.map +1 -1
  148. package/dist/multi-thumb-slider.d.ts +0 -1
  149. package/dist/navigation-menu.d.ts +0 -1
  150. package/dist/number-field.d.ts +0 -1
  151. package/dist/pagination.d.ts +23 -2
  152. package/dist/pagination.js +6 -1
  153. package/dist/pagination.js.map +1 -1
  154. package/dist/pin-input.d.ts +0 -1
  155. package/dist/pin-input.js +1 -1
  156. package/dist/pin-input.js.map +1 -1
  157. package/dist/popover.d.ts +0 -2
  158. package/dist/popover.js.map +1 -1
  159. package/dist/primitive.d.ts +0 -1
  160. package/dist/primitive.js +8 -4
  161. package/dist/primitive.js.map +1 -1
  162. package/dist/progress.d.ts +148 -0
  163. package/dist/progress.js +110 -0
  164. package/dist/progress.js.map +1 -0
  165. package/dist/quantity-field.d.ts +0 -1
  166. package/dist/radio-group.d.ts +0 -1
  167. package/dist/radio-group.js +1 -1
  168. package/dist/radio-group.js.map +1 -1
  169. package/dist/range-calendar.d.ts +2 -3
  170. package/dist/rating.d.ts +0 -1
  171. package/dist/rating.js +10 -1
  172. package/dist/rating.js.map +1 -1
  173. package/dist/reorder.d.ts +1 -2
  174. package/dist/select.d.ts +18 -44
  175. package/dist/select.js +11 -13
  176. package/dist/select.js.map +1 -1
  177. package/dist/slider.d.ts +0 -1
  178. package/dist/spin-button.d.ts +0 -1
  179. package/dist/spin-button.js +17 -4
  180. package/dist/spin-button.js.map +1 -1
  181. package/dist/stepper.d.ts +0 -1
  182. package/dist/stepper.js +19 -2
  183. package/dist/stepper.js.map +1 -1
  184. package/dist/switch.d.ts +0 -1
  185. package/dist/tabs.d.ts +0 -1
  186. package/dist/tabs.js +4 -22
  187. package/dist/tabs.js.map +1 -1
  188. package/dist/tags-input.d.ts +0 -1
  189. package/dist/tags-input.js +18 -5
  190. package/dist/tags-input.js.map +1 -1
  191. package/dist/temporal-provider.d.ts +21 -0
  192. package/dist/temporal-provider.js +30 -0
  193. package/dist/temporal-provider.js.map +1 -0
  194. package/dist/text.d.ts +0 -1
  195. package/dist/text.js +18 -4
  196. package/dist/text.js.map +1 -1
  197. package/dist/time-field.d.ts +1 -2
  198. package/dist/time-field.js +1 -1
  199. package/dist/time-field.js.map +1 -1
  200. package/dist/time-range-field.d.ts +2 -2
  201. package/dist/time-range-field.js +6 -4
  202. package/dist/time-range-field.js.map +1 -1
  203. package/dist/timer.d.ts +0 -1
  204. package/dist/toast.d.ts +11 -2
  205. package/dist/toast.js +22 -9
  206. package/dist/toast.js.map +1 -1
  207. package/dist/toggle-button.d.ts +0 -1
  208. package/dist/toggle-group.d.ts +0 -1
  209. package/dist/toggle-group.js +1 -1
  210. package/dist/toggle-group.js.map +1 -1
  211. package/dist/toolbar.d.ts +0 -1
  212. package/dist/tooltip.d.ts +1 -3
  213. package/dist/tooltip.js.map +1 -1
  214. package/dist/tree-grid.d.ts +0 -1
  215. package/dist/tree-grid.js +62 -8
  216. package/dist/tree-grid.js.map +1 -1
  217. package/dist/tree-view.d.ts +0 -1
  218. package/dist/tree-view.js +51 -10
  219. package/dist/tree-view.js.map +1 -1
  220. package/dist/virtual-core.d.ts +1 -0
  221. package/dist/virtual-core.js +2 -0
  222. package/dist/virtual-core.js.map +1 -0
  223. package/dist/virtual-grid.d.ts +188 -0
  224. package/dist/virtual-grid.js +306 -0
  225. package/dist/virtual-grid.js.map +1 -0
  226. package/dist/virtual-list.d.ts +1 -0
  227. package/dist/virtual-list.js +2 -0
  228. package/dist/virtual-list.js.map +1 -0
  229. package/dist/virtual-masonry.d.ts +198 -0
  230. package/dist/virtual-masonry.js +221 -0
  231. package/dist/virtual-masonry.js.map +1 -0
  232. package/dist/virtual-spatial.d.ts +157 -0
  233. package/dist/virtual-spatial.js +159 -0
  234. package/dist/virtual-spatial.js.map +1 -0
  235. package/dist/window-splitter.d.ts +0 -1
  236. package/dist/year-picker.d.ts +37 -6
  237. package/dist/year-picker.js +3 -1
  238. package/dist/year-picker.js.map +1 -1
  239. package/dist/year-range-picker.d.ts +37 -6
  240. package/dist/year-range-picker.js +3 -1
  241. package/dist/year-range-picker.js.map +1 -1
  242. package/package.json +173 -89
  243. package/dist/accordion.d.ts.map +0 -1
  244. package/dist/alert-dialog.d.ts.map +0 -1
  245. package/dist/calendar.d.ts.map +0 -1
  246. package/dist/carousel.d.ts.map +0 -1
  247. package/dist/cascade-select.d.ts.map +0 -1
  248. package/dist/checkbox-group.d.ts.map +0 -1
  249. package/dist/checkbox.d.ts.map +0 -1
  250. package/dist/color-picker.d.ts.map +0 -1
  251. package/dist/combobox.d.ts.map +0 -1
  252. package/dist/date-field.d.ts.map +0 -1
  253. package/dist/date-picker.d.ts.map +0 -1
  254. package/dist/date-range-field.d.ts.map +0 -1
  255. package/dist/date-range-picker.d.ts.map +0 -1
  256. package/dist/date-time-field.d.ts.map +0 -1
  257. package/dist/date-time-picker.d.ts.map +0 -1
  258. package/dist/date-time-range-picker.d.ts.map +0 -1
  259. package/dist/dialog.d.ts.map +0 -1
  260. package/dist/disclosure.d.ts.map +0 -1
  261. package/dist/drawer.d.ts.map +0 -1
  262. package/dist/editable.d.ts.map +0 -1
  263. package/dist/feed.d.ts.map +0 -1
  264. package/dist/form.d.ts.map +0 -1
  265. package/dist/grid.d.ts.map +0 -1
  266. package/dist/host-provider.d.ts.map +0 -1
  267. package/dist/index.d.ts.map +0 -1
  268. package/dist/internal/collection.d.ts.map +0 -1
  269. package/dist/internal/controlled-state.d.ts.map +0 -1
  270. package/dist/internal/date-picker.d.ts.map +0 -1
  271. package/dist/internal/form-control-inventory.d.ts.map +0 -1
  272. package/dist/internal/form-control.d.ts.map +0 -1
  273. package/dist/internal/native-field.d.ts.map +0 -1
  274. package/dist/internal/native-input.d.ts.map +0 -1
  275. package/dist/internal/part-contract.d.ts.map +0 -1
  276. package/dist/internal/popup.d.ts.map +0 -1
  277. package/dist/internal/presence.d.ts.map +0 -1
  278. package/dist/internal/tabs-context.d.ts.map +0 -1
  279. package/dist/listbox.d.ts.map +0 -1
  280. package/dist/menu-button.d.ts.map +0 -1
  281. package/dist/menu.d.ts.map +0 -1
  282. package/dist/menubar.d.ts.map +0 -1
  283. package/dist/month-picker.d.ts.map +0 -1
  284. package/dist/month-range-picker.d.ts.map +0 -1
  285. package/dist/multi-thumb-slider.d.ts.map +0 -1
  286. package/dist/navigation-menu.d.ts.map +0 -1
  287. package/dist/number-field.d.ts.map +0 -1
  288. package/dist/pagination.d.ts.map +0 -1
  289. package/dist/pin-input.d.ts.map +0 -1
  290. package/dist/popover.d.ts.map +0 -1
  291. package/dist/primitive.d.ts.map +0 -1
  292. package/dist/quantity-field.d.ts.map +0 -1
  293. package/dist/radio-group.d.ts.map +0 -1
  294. package/dist/range-calendar.d.ts.map +0 -1
  295. package/dist/rating.d.ts.map +0 -1
  296. package/dist/reorder.d.ts.map +0 -1
  297. package/dist/select.d.ts.map +0 -1
  298. package/dist/slider.d.ts.map +0 -1
  299. package/dist/spin-button.d.ts.map +0 -1
  300. package/dist/stepper.d.ts.map +0 -1
  301. package/dist/switch.d.ts.map +0 -1
  302. package/dist/tabs.d.ts.map +0 -1
  303. package/dist/tags-input.d.ts.map +0 -1
  304. package/dist/text.d.ts.map +0 -1
  305. package/dist/time-field.d.ts.map +0 -1
  306. package/dist/time-range-field.d.ts.map +0 -1
  307. package/dist/timer.d.ts.map +0 -1
  308. package/dist/toast.d.ts.map +0 -1
  309. package/dist/toggle-button.d.ts.map +0 -1
  310. package/dist/toggle-group.d.ts.map +0 -1
  311. package/dist/toolbar.d.ts.map +0 -1
  312. package/dist/tooltip.d.ts.map +0 -1
  313. package/dist/tree-grid.d.ts.map +0 -1
  314. package/dist/tree-view.d.ts.map +0 -1
  315. package/dist/virtual.d.ts.map +0 -1
  316. package/dist/virtual.js.map +0 -1
  317. package/dist/window-splitter.d.ts.map +0 -1
  318. package/dist/year-picker.d.ts.map +0 -1
  319. package/dist/year-range-picker.d.ts.map +0 -1
@@ -0,0 +1,107 @@
1
+ import { getCurrentScope, onScopeDispose, toValue, watch } from 'vue';
2
+ import { connectDataGrid } from '@sectile/dom/tabular';
3
+ import { createDataGrid, } from '@sectile/tabular/data-grid';
4
+ import { createTabularComponentSuite } from './internal/tabular-components.js';
5
+ import { createTabularParts } from './internal/tabular-parts.js';
6
+ import { aliasVueProfileController, controlledValues, createVueProfileController, useProfile, useProfileSource } from './internal/tabular-profile.js';
7
+ const hosts = new WeakMap();
8
+ export function useDataGrid(options) {
9
+ for (const property of ['query', 'rowSelection', 'columnState', 'accessState', 'cursor', 'editState', 'columnSizeState'])
10
+ assertExclusive(options, property);
11
+ const semantic = createDataGrid({
12
+ columns: options.initialView?.columnSchema.columns ?? [],
13
+ headers: options.initialView?.columnSchema.headers ?? [],
14
+ ...(options.limits === undefined ? {} : { limits: options.limits }),
15
+ ...(options.isCellDisabled === undefined ? {} : { isCellDisabled: options.isCellDisabled }),
16
+ controlled: { query: options.query !== undefined, rowSelection: options.rowSelection !== undefined, columnState: options.columnState !== undefined, accessState: options.accessState !== undefined, expansion: false },
17
+ initialValues: {
18
+ ...(options.query === undefined && options.defaultQuery === undefined ? {} : { query: options.query?.value ?? options.defaultQuery }),
19
+ ...(options.rowSelection === undefined && options.defaultRowSelection === undefined ? {} : { rowSelection: options.rowSelection?.value ?? options.defaultRowSelection }),
20
+ ...(options.columnState === undefined && options.defaultColumnState === undefined ? {} : { columnState: options.columnState?.value ?? options.defaultColumnState }),
21
+ ...(options.accessState === undefined && options.defaultAccessState === undefined ? {} : { accessState: options.accessState?.value ?? options.defaultAccessState }),
22
+ },
23
+ ...(options.onQueryChange === undefined ? {} : { onQueryChange: options.onQueryChange }),
24
+ ...(options.onRowSelectionChange === undefined ? {} : { onRowSelectionChange: options.onRowSelectionChange }),
25
+ ...(options.onColumnStateChange === undefined ? {} : { onColumnStateChange: options.onColumnStateChange }),
26
+ ...(options.onAccessStateChange === undefined ? {} : { onAccessStateChange: options.onAccessStateChange }),
27
+ });
28
+ const base = createVueProfileController(semantic);
29
+ const notify = (before, after) => {
30
+ if (before.cursor !== after.cursor)
31
+ options.onCursorChange?.(after.cursor);
32
+ if (before.edit !== after.edit)
33
+ options.onEditStateChange?.(after.edit);
34
+ };
35
+ const controller = Object.freeze({
36
+ ...base,
37
+ dispatch: (event, revision) => { const before = base.getSnapshot(); const result = base.dispatch(event, revision); if (result.ok)
38
+ notify(before, result.value.snapshot); return result; },
39
+ synchronizeView: (response) => { const before = base.getSnapshot(); const result = base.synchronizeView(response); if (result.ok)
40
+ notify(before, result.value); return result; },
41
+ syncControlledValues: (values) => { const before = base.getSnapshot(); const result = base.syncControlledValues(values); if (result.ok)
42
+ notify(before, result.value); return result; },
43
+ requestView: () => { const before = base.getSnapshot(); const result = base.requestView(); if (result.ok)
44
+ notify(before, result.value); return result; },
45
+ abandonRequest: (requestID) => { const before = base.getSnapshot(); const result = base.abandonRequest(requestID); if (result.ok)
46
+ notify(before, result.value); return result; },
47
+ getProjection: () => semantic.getProjection(),
48
+ });
49
+ aliasVueProfileController(controller, base);
50
+ hosts.set(controller, Object.freeze({ ...(options.columnSizeState === undefined ? {} : { columnSizes: options.columnSizeState.value }), ...(options.defaultColumnSizeState === undefined ? {} : { defaultColumnSizes: options.defaultColumnSizeState }), ...(options.onColumnSizeStateChange === undefined ? {} : { onColumnSizesChange: options.onColumnSizeStateChange }) }));
51
+ if (options.initialView !== undefined)
52
+ unwrap(controller.synchronizeView(options.initialView));
53
+ const source = useProfileSource(controller, options.source, {
54
+ ...(options.onSourceError === undefined ? {} : { onError: options.onSourceError }),
55
+ ...(options.onSourceStatusChange === undefined ? {} : { onStatusChange: options.onSourceStatusChange }),
56
+ });
57
+ const desiredCursor = options.cursor?.value ?? options.defaultCursor;
58
+ if (desiredCursor?.current !== null && desiredCursor?.current !== undefined && controller.getProjection().rows.length > 0)
59
+ unwrap(controller.dispatch({ type: 'focus-cell', cell: desiredCursor.current }));
60
+ const stops = [];
61
+ const sync = () => unwrap(controller.syncControlledValues(controlledValues(options)));
62
+ for (const source of [options.query, options.rowSelection, options.columnState, options.accessState])
63
+ if (source !== undefined)
64
+ stops.push(watch(() => source.value, sync));
65
+ if (options.sourceKey !== undefined)
66
+ stops.push(watch(() => toValue(options.sourceKey), () => { unwrap(controller.dispatch({ type: 'replace-source' })); }));
67
+ if (options.cursor !== undefined)
68
+ stops.push(watch(() => options.cursor.value, (value) => { if (value.current !== null)
69
+ unwrap(controller.dispatch({ type: 'focus-cell', cell: value.current })); }));
70
+ if (options.editState !== undefined)
71
+ stops.push(watch(() => options.editState.value, (value) => { unwrap(controller.dispatch(value.kind === 'editing' ? { type: 'begin-edit', cell: value.cell } : { type: 'cancel-edit', reason: 'application' })); }));
72
+ const rawDispose = controller.dispose;
73
+ const wrapped = Object.freeze({ ...controller, status: source.status, error: source.error, reload: source.reload, cancel: source.cancel, replaceResolver: (resolver) => source.replaceResolver(resolver), dispose: () => { for (const stop of stops.splice(0))
74
+ stop(); source.dispose(); rawDispose(); } });
75
+ aliasVueProfileController(wrapped, controller);
76
+ hosts.set(wrapped, hosts.get(controller) ?? {});
77
+ if (getCurrentScope() !== undefined)
78
+ onScopeDispose(wrapped.dispose);
79
+ return wrapped;
80
+ }
81
+ const publicKey = Symbol('SectileDataGrid');
82
+ const privateKey = Symbol('SectileDataGridHost');
83
+ export function useDataGridContext() { return useProfile(publicKey, 'useDataGridContext'); }
84
+ const parts = createTabularParts({ profile: 'data-grid', prefix: 'DataGrid', publicKey, privateKey, connect: (element, controller, callbacks) => connectDataGrid({ controller: controller, root: element, ...hosts.get(controller), ...(callbacks.onCommand === undefined ? {} : { onCommand: callbacks.onCommand }), onSnapshotChange: callbacks.onSnapshotChange }) });
85
+ const componentSuites = new WeakMap();
86
+ export function createDataGridComponents(controller) {
87
+ return createTabularComponentSuite(parts, controller, componentSuites, 'DataGrid', {
88
+ Root: 'Root',
89
+ Header: 'Header',
90
+ HeaderRow: 'HeaderRow',
91
+ ColumnHeader: 'ColumnHeader',
92
+ SortTrigger: 'SortTrigger',
93
+ FilterControl: 'FilterControl',
94
+ ColumnResizeHandle: 'ColumnResizeHandle',
95
+ Body: 'Body',
96
+ Row: 'Row',
97
+ RowSelectionControl: 'SelectionControl',
98
+ BulkSelectionControl: 'BulkSelectionControl',
99
+ Cell: 'Cell',
100
+ Editor: 'Editor',
101
+ });
102
+ }
103
+ function assertExclusive(options, property) { const values = options; const fallback = `default${property[0].toUpperCase()}${property.slice(1)}`; if (values[property] !== undefined && values[fallback] !== undefined)
104
+ throw new TypeError(`${property} and ${fallback} are mutually exclusive.`); }
105
+ function unwrap(result) { if (!result.ok)
106
+ throw new TypeError(result.error.message); return result.value; }
107
+ //# sourceMappingURL=data-grid.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-grid.js","sourceRoot":"","sources":["../src/data-grid.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,239 @@
1
+ import { type ComputedRef, type Ref } from 'vue';
2
+ import { type DataTableColumnSizeState as DOMDataTableColumnSizeState, type DataTableDOMCommand as DOMDataTableCommand } from '@sectile/dom/tabular';
3
+ import { type DataTableCommand as SemanticDataTableCommand, type DataTableController as SemanticDataTableController, type DataTableEvent, type DataTableProjection, type DataTableUpdate } from '@sectile/tabular/data-table';
4
+ import type { TabularAcceptedViewState, TabularAccessState, TabularCellRecord, TabularColumnState, TabularError, TabularGroupID, TabularHeaderNodeID, TabularLimits, TabularQuery, TabularRequest, TabularRequestState, TabularResult, TabularRow, TabularRowID, TabularRowSelection, TabularSnapshot, TabularView, TabularViewResponse, TabularWireValue } from '@sectile/tabular';
5
+ import type { PrimitiveAs } from './primitive.js';
6
+ import { type HostConnection } from './internal/tabular-parts.js';
7
+ import { type TabularBodyComponent, type TabularComponent } from './internal/tabular-components.js';
8
+ import { type ProfileContext, type SourceResolver, type SourceReturn, type SourceStatus, type VueProfileController } from './internal/tabular-profile.js';
9
+ type DataTablePathDepth = readonly unknown[];
10
+ type DataTableNextDepth<Depth extends DataTablePathDepth> = readonly [...Depth, unknown];
11
+ type DataTableNestedPath<Value, Depth extends DataTablePathDepth> = Value extends readonly unknown[] ? DataTableArrayPath<Value, Depth> : Value extends object ? `.${DataTableObjectPath<Value, Depth>}` : never;
12
+ type DataTableTupleIndexes<Value extends readonly unknown[]> = Exclude<keyof Value, keyof readonly unknown[]> & `${number}`;
13
+ type DataTableArrayPath<Value extends readonly unknown[], Depth extends DataTablePathDepth> = Depth['length'] extends 8 ? never : number extends Value['length'] ? `[${number}]` | `[${number}]${DataTableNestedPath<Value[number], DataTableNextDepth<Depth>>}` : {
14
+ [Index in DataTableTupleIndexes<Value>]: `[${Index}]` | `[${Index}]${DataTableNestedPath<Value[Index & keyof Value], DataTableNextDepth<Depth>>}`;
15
+ }[DataTableTupleIndexes<Value>];
16
+ type DataTableObjectPath<Value extends object, Depth extends DataTablePathDepth> = Depth['length'] extends 8 ? never : string extends keyof Value ? string : {
17
+ [Key in Extract<keyof Value, string>]: Key | `${Key}${DataTableNestedPath<Value[Key], DataTableNextDepth<Depth>>}`;
18
+ }[Extract<keyof Value, string>];
19
+ type DataTableResolveArrayRest<Value, Rest extends string> = Rest extends `[${number}]${infer Tail}` ? Value extends readonly (infer Item)[] ? Tail extends '' ? Item : DataTableResolveArrayRest<Item, Tail> : never : never;
20
+ type DataTableResolveSegment<Value, Segment extends string> = Segment extends `${infer Key}[${infer Index}]${infer Rest}` ? Key extends keyof Value ? Index extends `${number}` ? DataTableResolveArrayRest<Value[Key], `[${Index}]${Rest}`> : never : never : Segment extends keyof Value ? Value[Segment] : never;
21
+ type DataTableResolvePath<Value, Path extends string> = Path extends keyof Value ? Value[Path] : Path extends `${infer Segment}.${infer Rest}` ? DataTableResolvePath<DataTableResolveSegment<Value, Segment>, Rest> : DataTableResolveSegment<Value, Path>;
22
+ export type DataTableFieldPath<Cells extends object> = DataTableObjectPath<Cells, readonly []>;
23
+ export type DataTableColumnID<LeafCells extends object, GroupCells extends object = LeafCells> = DataTableFieldPath<LeafCells> | DataTableFieldPath<GroupCells>;
24
+ export type DataTableCellValue<Cells extends object, Column extends string> = Extract<DataTableResolvePath<Cells, Column>, TabularWireValue> extends never ? TabularWireValue : Extract<DataTableResolvePath<Cells, Column>, TabularWireValue>;
25
+ export type DataTableReactiveInput<T> = T | Ref<T> | (() => T);
26
+ export interface DataTableWritableRef<T> {
27
+ value: T;
28
+ }
29
+ export type DataTableQuery = TabularQuery;
30
+ export type DataTableViewRow<LeafCells extends object = TabularCellRecord, GroupCells extends object = LeafCells> = TabularRow<LeafCells, GroupCells>;
31
+ export type DataTableView<LeafCells extends object = TabularCellRecord, GroupCells extends object = LeafCells> = TabularView<DataTableViewRow<LeafCells, GroupCells>>;
32
+ export type DataTableViewResponse<LeafCells extends object = TabularCellRecord, GroupCells extends object = LeafCells> = TabularViewResponse<DataTableViewRow<LeafCells, GroupCells>>;
33
+ export type DataTableRowSelection = TabularRowSelection;
34
+ export type DataTableGroupID = TabularGroupID;
35
+ export type DataTableRowID = TabularRowID;
36
+ export type DataTableColumnState = TabularColumnState;
37
+ export type DataTableAccessState = TabularAccessState;
38
+ export type DataTableRequestState = TabularRequestState;
39
+ export type DataTableAcceptedViewState<LeafCells extends object = TabularCellRecord, GroupCells extends object = LeafCells> = TabularAcceptedViewState<DataTableViewRow<LeafCells, GroupCells>>;
40
+ export type DataTableColumnSizeState = DOMDataTableColumnSizeState;
41
+ export type DataTableSourceStatus = SourceStatus;
42
+ export type DataTableSemanticCommand = SemanticDataTableCommand;
43
+ export type DataTableCommand = DOMDataTableCommand;
44
+ export type DataTableError = TabularError;
45
+ export type DataTableCommandHandler = (command: DataTableCommand) => void;
46
+ export type DataTableErrorHandler = (error: DataTableError) => void;
47
+ export type DataTableSourceErrorHandler = (error: unknown) => void;
48
+ export type DataTableStatusChangeHandler = (status: DataTableSourceStatus) => void;
49
+ export type DataTableQueryChangeHandler = (query: DataTableQuery) => void;
50
+ export type DataTableRowSelectionChangeHandler = (selection: DataTableRowSelection) => void;
51
+ export type DataTableColumnStateChangeHandler = (state: DataTableColumnState) => void;
52
+ export type DataTableAccessStateChangeHandler = (state: DataTableAccessState) => void;
53
+ export type DataTableExpansionChangeHandler = (expansion: readonly DataTableGroupID[]) => void;
54
+ export type DataTableColumnSizeChangeHandler = (state: DataTableColumnSizeState) => void;
55
+ export type DataTableSourceResolver<LeafCells extends object = TabularCellRecord, GroupCells extends object = LeafCells> = (request: TabularRequest, context: {
56
+ readonly signal: AbortSignal;
57
+ }) => DataTableViewResponse<LeafCells, GroupCells> | Promise<DataTableViewResponse<LeafCells, GroupCells>>;
58
+ type DataTableSourceResponse<Source extends SourceResolver> = Awaited<ReturnType<Source>>;
59
+ type DataTableSourceRows<Source extends SourceResolver> = DataTableSourceResponse<Source> extends {
60
+ readonly rows: readonly (infer Row)[];
61
+ } ? Row : never;
62
+ type DataTableSourceCells<Source extends SourceResolver, Kind extends 'leaf' | 'group'> = Extract<DataTableSourceRows<Source>, {
63
+ readonly kind: Kind;
64
+ }> extends infer Row ? Row extends {
65
+ readonly cells: infer Cells extends object;
66
+ } ? Cells : never : never;
67
+ export type DataTableLeafCellsFromSource<Source extends SourceResolver> = [DataTableSourceCells<Source, 'leaf'>] extends [never] ? TabularCellRecord : DataTableSourceCells<Source, 'leaf'>;
68
+ export type DataTableGroupCellsFromSource<Source extends SourceResolver> = [DataTableSourceCells<Source, 'group'>] extends [never] ? DataTableLeafCellsFromSource<Source> : DataTableSourceCells<Source, 'group'>;
69
+ export interface UseDataTableOptions<Source extends SourceResolver = DataTableSourceResolver> {
70
+ readonly source: Source;
71
+ readonly sourceKey?: DataTableReactiveInput<string>;
72
+ readonly limits?: Partial<TabularLimits>;
73
+ readonly initialView?: DataTableSourceResponse<Source>;
74
+ readonly onSourceError?: DataTableSourceErrorHandler;
75
+ readonly onSourceStatusChange?: DataTableStatusChangeHandler;
76
+ readonly query?: DataTableWritableRef<DataTableQuery>;
77
+ readonly defaultQuery?: DataTableQuery;
78
+ readonly onQueryChange?: DataTableQueryChangeHandler;
79
+ readonly rowSelection?: DataTableWritableRef<DataTableRowSelection>;
80
+ readonly defaultRowSelection?: DataTableRowSelection;
81
+ readonly onRowSelectionChange?: DataTableRowSelectionChangeHandler;
82
+ readonly columnState?: DataTableWritableRef<DataTableColumnState>;
83
+ readonly defaultColumnState?: DataTableColumnState;
84
+ readonly onColumnStateChange?: DataTableColumnStateChangeHandler;
85
+ readonly accessState?: DataTableWritableRef<DataTableAccessState>;
86
+ readonly defaultAccessState?: DataTableAccessState;
87
+ readonly onAccessStateChange?: DataTableAccessStateChangeHandler;
88
+ readonly expansion?: DataTableWritableRef<readonly DataTableGroupID[]>;
89
+ readonly defaultExpansion?: readonly DataTableGroupID[];
90
+ readonly onExpansionChange?: DataTableExpansionChangeHandler;
91
+ readonly columnSizeState?: DataTableWritableRef<Readonly<Record<string, number>>>;
92
+ readonly defaultColumnSizeState?: Readonly<Record<string, number>>;
93
+ readonly onColumnSizeStateChange?: DataTableColumnSizeChangeHandler;
94
+ }
95
+ declare const dataTableSchema: unique symbol;
96
+ export interface DataTableController<LeafCells extends object = TabularCellRecord, GroupCells extends object = LeafCells> extends VueProfileController<TabularSnapshot, DataTableEvent, SemanticDataTableCommand>, SourceReturn<DataTableSourceResolver<LeafCells, GroupCells>> {
97
+ readonly [dataTableSchema]?: {
98
+ readonly leaf: LeafCells;
99
+ readonly group: GroupCells;
100
+ };
101
+ readonly acceptedViewState: ComputedRef<DataTableAcceptedViewState<LeafCells, GroupCells>>;
102
+ getProjection(): DataTableProjection;
103
+ }
104
+ export declare function useDataTable<const Source extends SourceResolver, LeafCells extends object = DataTableLeafCellsFromSource<Source>, GroupCells extends object = DataTableGroupCellsFromSource<Source>>(options: UseDataTableOptions<Source>): DataTableController<LeafCells, GroupCells>;
105
+ export interface DataTableContextValue extends Omit<ProfileContext<TabularSnapshot, DataTableEvent, SemanticDataTableCommand, HostConnection>, 'connection'> {
106
+ }
107
+ export declare function useDataTableContext(): DataTableContextValue;
108
+ export interface DataTableProviderProps {
109
+ }
110
+ export interface DataTableRootProps {
111
+ readonly onCommand?: DataTableCommandHandler;
112
+ readonly onError?: DataTableErrorHandler;
113
+ readonly as?: PrimitiveAs;
114
+ readonly asChild?: boolean;
115
+ }
116
+ export interface DataTableRootSlotProps<LeafCells extends object = TabularCellRecord, GroupCells extends object = LeafCells> {
117
+ readonly acceptedViewState: DataTableAcceptedViewState<LeafCells, GroupCells>;
118
+ readonly requestState: DataTableRequestState;
119
+ readonly query: DataTableQuery;
120
+ readonly rowSelection: DataTableRowSelection;
121
+ readonly columnState: DataTableColumnState;
122
+ readonly accessState: DataTableAccessState;
123
+ readonly expansion: readonly DataTableGroupID[];
124
+ readonly rows: readonly DataTableViewRow<LeafCells, GroupCells>[];
125
+ }
126
+ export interface DataTableRootExpose<LeafCells extends object = TabularCellRecord, GroupCells extends object = LeafCells> {
127
+ readonly controller: DataTableController<LeafCells, GroupCells>;
128
+ refresh(): void;
129
+ }
130
+ export interface DataTablePartProps {
131
+ readonly as?: PrimitiveAs;
132
+ readonly asChild?: boolean;
133
+ }
134
+ export type DataTableHeaderRowProps = DataTablePartProps;
135
+ export type DataTableColumnHeaderProps<Column extends string = string> = DataTablePartProps & ({
136
+ readonly column: Column;
137
+ readonly header?: never;
138
+ } | {
139
+ readonly header: TabularHeaderNodeID;
140
+ readonly column?: never;
141
+ });
142
+ export interface DataTableSortTriggerProps<Column extends string = string> extends DataTablePartProps {
143
+ readonly column: Column;
144
+ readonly comparator?: string;
145
+ }
146
+ export type DataTableFilterControlProps<Column extends string = string> = DataTablePartProps & ({
147
+ readonly scope: 'global';
148
+ readonly id: string;
149
+ readonly predicate: string;
150
+ } | {
151
+ readonly scope: 'column';
152
+ readonly column: Column;
153
+ readonly id: string;
154
+ readonly predicate: string;
155
+ });
156
+ export interface DataTableColumnResizeHandleProps<Column extends string = string> extends DataTablePartProps {
157
+ readonly column: Column;
158
+ readonly minSize?: number;
159
+ readonly maxSize?: number;
160
+ }
161
+ export interface DataTableRowProps extends DataTablePartProps {
162
+ readonly rowID: DataTableRowID | DataTableGroupID;
163
+ }
164
+ export interface DataTableSelectionControlProps extends DataTablePartProps {
165
+ readonly rowID?: DataTableRowID;
166
+ readonly name: string;
167
+ readonly value?: string;
168
+ readonly form?: string;
169
+ readonly disabled?: boolean;
170
+ }
171
+ export interface DataTableBulkSelectionControlProps extends DataTablePartProps {
172
+ readonly target: {
173
+ readonly kind: 'all-matching';
174
+ } | {
175
+ readonly kind: 'group-leaves';
176
+ readonly groupID: DataTableGroupID;
177
+ };
178
+ readonly disabled?: boolean;
179
+ }
180
+ export interface DataTableDisclosureProps extends DataTablePartProps {
181
+ readonly rowID?: DataTableGroupID;
182
+ readonly disabled?: boolean;
183
+ }
184
+ export interface DataTableCellProps<Column extends string = string> extends DataTablePartProps {
185
+ readonly rowID?: DataTableRowID | DataTableGroupID;
186
+ readonly column: Column;
187
+ }
188
+ export interface DataTableEditorProps<Column extends string = string> extends DataTableCellProps<Column> {
189
+ readonly parseValue?: (value: string) => TabularResult<TabularWireValue>;
190
+ readonly commitOnChange?: boolean;
191
+ }
192
+ export interface DataTablePartSlotProps<LeafCells extends object = TabularCellRecord, GroupCells extends object = LeafCells> extends DataTableRootSlotProps<LeafCells, GroupCells> {
193
+ readonly row?: DataTableViewRow<LeafCells, GroupCells>;
194
+ readonly isGroup?: boolean;
195
+ }
196
+ export interface DataTableBodySlotProps<LeafCells extends object = TabularCellRecord, GroupCells extends object = LeafCells> extends DataTableRootSlotProps<LeafCells, GroupCells> {
197
+ readonly row: DataTableViewRow<LeafCells, GroupCells>;
198
+ readonly rowIndex: number;
199
+ readonly isGroup: boolean;
200
+ }
201
+ export type DataTableProviderSlotProps<LeafCells extends object = TabularCellRecord, GroupCells extends object = LeafCells> = DataTableRootSlotProps<LeafCells, GroupCells>;
202
+ export type DataTableCaptionProps = DataTablePartProps;
203
+ export type DataTableHeaderProps = DataTablePartProps;
204
+ export interface DataTableBodyProps extends DataTablePartProps {
205
+ readonly manual?: boolean;
206
+ }
207
+ export type DataTableCaptionSlotProps<LeafCells extends object = TabularCellRecord, GroupCells extends object = LeafCells> = DataTableRootSlotProps<LeafCells, GroupCells>;
208
+ export type DataTableHeaderSlotProps<LeafCells extends object = TabularCellRecord, GroupCells extends object = LeafCells> = DataTableRootSlotProps<LeafCells, GroupCells>;
209
+ export type DataTableHeaderRowSlotProps<LeafCells extends object = TabularCellRecord, GroupCells extends object = LeafCells> = DataTableRootSlotProps<LeafCells, GroupCells>;
210
+ export type DataTableColumnHeaderSlotProps<LeafCells extends object = TabularCellRecord, GroupCells extends object = LeafCells> = DataTableRootSlotProps<LeafCells, GroupCells>;
211
+ export type DataTableSortTriggerSlotProps<LeafCells extends object = TabularCellRecord, GroupCells extends object = LeafCells> = DataTableRootSlotProps<LeafCells, GroupCells>;
212
+ export type DataTableFilterControlSlotProps<LeafCells extends object = TabularCellRecord, GroupCells extends object = LeafCells> = DataTableRootSlotProps<LeafCells, GroupCells>;
213
+ export type DataTableColumnResizeHandleSlotProps<LeafCells extends object = TabularCellRecord, GroupCells extends object = LeafCells> = DataTableRootSlotProps<LeafCells, GroupCells>;
214
+ export type DataTableRowSlotProps<LeafCells extends object = TabularCellRecord, GroupCells extends object = LeafCells> = DataTableRootSlotProps<LeafCells, GroupCells>;
215
+ export type DataTableSelectionControlSlotProps<LeafCells extends object = TabularCellRecord, GroupCells extends object = LeafCells> = DataTablePartSlotProps<LeafCells, GroupCells>;
216
+ export type DataTableBulkSelectionControlSlotProps<LeafCells extends object = TabularCellRecord, GroupCells extends object = LeafCells> = DataTableRootSlotProps<LeafCells, GroupCells>;
217
+ export type DataTableDisclosureSlotProps<LeafCells extends object = TabularCellRecord, GroupCells extends object = LeafCells> = DataTablePartSlotProps<LeafCells, GroupCells>;
218
+ export type DataTableCellSlotProps<LeafCells extends object = TabularCellRecord, GroupCells extends object = LeafCells> = DataTablePartSlotProps<LeafCells, GroupCells>;
219
+ export type DataTableEditorSlotProps<LeafCells extends object = TabularCellRecord, GroupCells extends object = LeafCells> = DataTablePartSlotProps<LeafCells, GroupCells>;
220
+ export interface DataTableComponents<LeafCells extends object, GroupCells extends object = LeafCells> {
221
+ readonly Provider: TabularComponent<DataTableProviderProps, DataTableProviderSlotProps<LeafCells, GroupCells>>;
222
+ readonly Root: TabularComponent<DataTableRootProps, DataTableRootSlotProps<LeafCells, GroupCells>>;
223
+ readonly Caption: TabularComponent<DataTableCaptionProps, DataTableCaptionSlotProps<LeafCells, GroupCells>>;
224
+ readonly Header: TabularComponent<DataTableHeaderProps, DataTableHeaderSlotProps<LeafCells, GroupCells>>;
225
+ readonly HeaderRow: TabularComponent<DataTableHeaderRowProps, DataTableHeaderRowSlotProps<LeafCells, GroupCells>>;
226
+ readonly ColumnHeader: TabularComponent<DataTableColumnHeaderProps<DataTableColumnID<LeafCells, GroupCells>>, DataTableColumnHeaderSlotProps<LeafCells, GroupCells>>;
227
+ readonly SortTrigger: TabularComponent<DataTableSortTriggerProps<DataTableColumnID<LeafCells, GroupCells>>, DataTableSortTriggerSlotProps<LeafCells, GroupCells>>;
228
+ readonly FilterControl: TabularComponent<DataTableFilterControlProps<DataTableColumnID<LeafCells, GroupCells>>, DataTableFilterControlSlotProps<LeafCells, GroupCells>>;
229
+ readonly ColumnResizeHandle: TabularComponent<DataTableColumnResizeHandleProps<DataTableColumnID<LeafCells, GroupCells>>, DataTableColumnResizeHandleSlotProps<LeafCells, GroupCells>>;
230
+ readonly Body: TabularBodyComponent<DataTableBodyProps, DataTableRootSlotProps<LeafCells, GroupCells>, DataTableBodySlotProps<LeafCells, GroupCells>>;
231
+ readonly Row: TabularComponent<DataTableRowProps, DataTableRowSlotProps<LeafCells, GroupCells>>;
232
+ readonly SelectionControl: TabularComponent<DataTableSelectionControlProps, DataTableSelectionControlSlotProps<LeafCells, GroupCells>>;
233
+ readonly BulkSelectionControl: TabularComponent<DataTableBulkSelectionControlProps, DataTableBulkSelectionControlSlotProps<LeafCells, GroupCells>>;
234
+ readonly Disclosure: TabularComponent<DataTableDisclosureProps, DataTableDisclosureSlotProps<LeafCells, GroupCells>>;
235
+ readonly Cell: TabularComponent<DataTableCellProps<DataTableColumnID<LeafCells, GroupCells>>, DataTableCellSlotProps<LeafCells, GroupCells>>;
236
+ readonly Editor: TabularComponent<DataTableEditorProps<DataTableColumnID<LeafCells, GroupCells>>, DataTableEditorSlotProps<LeafCells, GroupCells>>;
237
+ }
238
+ export declare function createDataTableComponents<LeafCells extends object, GroupCells extends object>(controller: DataTableController<LeafCells, GroupCells>): DataTableComponents<LeafCells, GroupCells>;
239
+ export type { DataTableEvent, DataTableProjection, DataTableUpdate, SemanticDataTableController };
@@ -0,0 +1,120 @@
1
+ import { getCurrentScope, onScopeDispose, toValue, watch, } from 'vue';
2
+ import { connectDataTable, } from '@sectile/dom/tabular';
3
+ import { createDataTable, } from '@sectile/tabular/data-table';
4
+ import { createTabularParts } from './internal/tabular-parts.js';
5
+ import { createTabularComponentSuite, } from './internal/tabular-components.js';
6
+ import { controlledValues, aliasVueProfileController, createVueProfileController, semanticController, useProfile, useProfileSource, } from './internal/tabular-profile.js';
7
+ const hosts = new WeakMap();
8
+ export function useDataTable(options) {
9
+ assertExclusive(options, 'query');
10
+ assertExclusive(options, 'rowSelection');
11
+ assertExclusive(options, 'columnState');
12
+ assertExclusive(options, 'accessState');
13
+ assertExclusive(options, 'expansion');
14
+ assertExclusive(options, 'columnSizeState');
15
+ const initialValues = Object.freeze({
16
+ ...(options.query === undefined && options.defaultQuery === undefined ? {} : { query: options.query?.value ?? options.defaultQuery }),
17
+ ...(options.rowSelection === undefined && options.defaultRowSelection === undefined ? {} : { rowSelection: options.rowSelection?.value ?? options.defaultRowSelection }),
18
+ ...(options.columnState === undefined && options.defaultColumnState === undefined ? {} : { columnState: options.columnState?.value ?? options.defaultColumnState }),
19
+ ...(options.accessState === undefined && options.defaultAccessState === undefined ? {} : { accessState: options.accessState?.value ?? options.defaultAccessState }),
20
+ ...(options.expansion === undefined && options.defaultExpansion === undefined ? {} : { expansion: options.expansion?.value ?? options.defaultExpansion }),
21
+ });
22
+ const semanticOptions = {
23
+ columns: options.initialView?.columnSchema.columns ?? [],
24
+ headers: options.initialView?.columnSchema.headers ?? [],
25
+ ...(options.limits === undefined ? {} : { limits: options.limits }),
26
+ controlled: {
27
+ query: options.query !== undefined,
28
+ rowSelection: options.rowSelection !== undefined,
29
+ columnState: options.columnState !== undefined,
30
+ accessState: options.accessState !== undefined,
31
+ expansion: options.expansion !== undefined,
32
+ },
33
+ initialValues,
34
+ ...(options.onQueryChange === undefined ? {} : { onQueryChange: options.onQueryChange }),
35
+ ...(options.onRowSelectionChange === undefined ? {} : { onRowSelectionChange: options.onRowSelectionChange }),
36
+ ...(options.onColumnStateChange === undefined ? {} : { onColumnStateChange: options.onColumnStateChange }),
37
+ ...(options.onAccessStateChange === undefined ? {} : { onAccessStateChange: options.onAccessStateChange }),
38
+ ...(options.onExpansionChange === undefined ? {} : { onExpansionChange: options.onExpansionChange }),
39
+ };
40
+ const semantic = createDataTable(semanticOptions);
41
+ const base = createVueProfileController(semantic);
42
+ const controller = Object.freeze({ ...base, getProjection: () => semantic.getProjection() });
43
+ aliasVueProfileController(controller, base);
44
+ hosts.set(controller, Object.freeze({
45
+ ...(options.columnSizeState === undefined ? {} : { columnSizes: options.columnSizeState.value }),
46
+ ...(options.defaultColumnSizeState === undefined ? {} : { defaultColumnSizes: options.defaultColumnSizeState }),
47
+ ...(options.onColumnSizeStateChange === undefined ? {} : { onColumnSizesChange: options.onColumnSizeStateChange }),
48
+ }));
49
+ if (options.initialView !== undefined)
50
+ unwrapResult(controller.synchronizeView(options.initialView));
51
+ const source = useProfileSource(controller, options.source, {
52
+ ...(options.onSourceError === undefined ? {} : { onError: options.onSourceError }),
53
+ ...(options.onSourceStatusChange === undefined ? {} : { onStatusChange: options.onSourceStatusChange }),
54
+ });
55
+ const stops = [];
56
+ const sync = () => { unwrapResult(controller.syncControlledValues(controlledValues(options))); };
57
+ for (const source of [options.query, options.rowSelection, options.columnState, options.accessState, options.expansion])
58
+ if (source !== undefined)
59
+ stops.push(watch(() => source.value, sync, { deep: false }));
60
+ if (options.sourceKey !== undefined)
61
+ stops.push(watch(() => toValue(options.sourceKey), () => { unwrapResult(controller.dispatch({ type: 'replace-source' })); }));
62
+ const dispose = controller.dispose;
63
+ const wrapped = Object.freeze({
64
+ ...controller,
65
+ status: source.status,
66
+ error: source.error,
67
+ reload: source.reload,
68
+ cancel: source.cancel,
69
+ replaceResolver: (resolver) => source.replaceResolver(resolver),
70
+ dispose: () => { for (const stop of stops.splice(0))
71
+ stop(); source.dispose(); dispose(); },
72
+ });
73
+ aliasVueProfileController(wrapped, controller);
74
+ hosts.set(wrapped, hosts.get(controller) ?? {});
75
+ if (getCurrentScope() !== undefined)
76
+ onScopeDispose(wrapped.dispose);
77
+ return wrapped;
78
+ }
79
+ const publicKey = Symbol('SectileDataTable');
80
+ const privateKey = Symbol('SectileDataTableHost');
81
+ export function useDataTableContext() { return useProfile(publicKey, 'useDataTableContext'); }
82
+ const parts = createTabularParts({
83
+ profile: 'data-table', prefix: 'DataTable', publicKey, privateKey,
84
+ connect: (element, controller, callbacks) => connectDataTable({
85
+ controller: semanticController(controller),
86
+ table: element,
87
+ ...hosts.get(controller),
88
+ ...(callbacks.onCommand === undefined ? {} : { onCommand: callbacks.onCommand }),
89
+ onSnapshotChange: callbacks.onSnapshotChange,
90
+ }),
91
+ });
92
+ const componentSuites = new WeakMap();
93
+ export function createDataTableComponents(controller) {
94
+ return createTabularComponentSuite(parts, controller, componentSuites, 'DataTable', {
95
+ Root: 'Root',
96
+ Caption: 'Caption',
97
+ Header: 'Header',
98
+ HeaderRow: 'HeaderRow',
99
+ ColumnHeader: 'ColumnHeader',
100
+ SortTrigger: 'SortTrigger',
101
+ FilterControl: 'FilterControl',
102
+ ColumnResizeHandle: 'ColumnResizeHandle',
103
+ Body: 'Body',
104
+ Row: 'Row',
105
+ SelectionControl: 'SelectionControl',
106
+ BulkSelectionControl: 'BulkSelectionControl',
107
+ Disclosure: 'Disclosure',
108
+ Cell: 'Cell',
109
+ Editor: 'Editor',
110
+ });
111
+ }
112
+ function assertExclusive(options, property) {
113
+ const values = options;
114
+ const fallback = `default${property[0].toUpperCase()}${property.slice(1)}`;
115
+ if (values[property] !== undefined && values[fallback] !== undefined)
116
+ throw new TypeError(`${property} and ${fallback} are mutually exclusive.`);
117
+ }
118
+ function unwrapResult(result) { if (!result.ok)
119
+ throw new TypeError(result.error.message); return result.value; }
120
+ //# sourceMappingURL=data-table.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"data-table.js","sourceRoot":"","sources":["../src/data-table.ts"],"names":[],"mappings":"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"}