@dxos/react-ui-table 0.8.3 → 0.8.4-main.1c7ec43d41

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 (194) hide show
  1. package/dist/lib/browser/chunk-FBURZBPH.mjs +70 -0
  2. package/dist/lib/browser/chunk-FBURZBPH.mjs.map +7 -0
  3. package/dist/lib/browser/chunk-J5LGTIGS.mjs +10 -0
  4. package/dist/lib/browser/chunk-J5LGTIGS.mjs.map +7 -0
  5. package/dist/lib/browser/chunk-YGC7LZJN.mjs +1695 -0
  6. package/dist/lib/browser/chunk-YGC7LZJN.mjs.map +7 -0
  7. package/dist/lib/browser/index.mjs +1165 -2554
  8. package/dist/lib/browser/index.mjs.map +4 -4
  9. package/dist/lib/browser/meta.json +1 -1
  10. package/dist/lib/browser/testing/index.mjs +115 -0
  11. package/dist/lib/browser/testing/index.mjs.map +7 -0
  12. package/dist/lib/browser/translations.mjs +36 -0
  13. package/dist/lib/browser/translations.mjs.map +7 -0
  14. package/dist/lib/browser/types/index.mjs +4 -5
  15. package/dist/lib/node-esm/chunk-DKKMSVKP.mjs +71 -0
  16. package/dist/lib/node-esm/chunk-DKKMSVKP.mjs.map +7 -0
  17. package/dist/lib/node-esm/chunk-GKIWDEZ7.mjs +1697 -0
  18. package/dist/lib/node-esm/chunk-GKIWDEZ7.mjs.map +7 -0
  19. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
  20. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +7 -0
  21. package/dist/lib/node-esm/index.mjs +1165 -2554
  22. package/dist/lib/node-esm/index.mjs.map +4 -4
  23. package/dist/lib/node-esm/meta.json +1 -1
  24. package/dist/lib/node-esm/testing/index.mjs +116 -0
  25. package/dist/lib/node-esm/testing/index.mjs.map +7 -0
  26. package/dist/lib/node-esm/translations.mjs +37 -0
  27. package/dist/lib/node-esm/translations.mjs.map +7 -0
  28. package/dist/lib/node-esm/types/index.mjs +4 -5
  29. package/dist/types/src/components/Table/ColumnActionsMenu.d.ts +2 -3
  30. package/dist/types/src/components/Table/ColumnActionsMenu.d.ts.map +1 -1
  31. package/dist/types/src/components/Table/ColumnSettings.d.ts +4 -2
  32. package/dist/types/src/components/Table/ColumnSettings.d.ts.map +1 -1
  33. package/dist/types/src/components/Table/DynamicTable.d.ts +7 -7
  34. package/dist/types/src/components/Table/DynamicTable.d.ts.map +1 -1
  35. package/dist/types/src/components/Table/DynamicTable.stories.d.ts +35 -3
  36. package/dist/types/src/components/Table/DynamicTable.stories.d.ts.map +1 -1
  37. package/dist/types/src/components/Table/Relations.stories.d.ts +111 -0
  38. package/dist/types/src/components/Table/Relations.stories.d.ts.map +1 -0
  39. package/dist/types/src/components/Table/RowActionsMenu.d.ts +1 -1
  40. package/dist/types/src/components/Table/RowActionsMenu.d.ts.map +1 -1
  41. package/dist/types/src/components/Table/Table.d.ts +21 -18
  42. package/dist/types/src/components/Table/Table.d.ts.map +1 -1
  43. package/dist/types/src/components/Table/Table.stories.d.ts +110 -6
  44. package/dist/types/src/components/Table/Table.stories.d.ts.map +1 -1
  45. package/dist/types/src/components/Table/TableContent.d.ts +17 -0
  46. package/dist/types/src/components/Table/TableContent.d.ts.map +1 -0
  47. package/dist/types/src/components/Table/TableToolbar.d.ts +21 -0
  48. package/dist/types/src/components/Table/TableToolbar.d.ts.map +1 -0
  49. package/dist/types/src/components/TableCellEditor/CellValidationMessage.d.ts +2 -1
  50. package/dist/types/src/components/TableCellEditor/CellValidationMessage.d.ts.map +1 -1
  51. package/dist/types/src/components/TableCellEditor/FormCellEditor.d.ts +14 -9
  52. package/dist/types/src/components/TableCellEditor/FormCellEditor.d.ts.map +1 -1
  53. package/dist/types/src/components/TableCellEditor/TableCellEditor.d.ts +12 -18
  54. package/dist/types/src/components/TableCellEditor/TableCellEditor.d.ts.map +1 -1
  55. package/dist/types/src/components/TableCellEditor/TableCellEditor.stories.d.ts +38 -5
  56. package/dist/types/src/components/TableCellEditor/TableCellEditor.stories.d.ts.map +1 -1
  57. package/dist/types/src/components/TableCellEditor/index.d.ts +1 -0
  58. package/dist/types/src/components/TableCellEditor/index.d.ts.map +1 -1
  59. package/dist/types/src/components/index.d.ts +0 -1
  60. package/dist/types/src/components/index.d.ts.map +1 -1
  61. package/dist/types/src/components/testing.d.ts +26 -56
  62. package/dist/types/src/components/testing.d.ts.map +1 -1
  63. package/dist/types/src/hooks/index.d.ts +2 -0
  64. package/dist/types/src/hooks/index.d.ts.map +1 -1
  65. package/dist/types/src/hooks/useAddRow.d.ts +13 -0
  66. package/dist/types/src/hooks/useAddRow.d.ts.map +1 -0
  67. package/dist/types/src/hooks/useProjectionModel.d.ts +6 -0
  68. package/dist/types/src/hooks/useProjectionModel.d.ts.map +1 -0
  69. package/dist/types/src/hooks/useTableModel.d.ts +11 -10
  70. package/dist/types/src/hooks/useTableModel.d.ts.map +1 -1
  71. package/dist/types/src/index.d.ts +0 -3
  72. package/dist/types/src/index.d.ts.map +1 -1
  73. package/dist/types/src/model/modal-controller.d.ts +5 -8
  74. package/dist/types/src/model/modal-controller.d.ts.map +1 -1
  75. package/dist/types/src/model/selection-model.d.ts +18 -8
  76. package/dist/types/src/model/selection-model.d.ts.map +1 -1
  77. package/dist/types/src/model/table-model.d.ts +150 -32
  78. package/dist/types/src/model/table-model.d.ts.map +1 -1
  79. package/dist/types/src/model/table-presentation.d.ts +13 -2
  80. package/dist/types/src/model/table-presentation.d.ts.map +1 -1
  81. package/dist/types/src/playwright/TableManager.d.ts +2 -1
  82. package/dist/types/src/playwright/TableManager.d.ts.map +1 -1
  83. package/dist/types/src/playwright/playwright.config.d.ts +3 -0
  84. package/dist/types/src/playwright/playwright.config.d.ts.map +1 -0
  85. package/dist/types/src/testing/index.d.ts +2 -0
  86. package/dist/types/src/testing/index.d.ts.map +1 -0
  87. package/dist/types/src/testing/useTestTableModel.d.ts +25 -0
  88. package/dist/types/src/testing/useTestTableModel.d.ts.map +1 -0
  89. package/dist/types/src/translations.d.ts +22 -25
  90. package/dist/types/src/translations.d.ts.map +1 -1
  91. package/dist/types/src/types/Table.d.ts +26 -0
  92. package/dist/types/src/types/Table.d.ts.map +1 -0
  93. package/dist/types/src/types/index.d.ts +1 -1
  94. package/dist/types/src/types/index.d.ts.map +1 -1
  95. package/dist/types/src/util/dynamic-table.d.ts +15 -14
  96. package/dist/types/src/util/dynamic-table.d.ts.map +1 -1
  97. package/dist/types/src/util/dynamic-table.test.d.ts +2 -0
  98. package/dist/types/src/util/dynamic-table.test.d.ts.map +1 -0
  99. package/dist/types/src/util/index.d.ts +2 -1
  100. package/dist/types/src/util/index.d.ts.map +1 -1
  101. package/dist/types/src/util/query-ast.d.ts +7 -0
  102. package/dist/types/src/util/query-ast.d.ts.map +1 -0
  103. package/dist/types/src/util/schema.d.ts +1 -1
  104. package/dist/types/src/util/schema.d.ts.map +1 -1
  105. package/dist/types/src/util/signals.d.ts.map +1 -1
  106. package/dist/types/src/util/sort.d.ts +12 -0
  107. package/dist/types/src/util/sort.d.ts.map +1 -0
  108. package/dist/types/src/util/table-buttons.d.ts +31 -17
  109. package/dist/types/src/util/table-buttons.d.ts.map +1 -1
  110. package/dist/types/src/util/table-controls.d.ts +4 -4
  111. package/dist/types/src/util/table-controls.d.ts.map +1 -1
  112. package/dist/types/src/util/tag.d.ts.map +1 -1
  113. package/dist/types/tsconfig.tsbuildinfo +1 -1
  114. package/package.json +76 -72
  115. package/src/components/Table/ColumnActionsMenu.tsx +18 -13
  116. package/src/components/Table/ColumnSettings.tsx +18 -15
  117. package/src/components/Table/DynamicTable.stories.tsx +40 -36
  118. package/src/components/Table/DynamicTable.tsx +38 -34
  119. package/src/components/Table/Relations.stories.tsx +281 -0
  120. package/src/components/Table/RowActionsMenu.tsx +29 -19
  121. package/src/components/Table/Table.stories.tsx +198 -214
  122. package/src/components/Table/Table.tsx +47 -363
  123. package/src/components/Table/TableContent.tsx +421 -0
  124. package/src/components/Table/TableToolbar.tsx +111 -0
  125. package/src/components/TableCellEditor/CellValidationMessage.tsx +9 -4
  126. package/src/components/TableCellEditor/FormCellEditor.tsx +153 -49
  127. package/src/components/TableCellEditor/TableCellEditor.stories.tsx +40 -79
  128. package/src/components/TableCellEditor/TableCellEditor.tsx +109 -199
  129. package/src/components/TableCellEditor/index.ts +1 -0
  130. package/src/components/index.ts +0 -1
  131. package/src/components/testing.ts +46 -37
  132. package/src/hooks/index.ts +2 -0
  133. package/src/hooks/useAddRow.ts +36 -0
  134. package/src/hooks/useProjectionModel.ts +39 -0
  135. package/src/hooks/useTableModel.ts +41 -35
  136. package/src/index.ts +0 -5
  137. package/src/model/modal-controller.ts +24 -41
  138. package/src/model/selection-model.ts +75 -41
  139. package/src/model/table-model.test.ts +91 -56
  140. package/src/model/table-model.ts +629 -162
  141. package/src/model/table-presentation.test.ts +69 -59
  142. package/src/model/table-presentation.ts +283 -154
  143. package/src/playwright/TableManager.ts +13 -6
  144. package/src/playwright/playwright.config.ts +17 -0
  145. package/src/playwright/smoke.spec.ts +181 -42
  146. package/src/testing/index.ts +5 -0
  147. package/src/testing/useTestTableModel.ts +133 -0
  148. package/src/translations.ts +24 -24
  149. package/src/types/Table.ts +79 -0
  150. package/src/types/index.ts +2 -2
  151. package/src/util/dynamic-table.test.ts +70 -0
  152. package/src/util/dynamic-table.ts +51 -36
  153. package/src/util/index.ts +2 -1
  154. package/src/util/query-ast.ts +22 -0
  155. package/src/util/schema.ts +4 -4
  156. package/src/util/sort.ts +90 -0
  157. package/src/util/table-buttons.ts +28 -4
  158. package/src/util/table-controls.ts +6 -3
  159. package/dist/lib/browser/chunk-TL7CKQQV.mjs +0 -27
  160. package/dist/lib/browser/chunk-TL7CKQQV.mjs.map +0 -7
  161. package/dist/lib/node/chunk-O2VPBNS5.cjs +0 -50
  162. package/dist/lib/node/chunk-O2VPBNS5.cjs.map +0 -7
  163. package/dist/lib/node/index.cjs +0 -2739
  164. package/dist/lib/node/index.cjs.map +0 -7
  165. package/dist/lib/node/meta.json +0 -1
  166. package/dist/lib/node/types/index.cjs +0 -31
  167. package/dist/lib/node/types/index.cjs.map +0 -7
  168. package/dist/lib/node-esm/chunk-GBT6GD4G.mjs +0 -29
  169. package/dist/lib/node-esm/chunk-GBT6GD4G.mjs.map +0 -7
  170. package/dist/types/src/components/Table/CreateRefPanel.d.ts +0 -9
  171. package/dist/types/src/components/Table/CreateRefPanel.d.ts.map +0 -1
  172. package/dist/types/src/components/Table/relations.stories.d.ts +0 -9
  173. package/dist/types/src/components/Table/relations.stories.d.ts.map +0 -1
  174. package/dist/types/src/components/TableCellEditor/extension.d.ts +0 -13
  175. package/dist/types/src/components/TableCellEditor/extension.d.ts.map +0 -1
  176. package/dist/types/src/components/TableToolbar/TableToolbar.d.ts +0 -21
  177. package/dist/types/src/components/TableToolbar/TableToolbar.d.ts.map +0 -1
  178. package/dist/types/src/components/TableToolbar/index.d.ts +0 -2
  179. package/dist/types/src/components/TableToolbar/index.d.ts.map +0 -1
  180. package/dist/types/src/model/table-sorting.d.ts +0 -53
  181. package/dist/types/src/model/table-sorting.d.ts.map +0 -1
  182. package/dist/types/src/types/table.d.ts +0 -56
  183. package/dist/types/src/types/table.d.ts.map +0 -1
  184. package/dist/types/src/util/table.d.ts +0 -14
  185. package/dist/types/src/util/table.d.ts.map +0 -1
  186. package/src/components/Table/CreateRefPanel.tsx +0 -84
  187. package/src/components/Table/relations.stories.tsx +0 -124
  188. package/src/components/TableCellEditor/extension.ts +0 -61
  189. package/src/components/TableToolbar/TableToolbar.tsx +0 -102
  190. package/src/components/TableToolbar/index.ts +0 -5
  191. package/src/model/table-sorting.ts +0 -216
  192. package/src/playwright/playwright.config.cts +0 -18
  193. package/src/types/table.ts +0 -27
  194. package/src/util/table.ts +0 -127
@@ -1,66 +1,36 @@
1
- import { Schema } from 'effect';
2
- import { TableType } from '../types';
3
- export declare const TestSchema: import("@dxos/echo-schema").TypedObjectPrototype<import("@dxos/echo-schema").TypedObjectFields<{
4
- id: import("@dxos/keys").ObjectIdClass;
5
- name: Schema.optional<typeof Schema.String>;
6
- age: Schema.optional<typeof Schema.Number>;
7
- active: Schema.optional<typeof Schema.Boolean>;
8
- netWorth: Schema.optional<typeof Schema.Number>;
9
- }, import("@dxos/echo-schema").TypedObjectOptions>, Schema.Struct.Encoded<{
10
- id: import("@dxos/keys").ObjectIdClass;
11
- name: Schema.optional<typeof Schema.String>;
12
- age: Schema.optional<typeof Schema.Number>;
13
- active: Schema.optional<typeof Schema.Boolean>;
14
- netWorth: Schema.optional<typeof Schema.Number>;
15
- }>>;
16
- export declare const createTable: (schema?: import("@dxos/echo-schema").TypedObjectPrototype<import("@dxos/echo-schema").TypedObjectFields<{
17
- id: import("@dxos/keys").ObjectIdClass;
18
- name: Schema.optional<typeof Schema.String>;
19
- age: Schema.optional<typeof Schema.Number>;
20
- active: Schema.optional<typeof Schema.Boolean>;
21
- netWorth: Schema.optional<typeof Schema.Number>;
22
- }, import("@dxos/echo-schema").TypedObjectOptions>, Schema.Struct.Encoded<{
23
- id: import("@dxos/keys").ObjectIdClass;
24
- name: Schema.optional<typeof Schema.String>;
25
- age: Schema.optional<typeof Schema.Number>;
26
- active: Schema.optional<typeof Schema.Boolean>;
27
- netWorth: Schema.optional<typeof Schema.Number>;
28
- }>>) => import("@dxos/live-object").Live<import("@dxos/echo/Type").OfKind<import("@dxos/echo-schema").EntityKind.Object> & {
29
- id: string;
30
- name?: string | undefined;
31
- view?: import("@dxos/echo-schema").Ref<import("@dxos/echo-schema").TypedObjectFields<{
32
- name: Schema.SchemaClass<string, string, never>;
33
- query: Schema.Schema<import("@dxos/echo-schema").QueryType, import("@dxos/echo-schema").QueryType, never>;
34
- schema: Schema.optional<Schema.Schema<import("@dxos/echo-schema").JsonSchemaType, import("@dxos/echo-schema").JsonSchemaType, never>>;
35
- fields: Schema.mutable<Schema.Array$<Schema.mutable<Schema.Struct<{
36
- id: typeof Schema.String;
37
- path: Schema.Schema<import("@dxos/effect").JsonPath, import("@dxos/effect").JsonPath, never>;
38
- visible: Schema.optional<typeof Schema.Boolean>;
39
- size: Schema.optional<typeof Schema.Number>;
40
- referencePath: Schema.optional<Schema.Schema<import("@dxos/effect").JsonPath, import("@dxos/effect").JsonPath, never>>;
41
- }>>>>;
42
- hiddenFields: Schema.optional<Schema.mutable<Schema.Array$<Schema.mutable<Schema.Struct<{
43
- id: typeof Schema.String;
44
- path: Schema.Schema<import("@dxos/effect").JsonPath, import("@dxos/effect").JsonPath, never>;
45
- visible: Schema.optional<typeof Schema.Boolean>;
46
- size: Schema.optional<typeof Schema.Number>;
47
- referencePath: Schema.optional<Schema.Schema<import("@dxos/effect").JsonPath, import("@dxos/effect").JsonPath, never>>;
48
- }>>>>>;
49
- metadata: Schema.optional<Schema.mutable<Schema.Record$<typeof Schema.String, typeof Schema.Any>>>;
50
- }, import("@dxos/echo-schema").TypedObjectOptions>> | undefined;
51
- threads?: readonly import("@dxos/echo-schema").Ref<import("@dxos/echo-schema").Expando>[] | undefined;
52
- }>;
53
- export declare const createItems: (n: number) => {
1
+ import { Atom } from '@effect-atom/atom-react';
2
+ import * as Schema from 'effect/Schema';
3
+ import { Type } from '@dxos/echo';
4
+ import { type ProjectionModel } from '@dxos/schema';
5
+ export declare const TestSchema: Type.Obj<{
6
+ readonly name?: string | undefined;
7
+ readonly age?: number | undefined;
8
+ readonly active?: boolean | undefined;
9
+ readonly netWorth?: number | undefined;
10
+ }, Schema.Struct.Fields>;
11
+ export type TestItem = {
54
12
  name: string;
55
13
  age: number;
56
14
  active: boolean;
57
15
  netWorth: number;
58
- }[];
16
+ };
17
+ /**
18
+ * Creates an Atom containing test items data.
19
+ */
20
+ export declare const createItemsAtom: (n: number) => Atom.Writable<{
21
+ data: TestItem[];
22
+ }, {
23
+ data: TestItem[];
24
+ }>;
25
+ /**
26
+ * Creates plain test items (non-reactive).
27
+ */
28
+ export declare const createItems: (n: number) => TestItem[];
59
29
  export type SimulatorProps = {
60
- table: TableType;
30
+ projection: ProjectionModel;
61
31
  items: any[];
62
32
  insertInterval?: number;
63
33
  updateInterval?: number;
64
34
  };
65
- export declare const useSimulator: ({ items, table, insertInterval, updateInterval }: SimulatorProps) => void;
35
+ export declare const useSimulator: ({ items, projection, insertInterval, updateInterval }: SimulatorProps) => void;
66
36
  //# sourceMappingURL=testing.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../../../../src/components/testing.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAShC,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC,eAAO,MAAM,UAAU;;;;;;;;;;;;GAMrB,CAAC;AAEH,eAAO,MAAM,WAAW,GAAI;;;;;;;;;;;;GAAmB;;;;;;;;;;;;;;;;;;;;;;;;EAU9C,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,GAAG,MAAM;;;;;GAWpC,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,SAAS,CAAC;IACjB,KAAK,EAAE,GAAG,EAAE,CAAC;IACb,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,kDAAkD,cAAc,SA+D5F,CAAC"}
1
+ {"version":3,"file":"testing.d.ts","sourceRoot":"","sources":["../../../../src/components/testing.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAC/C,OAAO,KAAK,MAAM,MAAM,eAAe,CAAC;AAGxC,OAAO,EAAU,IAAI,EAAE,MAAM,YAAY,CAAC;AAI1C,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAEpD,eAAO,MAAM,UAAU;;;;;wBAUtB,CAAC;AAEF,MAAM,MAAM,QAAQ,GAAG;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe,MAAO,MAAM;UACd,QAAQ,EAAE;;;EAQpC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,WAAW,MAAO,MAAM,KAAG,QAAQ,EAO/C,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,UAAU,EAAE,eAAe,CAAC;IAC5B,KAAK,EAAE,GAAG,EAAE,CAAC;IACb,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,CAAC;AAEF,eAAO,MAAM,YAAY,0DAA2D,cAAc,SA6DjG,CAAC"}
@@ -1,2 +1,4 @@
1
+ export * from './useAddRow';
2
+ export * from './useProjectionModel';
1
3
  export * from './useTableModel';
2
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/hooks/index.ts"],"names":[],"mappings":"AAIA,cAAc,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/hooks/index.ts"],"names":[],"mappings":"AAIA,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { type Database, type Type } from '@dxos/echo';
2
+ import { type InsertRowResult } from '../model';
3
+ export type UseAddRowProps = {
4
+ db?: Database.Database;
5
+ schema?: Type.AnyObj;
6
+ };
7
+ /**
8
+ * Hook that provides a safe row creation function that handles schema validation failures.
9
+ * Returns a callback that attempts to create an object and returns boolean success/failure.
10
+ * Can accept optional data to create objects with specific content (used for committing draft rows).
11
+ */
12
+ export declare const useAddRow: ({ db, schema }: UseAddRowProps) => (data?: any) => InsertRowResult;
13
+ //# sourceMappingURL=useAddRow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAddRow.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useAddRow.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,QAAQ,EAAO,KAAK,IAAI,EAAE,MAAM,YAAY,CAAC;AAE3D,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,UAAU,CAAC;AAEhD,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC;IACvB,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC;CACtB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,SAAS,mBAAoB,cAAc,aAE5C,GAAG,KAAG,eAajB,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { type Registry } from '@effect-atom/atom-react';
2
+ import { Type } from '@dxos/echo';
3
+ import { ProjectionModel } from '@dxos/schema';
4
+ import { type Table } from '../types';
5
+ export declare const useProjectionModel: <S extends Type.AnyEntity>(schema: S | undefined, table: Table.Table | undefined, registry: Registry.Registry) => ProjectionModel | undefined;
6
+ //# sourceMappingURL=useProjectionModel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useProjectionModel.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useProjectionModel.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAGxD,OAAO,EAAc,IAAI,EAAE,MAAM,YAAY,CAAC;AAE9C,OAAO,EAAE,eAAe,EAA4B,MAAM,cAAc,CAAC;AAEzE,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,UAAU,CAAC;AAEtC,eAAO,MAAM,kBAAkB,GAAI,CAAC,SAAS,IAAI,CAAC,SAAS,UACjD,CAAC,GAAG,SAAS,SACd,KAAK,CAAC,KAAK,GAAG,SAAS,YACpB,QAAQ,CAAC,QAAQ,gCAsB5B,CAAC"}
@@ -1,14 +1,15 @@
1
- import { type Live } from '@dxos/react-client/echo';
2
- import { type ViewProjection } from '@dxos/schema';
3
- import { type TableRow, TableModel, type TableModelProps, type TableRowAction } from '../model';
4
- import { type TableType } from '../types';
5
- export type UseTableModelParams<T extends TableRow = TableRow> = {
6
- table?: TableType;
7
- projection?: ViewProjection;
8
- rows?: Live<T>[];
1
+ import { type Database } from '@dxos/echo';
2
+ import { type ProjectionModel } from '@dxos/schema';
3
+ import { TableModel, type TableModelProps, type TableRow, type TableRowAction } from '../model';
4
+ import { type Table } from '../types';
5
+ export type UseTableModelProps<T extends TableRow = TableRow> = {
6
+ object?: Table.Table;
7
+ projection?: ProjectionModel;
8
+ db?: Database.Database;
9
+ rows?: T[];
9
10
  rowActions?: TableRowAction[];
10
11
  onSelectionChanged?: (selection: string[]) => void;
11
12
  onRowAction?: (actionId: string, data: T) => void;
12
- } & Pick<TableModelProps<T>, 'features' | 'onInsertRow' | 'onDeleteRows' | 'onDeleteColumn' | 'onCellUpdate' | 'onRowOrderChange'>;
13
- export declare const useTableModel: <T extends TableRow = TableRow>({ table, projection, rows, rowActions, features, onSelectionChanged, onRowAction, ...props }: UseTableModelParams<T>) => TableModel<T> | undefined;
13
+ } & Pick<TableModelProps<T>, 'features' | 'onInsertRow' | 'onDeleteRows' | 'onColumnDelete' | 'onCellUpdate' | 'onRowOrderChange'>;
14
+ export declare const useTableModel: <T extends TableRow = TableRow>({ object, projection, db, rows, rowActions, features, onSelectionChanged, onRowAction, ...props }: UseTableModelProps<T>) => TableModel<T> | undefined;
14
15
  //# sourceMappingURL=useTableModel.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useTableModel.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useTableModel.ts"],"names":[],"mappings":"AAQA,OAAO,EAA8B,KAAK,IAAI,EAAE,MAAM,yBAAyB,CAAC;AAEhF,OAAO,EAAE,KAAK,cAAc,EAAE,MAAM,cAAc,CAAC;AAGnD,OAAO,EAAE,KAAK,QAAQ,EAAE,UAAU,EAAE,KAAK,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,UAAU,CAAC;AAChG,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,UAAU,CAAC;AAE1C,MAAM,MAAM,mBAAmB,CAAC,CAAC,SAAS,QAAQ,GAAG,QAAQ,IAAI;IAC/D,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IACjB,UAAU,CAAC,EAAE,cAAc,EAAE,CAAC;IAC9B,kBAAkB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACnD,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;CACnD,GAAG,IAAI,CACN,eAAe,CAAC,CAAC,CAAC,EAClB,UAAU,GAAG,aAAa,GAAG,cAAc,GAAG,gBAAgB,GAAG,cAAc,GAAG,kBAAkB,CACrG,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,CAAC,SAAS,QAAQ,GAAG,QAAQ,EAAE,8FAS1D,mBAAmB,CAAC,CAAC,CAAC,KAAG,UAAU,CAAC,CAAC,CAAC,GAAG,SAiE3C,CAAC"}
1
+ {"version":3,"file":"useTableModel.d.ts","sourceRoot":"","sources":["../../../../src/hooks/useTableModel.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,QAAQ,EAAO,MAAM,YAAY,CAAC;AAEhD,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,cAAc,CAAC;AAGpD,OAAO,EACL,UAAU,EACV,KAAK,eAAe,EACpB,KAAK,QAAQ,EACb,KAAK,cAAc,EAEpB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,KAAK,KAAK,EAAE,MAAM,UAAU,CAAC;AAEtC,MAAM,MAAM,kBAAkB,CAAC,CAAC,SAAS,QAAQ,GAAG,QAAQ,IAAI;IAC9D,MAAM,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC;IACrB,UAAU,CAAC,EAAE,eAAe,CAAC;IAC7B,EAAE,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC;IACvB,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;IACX,UAAU,CAAC,EAAE,cAAc,EAAE,CAAC;IAC9B,kBAAkB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,IAAI,CAAC;IACnD,WAAW,CAAC,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,KAAK,IAAI,CAAC;CACnD,GAAG,IAAI,CACN,eAAe,CAAC,CAAC,CAAC,EAClB,UAAU,GAAG,aAAa,GAAG,cAAc,GAAG,gBAAgB,GAAG,cAAc,GAAG,kBAAkB,CACrG,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,CAAC,SAAS,QAAQ,GAAG,QAAQ,qGAUxD,kBAAkB,CAAC,CAAC,CAAC,KAAG,UAAU,CAAC,CAAC,CAAC,GAAG,SAgE1C,CAAC"}
@@ -1,8 +1,5 @@
1
- import translations from './translations';
2
1
  export * from './components';
3
2
  export * from './hooks';
4
3
  export * from './model';
5
- export * from './types';
6
4
  export * from './util';
7
- export { translations };
8
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAIA,OAAO,YAAY,MAAM,gBAAgB,CAAC;AAE1C,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AAEvB,OAAO,EAAE,YAAY,EAAE,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.ts"],"names":[],"mappings":"AAIA,cAAc,cAAc,CAAC;AAC7B,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC"}
@@ -1,5 +1,5 @@
1
+ import { Atom, type Registry } from '@effect-atom/atom-react';
1
2
  import { type RefObject } from 'react';
2
- import { type Live } from '@dxos/live-object';
3
3
  export type ColumnSettingsMode = {
4
4
  type: 'create';
5
5
  } | {
@@ -16,11 +16,6 @@ export type ModalState = {
16
16
  type: 'refPanel';
17
17
  targetId: string;
18
18
  typename: string;
19
- } | {
20
- type: 'createRefPanel';
21
- typename: string;
22
- initialValues?: Record<string, string>;
23
- onCreate?: (obj: Live<any>) => void;
24
19
  } | {
25
20
  type: 'columnSettings';
26
21
  mode: ColumnSettingsMode;
@@ -28,9 +23,12 @@ export type ModalState = {
28
23
  type: 'closed';
29
24
  };
30
25
  export declare class ModalController {
26
+ private readonly _registry;
31
27
  private readonly _state;
32
28
  private readonly _triggerRef;
33
- get state(): import("@preact/signals-core").Signal<ModalState>;
29
+ constructor(registry: Registry.Registry);
30
+ get state(): Atom.Atom<ModalState>;
31
+ get stateValue(): ModalState;
34
32
  get trigger(): RefObject<HTMLButtonElement>;
35
33
  setTrigger: (trigger: HTMLElement) => void;
36
34
  showRowMenu: (rowIndex: number) => void;
@@ -38,7 +36,6 @@ export declare class ModalController {
38
36
  showColumnCreator: () => void;
39
37
  showReferencePanel: (targetId: string, schemaId: string) => void;
40
38
  openColumnSettings: () => void;
41
- openCreateRef: (typename: string, anchorCell: Element | null, initialValues?: Record<string, string>, onCreate?: (obj: Live<any>) => void) => void;
42
39
  close: () => void;
43
40
  }
44
41
  //# sourceMappingURL=modal-controller.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"modal-controller.d.ts","sourceRoot":"","sources":["../../../../src/model/modal-controller.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,KAAK,SAAS,EAAyB,MAAM,OAAO,CAAC;AAE9D,OAAO,EAAE,KAAK,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAG9C,MAAM,MAAM,kBAAkB,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAExF,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACxD;IACE,IAAI,EAAE,gBAAgB,CAAC;IACvB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACvC,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC;CACrC,GACD;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,IAAI,EAAE,kBAAkB,CAAA;CAAE,GACpD;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC;AAEvB,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA0C;IACjE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA8E;IAE1G,IAAW,KAAK,sDAEf;IAED,IAAW,OAAO,IACW,SAAS,CAAC,iBAAiB,CAAC,CACxD;IAEM,UAAU,GAAI,SAAS,WAAW,UAEvC;IAEK,WAAW,GAAI,UAAU,MAAM,UAEpC;IAEK,cAAc,GAAI,SAAS,MAAM,UAEtC;IAEK,iBAAiB,aAEtB;IAEK,kBAAkB,GAAI,UAAU,MAAM,EAAE,UAAU,MAAM,UAE7D;IAEK,kBAAkB,aAWvB;IAEK,aAAa,GAClB,UAAU,MAAM,EAChB,YAAY,OAAO,GAAG,IAAI,EAC1B,gBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EACtC,WAAW,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,UAanC;IAEK,KAAK,aAEV;CACH"}
1
+ {"version":3,"file":"modal-controller.d.ts","sourceRoot":"","sources":["../../../../src/model/modal-controller.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,IAAI,EAAE,KAAK,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAC9D,OAAO,EAAyB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAE9D,MAAM,MAAM,kBAAkB,GAAG;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAExF,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACnC;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACxD;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,IAAI,EAAE,kBAAkB,CAAA;CAAE,GACpD;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC;AAEvB,qBAAa,eAAe;IAC1B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoB;IAC9C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4B;IACnD,OAAO,CAAC,QAAQ,CAAC,WAAW,CAA8E;IAE1G,YAAY,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAGtC;IAED,IAAW,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAExC;IAED,IAAW,UAAU,IAAI,UAAU,CAElC;IAED,IAAW,OAAO,IACW,SAAS,CAAC,iBAAiB,CAAC,CACxD;IAEM,UAAU,YAAa,WAAW,UAEvC;IAEK,WAAW,aAAc,MAAM,UAEpC;IAEK,cAAc,YAAa,MAAM,UAEtC;IAEK,iBAAiB,aAEtB;IAEK,kBAAkB,aAAc,MAAM,YAAY,MAAM,UAE7D;IAEK,kBAAkB,aAYvB;IAEK,KAAK,aAEV;CACH"}
@@ -1,25 +1,35 @@
1
- import { type ReadonlySignal } from '@preact/signals-core';
1
+ import { Atom, type Registry } from '@effect-atom/atom-react';
2
2
  import { Resource } from '@dxos/context';
3
3
  import { type TableRow } from './table-model';
4
4
  export type SelectionMode = 'single' | 'multiple';
5
5
  export declare class SelectionModel<T extends TableRow> extends Resource {
6
+ private readonly _registry;
6
7
  private readonly _rows;
7
- private readonly _selectionMode;
8
- private readonly _onSelectionChanged?;
9
8
  private readonly _selection;
10
9
  private readonly _validSelectedIds;
11
10
  private readonly _hasSelection;
12
11
  private readonly _allSelected;
13
- constructor(_rows: ReadonlySignal<T[]>, _selectionMode: SelectionMode, _onSelectionChanged?: (() => void) | undefined);
12
+ private readonly _selectionMode;
13
+ private readonly _onSelectionChanged?;
14
+ constructor(registry: Registry.Registry, rows: Atom.Atom<T[]>, selectionMode: SelectionMode, initialSelection: string[], onSelectionChanged?: () => void);
14
15
  protected _open(): Promise<void>;
15
- get selection(): ReadonlySignal<Set<string>>;
16
- get hasSelection(): ReadonlySignal<boolean>;
17
- get allRowsSeleted(): ReadonlySignal<boolean>;
16
+ /** Get the selection atom for reactive access. */
17
+ get selectionAtom(): Atom.Atom<Set<string>>;
18
+ /** Get the current selection value. */
19
+ get selection(): Set<string>;
20
+ /** Get the hasSelection atom for reactive access. */
21
+ get hasSelectionAtom(): Atom.Atom<boolean>;
22
+ /** Check if there is any selection. */
23
+ get hasSelection(): boolean;
24
+ /** Get the allRowsSelected atom for reactive access. */
25
+ get allRowsSelectedAtom(): Atom.Atom<boolean>;
26
+ /** Check if all rows are selected. */
27
+ get allRowsSelected(): boolean;
18
28
  get selectionMode(): SelectionMode;
19
29
  getSelectedRows: () => T[];
20
30
  isRowIndexSelected: (rowIndex: number) => boolean;
21
31
  isObjectSelected: (object: T) => boolean;
22
32
  toggleSelectionForRowIndex: (rowIndex: number) => void;
23
- setSelection: (mode: "all" | "none") => void;
33
+ setSelection: (mode: 'all' | 'none') => void;
24
34
  }
25
35
  //# sourceMappingURL=selection-model.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"selection-model.d.ts","sourceRoot":"","sources":["../../../../src/model/selection-model.ts"],"names":[],"mappings":"AAIA,OAAO,EAA4B,KAAK,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAErF,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AAG9C,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,UAAU,CAAC;AAElD,qBAAa,cAAc,CAAC,CAAC,SAAS,QAAQ,CAAE,SAAQ,QAAQ;IAyB5D,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IA1BvC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAkC;IAE7D,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAQ/B;IAEH,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAkE;IAEhG,OAAO,CAAC,QAAQ,CAAC,YAAY,CAO1B;gBAGgB,KAAK,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC,EAC1B,cAAc,EAAE,aAAa,EAC7B,mBAAmB,CAAC,GAAE,MAAM,IAAI,aAAA;cAK1B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAY/C,IAAW,SAAS,IAAI,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAElD;IAED,IAAW,YAAY,IAAI,cAAc,CAAC,OAAO,CAAC,CAEjD;IAED,IAAW,cAAc,IAAI,cAAc,CAAC,OAAO,CAAC,CAEnD;IAED,IAAW,aAAa,IAAI,aAAa,CAExC;IAEM,eAAe,QAAO,CAAC,EAAE,CAG9B;IAEK,kBAAkB,GAAI,UAAU,MAAM,KAAG,OAAO,CAGrD;IAEK,gBAAgB,GAAI,QAAQ,CAAC,KAAG,OAAO,CAE5C;IAMK,0BAA0B,GAAI,UAAU,MAAM,KAAG,IAAI,CAc1D;IAEK,YAAY,GAAI,MAAM,KAAK,GAAG,MAAM,KAAG,IAAI,CAWhD;CACH"}
1
+ {"version":3,"file":"selection-model.d.ts","sourceRoot":"","sources":["../../../../src/model/selection-model.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,IAAI,EAAE,KAAK,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAE9D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,OAAO,EAAE,KAAK,QAAQ,EAAE,MAAM,eAAe,CAAC;AAE9C,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,UAAU,CAAC;AAElD,qBAAa,cAAc,CAAC,CAAC,SAAS,QAAQ,CAAE,SAAQ,QAAQ;IAC9D,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAoB;IAC9C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAiB;IACvC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA6B;IACxD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAyB;IAC3D,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAqB;IACnD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAqB;IAClD,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAgB;IAC/C,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAa;IAElD,YACE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,EAC3B,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EACpB,aAAa,EAAE,aAAa,EAC5B,gBAAgB,EAAE,MAAM,EAAE,EAC1B,kBAAkB,CAAC,EAAE,MAAM,IAAI,EAgChC;IAED,UAAyB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAK9C;IAMD,kDAAkD;IAClD,IAAW,aAAa,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAEjD;IAED,uCAAuC;IACvC,IAAW,SAAS,IAAI,GAAG,CAAC,MAAM,CAAC,CAElC;IAED,qDAAqD;IACrD,IAAW,gBAAgB,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAEhD;IAED,uCAAuC;IACvC,IAAW,YAAY,IAAI,OAAO,CAEjC;IAED,wDAAwD;IACxD,IAAW,mBAAmB,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAEnD;IAED,sCAAsC;IACtC,IAAW,eAAe,IAAI,OAAO,CAEpC;IAED,IAAW,aAAa,IAAI,aAAa,CAExC;IAEM,eAAe,QAAO,CAAC,EAAE,CAG9B;IAEK,kBAAkB,aAAc,MAAM,KAAG,OAAO,CAGrD;IAEK,gBAAgB,WAAY,CAAC,KAAG,OAAO,CAE5C;IAMK,0BAA0B,aAAc,MAAM,KAAG,IAAI,CAe1D;IAEK,YAAY,SAAU,KAAK,GAAG,MAAM,KAAG,IAAI,CAWhD;CACH"}
@@ -1,23 +1,58 @@
1
- import { type ReadonlySignal } from '@preact/signals-core';
2
- import { type Space } from '@dxos/client/echo';
1
+ import { Atom, type Registry } from '@effect-atom/atom-react';
3
2
  import { Resource } from '@dxos/context';
4
- import { type FieldSortType, type JsonProp } from '@dxos/echo-schema';
3
+ import { type Database, type QueryAST } from '@dxos/echo';
4
+ import { type View } from '@dxos/echo';
5
+ import { type JsonProp, type JsonSchemaType } from '@dxos/echo/internal';
6
+ import { type Label } from '@dxos/react-ui';
5
7
  import { type DxGridAxisMeta, type DxGridPlanePosition, type DxGridPosition } from '@dxos/react-ui-grid';
6
- import { type ViewType, type ViewProjection } from '@dxos/schema';
8
+ import { type ProjectionModel, type ValidationError } from '@dxos/schema';
9
+ import { type Table } from '../types';
10
+ /**
11
+ * Field sort configuration.
12
+ */
13
+ export type FieldSortType = {
14
+ fieldId: string;
15
+ direction: QueryAST.OrderDirection;
16
+ };
7
17
  import { type SelectionMode, SelectionModel } from './selection-model';
8
- import { TableSorting } from './table-sorting';
18
+ /**
19
+ * Callback type for wrapping mutations in Obj.update().
20
+ * Contains separate callbacks for table object and row mutations.
21
+ */
22
+ export type TableChangeCallback<T extends TableRow> = {
23
+ /** Callback to wrap table object mutations. */
24
+ table: (mutate: (mutableTable: Table.Table) => void) => void;
25
+ /** Callback to wrap row mutations. */
26
+ row: (row: T, mutate: (mutableRow: T) => void) => void;
27
+ };
28
+ /**
29
+ * Creates a change callback for ECHO-backed table and rows.
30
+ * Use this when the table and rows are stored in the ECHO database.
31
+ */
32
+ export declare const createEchoChangeCallback: <T extends TableRow>(table: Table.Table) => TableChangeCallback<T>;
33
+ /**
34
+ * Creates a change callback that directly mutates objects without wrapping.
35
+ * Use this for plain JavaScript objects (tests, non-ECHO scenarios).
36
+ */
37
+ export declare const createDirectChangeCallback: <T extends TableRow>(table: Table.Table) => TableChangeCallback<T>;
38
+ export type TableCellType = 'standard' | 'draft' | 'header';
9
39
  export type ValidationResult = {
10
40
  valid: true;
11
41
  } | {
12
42
  valid: false;
13
43
  error: string;
14
44
  };
45
+ export type DraftRow<T extends TableRow = TableRow> = {
46
+ data: T;
47
+ valid: boolean;
48
+ validationErrors: ValidationError[];
49
+ };
15
50
  export type TableRow = Record<JsonProp, any> & {
16
51
  id: string;
17
52
  };
18
53
  export type TableRowAction = {
19
54
  id: string;
20
- translationKey: string;
55
+ label: Label;
21
56
  };
22
57
  export type TableFeatures = {
23
58
  selection: {
@@ -27,87 +62,170 @@ export type TableFeatures = {
27
62
  dataEditable: boolean;
28
63
  schemaEditable: boolean;
29
64
  };
65
+ export type InsertRowResult = 'draft' | 'final';
30
66
  export type TableModelProps<T extends TableRow = TableRow> = {
31
- id?: string;
32
- space?: Space;
33
- view?: ViewType;
34
- projection: ViewProjection;
67
+ registry: Registry.Registry;
68
+ object: Table.Table;
69
+ projection: ProjectionModel;
70
+ db?: Database.Database;
71
+ /**
72
+ * Callbacks to wrap mutations in Obj.update().
73
+ * Use createEchoChangeCallback() for ECHO-backed objects or createDirectChangeCallback() for plain objects.
74
+ */
75
+ change?: TableChangeCallback<T>;
35
76
  features?: Partial<TableFeatures>;
36
- sorting?: FieldSortType[];
77
+ initialSelection?: string[];
37
78
  pinnedRows?: {
38
79
  top: number[];
39
80
  bottom: number[];
40
81
  };
41
82
  rowActions?: TableRowAction[];
42
- onInsertRow?: (index?: number) => void;
83
+ onResolveSchema?: (typename: string) => Promise<JsonSchemaType>;
84
+ onInsertRow?: (data?: any) => InsertRowResult;
43
85
  onDeleteRows?: (index: number, obj: T[]) => void;
44
- onDeleteColumn?: (fieldId: string) => void;
86
+ onColumnDelete?: (fieldId: string) => void;
45
87
  onCellUpdate?: (cell: DxGridPosition) => void;
46
88
  onRowOrderChange?: () => void;
47
89
  onRowAction?: (actionId: string, data: T) => void;
48
90
  };
49
91
  export declare class TableModel<T extends TableRow = TableRow> extends Resource {
50
- private readonly _id;
51
- private readonly _space;
52
- private readonly _view;
92
+ private readonly _registry;
93
+ private readonly _object;
53
94
  private readonly _projection;
95
+ private readonly _db?;
96
+ private readonly _change;
54
97
  private readonly _visibleRange;
55
98
  private readonly _onInsertRow?;
56
99
  private readonly _onDeleteRows?;
57
- private readonly _onDeleteColumn?;
100
+ private readonly _onColumnDelete?;
58
101
  private readonly _onCellUpdate?;
59
102
  private readonly _onRowOrderChange?;
60
103
  private readonly _onRowAction?;
61
104
  private readonly _rowActions;
62
105
  private readonly _features;
63
106
  private readonly _rows;
107
+ private readonly _draftRows;
108
+ private readonly _inMemorySort;
109
+ private readonly _persistedSort;
64
110
  private readonly _sorting;
111
+ private readonly _sortedRows;
112
+ private readonly _viewDirty;
65
113
  private _pinnedRows;
66
114
  private _selection;
67
115
  private _columnMeta?;
68
- constructor({ id, space, view, projection, features, sorting, pinnedRows, rowActions, onCellUpdate, onDeleteColumn, onDeleteRows, onInsertRow, onRowOrderChange, onRowAction, }: TableModelProps<T>);
69
- get id(): string | undefined;
70
- get space(): Space | undefined;
71
- get view(): ViewType | undefined;
72
- get projection(): ViewProjection;
73
- get rows(): ReadonlySignal<T[]>;
116
+ private readonly _cellUpdateCounter;
117
+ constructor({ registry, object, projection, db, change, features, initialSelection, pinnedRows, rowActions, onCellUpdate, onColumnDelete, onDeleteRows, onInsertRow, onRowOrderChange, onRowAction }: TableModelProps<T>);
118
+ get id(): string;
119
+ get view(): View.View;
120
+ get table(): Table.Table;
121
+ get projection(): ProjectionModel;
122
+ get db(): Database.Database | undefined;
123
+ /**
124
+ * Atom for reactive access to rows with in-memory sorting applied.
125
+ */
126
+ get rows(): Atom.Atom<T[]>;
127
+ /**
128
+ * Gets rows with in-memory sorting applied.
129
+ * In-memory sort is local to this instance until saved.
130
+ */
131
+ getRows(): T[];
132
+ /** Atom for reactive access to cell changes. */
133
+ get cellUpdate(): Atom.Atom<number>;
134
+ /**
135
+ * Change a row using the configured change callback.
136
+ * Use this instead of directly mutating to ensure consistent mutation handling.
137
+ */
138
+ changeRow(row: T, mutate: (mutableRow: T) => void): void;
74
139
  get features(): TableFeatures;
75
140
  /**
76
- * @reactive
141
+ * Gets the current sort state.
142
+ * Priority: in-memory sort (local changes) > persisted sort (from query AST).
77
143
  */
78
- get sorting(): TableSorting<T> | undefined;
144
+ getSorting(): FieldSortType | undefined;
79
145
  /**
80
146
  * Gets the row data at the specified display index.
81
147
  */
82
148
  getRowAt(displayIndex: number): T | undefined;
83
149
  get pinnedRows(): NonNullable<TableModelProps<T>['pinnedRows']>;
84
- get columnMeta(): ReadonlySignal<DxGridAxisMeta>;
150
+ get columnMeta(): Atom.Atom<DxGridAxisMeta>;
85
151
  get selection(): SelectionModel<T>;
86
- /** @reactive */
87
- get isViewDirty(): boolean;
88
152
  get rowActions(): TableRowAction[];
89
153
  protected _open(): Promise<void>;
90
154
  private initializeColumnMeta;
91
155
  private initializeEffects;
92
156
  setRows: (obj: T[]) => void;
93
157
  getRowCount: () => number;
158
+ getDraftRowCount(): number;
159
+ /** Atom for reactive access to draft rows. */
160
+ get draftRows(): Atom.Atom<DraftRow<T>[]>;
161
+ /** Gets the current draft rows. */
162
+ getDraftRows(): DraftRow<T>[];
163
+ /**
164
+ * Checks if a specific field path has validation errors for a given draft row.
165
+ * @param draftRowIndex - The index of the draft row to check
166
+ * @param fieldPath - The path of the field to check for validation errors
167
+ * @returns true if the field has validation errors, false otherwise
168
+ */
169
+ hasDraftRowValidationError(draftRowIndex: number, fieldPath: string): boolean;
94
170
  getColumnCount: () => number;
95
- insertRow: (rowIndex?: number) => void;
171
+ insertRow: () => InsertRowResult;
172
+ private createDraftRow;
173
+ private validateDraftRow;
174
+ private validateDraftRowData;
175
+ commitDraftRow: (draftRowIndex: number) => boolean;
96
176
  deleteRow: (rowIndex: number) => void;
97
177
  handleRowAction: (actionId: string, rowIndex: number) => void;
98
- getCellData: ({ col, row }: DxGridPlanePosition) => any;
99
- validateCellData: ({ col, row }: DxGridPlanePosition, value: any) => Promise<ValidationResult>;
100
- setCellData: ({ col, row }: DxGridPlanePosition, value: any) => void;
178
+ getCellData: (cell: DxGridPosition) => any;
179
+ validateCellData: ({ col, row, plane }: DxGridPosition, value: any) => Promise<ValidationResult>;
180
+ setCellData: (cell: DxGridPosition, value: any) => void;
101
181
  /**
102
182
  * Updates a cell's value using a transform function.
103
183
  * @param {DxGridPlanePosition} position - The position of the cell to update.
104
184
  * @param {(value: any) => any} update - A function that takes the current value and returns the updated value.
105
185
  */
106
186
  updateCellData({ col, row }: DxGridPlanePosition, update: (value: any) => any): void;
187
+ /**
188
+ * Gets the domain-appropriate cell type for a given cell position.
189
+ * This abstracts away the low-level grid plane concepts and provides domain-specific types.
190
+ * @param cell - The cell position to classify
191
+ * @returns The domain-appropriate cell type
192
+ */
193
+ getCellType(cell: DxGridPosition): TableCellType;
194
+ /**
195
+ * Convenience method to check if a cell is a draft cell.
196
+ * @param cell - The cell position to check
197
+ * @returns true if the cell is a draft cell, false otherwise
198
+ */
199
+ isDraftCell(cell: DxGridPosition): boolean;
107
200
  deleteColumn(fieldId: string): void;
108
201
  setColumnWidth(columnIndex: number, width: number): void;
109
202
  pinRow(rowIndex: number, side: 'top' | 'bottom'): void;
110
203
  unpinRow(rowIndex: number): void;
204
+ /**
205
+ * Sets the sort order for a field in-memory (local to this instance).
206
+ * Use saveView() to persist the sort to the view query.
207
+ */
208
+ setSort(fieldId: string, direction: QueryAST.OrderDirection): void;
209
+ /**
210
+ * Toggles the sort direction for a field in-memory.
211
+ */
212
+ toggleSort(fieldId: string): void;
213
+ /**
214
+ * Clears the in-memory sort order.
215
+ */
216
+ clearSort(): void;
217
+ /**
218
+ * Saves the current in-memory sort to the view query AST.
219
+ * This persists the sort so it becomes the default for all viewers.
220
+ */
111
221
  saveView(): void;
222
+ /**
223
+ * Extracts the base query without order clauses.
224
+ */
225
+ private _getBaseQuery;
226
+ /**
227
+ * Checks if the view has unsaved changes (in-memory sort differs from persisted sort).
228
+ */
229
+ getViewDirty(): boolean;
112
230
  }
113
231
  //# sourceMappingURL=table-model.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"table-model.d.ts","sourceRoot":"","sources":["../../../../src/model/table-model.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"table-model.d.ts","sourceRoot":"","sources":["../../../../src/model/table-model.ts"],"names":[],"mappings":"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"}