@dxos/react-ui-table 0.8.2-main.5885341 → 0.8.2-main.600d381

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 (64) hide show
  1. package/dist/lib/browser/chunk-UGGYKLOH.mjs +28 -0
  2. package/dist/lib/browser/chunk-UGGYKLOH.mjs.map +7 -0
  3. package/dist/lib/browser/index.mjs +19 -18
  4. package/dist/lib/browser/index.mjs.map +3 -3
  5. package/dist/lib/browser/meta.json +1 -1
  6. package/dist/lib/browser/types/index.mjs +1 -1
  7. package/dist/lib/node/{chunk-TGG6OZ54.cjs → chunk-2QLLIPZK.cjs} +13 -11
  8. package/dist/lib/node/chunk-2QLLIPZK.cjs.map +7 -0
  9. package/dist/lib/node/index.cjs +69 -68
  10. package/dist/lib/node/index.cjs.map +3 -3
  11. package/dist/lib/node/meta.json +1 -1
  12. package/dist/lib/node/types/index.cjs +3 -3
  13. package/dist/lib/node/types/index.cjs.map +1 -1
  14. package/dist/lib/node-esm/{chunk-KKLP54L3.mjs → chunk-N2RRVR7F.mjs} +11 -9
  15. package/dist/lib/node-esm/chunk-N2RRVR7F.mjs.map +7 -0
  16. package/dist/lib/node-esm/index.mjs +19 -18
  17. package/dist/lib/node-esm/index.mjs.map +3 -3
  18. package/dist/lib/node-esm/meta.json +1 -1
  19. package/dist/lib/node-esm/types/index.mjs +1 -1
  20. package/dist/types/src/components/Table/ColumnActionsMenu.d.ts.map +1 -1
  21. package/dist/types/src/components/Table/ColumnSettings.d.ts.map +1 -1
  22. package/dist/types/src/components/Table/CreateRefPanel.d.ts.map +1 -1
  23. package/dist/types/src/components/Table/DynamicTable.d.ts +0 -2
  24. package/dist/types/src/components/Table/DynamicTable.d.ts.map +1 -1
  25. package/dist/types/src/components/Table/RowActionsMenu.d.ts.map +1 -1
  26. package/dist/types/src/components/Table/Table.stories.d.ts.map +1 -1
  27. package/dist/types/src/components/Table/relations.stories.d.ts.map +1 -1
  28. package/dist/types/src/components/TableCellEditor/TableCellEditor.d.ts.map +1 -1
  29. package/dist/types/src/components/TableCellEditor/extension.d.ts.map +1 -1
  30. package/dist/types/src/components/TableToolbar/TableToolbar.d.ts +2 -2
  31. package/dist/types/src/components/TableToolbar/TableToolbar.d.ts.map +1 -1
  32. package/dist/types/src/components/testing.d.ts +39 -39
  33. package/dist/types/src/components/testing.d.ts.map +1 -1
  34. package/dist/types/src/hooks/useTableModel.d.ts.map +1 -1
  35. package/dist/types/src/model/modal-controller.d.ts.map +1 -1
  36. package/dist/types/src/model/selection-model.d.ts.map +1 -1
  37. package/dist/types/src/model/table-model.d.ts.map +1 -1
  38. package/dist/types/src/model/table-presentation.d.ts.map +1 -1
  39. package/dist/types/src/types/table.d.ts +42 -42
  40. package/dist/types/src/types/table.d.ts.map +1 -1
  41. package/dist/types/src/util/dynamic-table.d.ts.map +1 -1
  42. package/dist/types/src/util/signals.d.ts.map +1 -1
  43. package/dist/types/src/util/table-controls.d.ts.map +1 -1
  44. package/dist/types/src/util/table.d.ts +2 -2
  45. package/dist/types/src/util/table.d.ts.map +1 -1
  46. package/dist/types/src/util/tag.d.ts.map +1 -1
  47. package/dist/types/tsconfig.tsbuildinfo +1 -1
  48. package/package.json +35 -33
  49. package/src/components/Table/CreateRefPanel.tsx +3 -3
  50. package/src/components/Table/DynamicTable.stories.tsx +1 -1
  51. package/src/components/Table/DynamicTable.tsx +0 -2
  52. package/src/components/Table/Table.stories.tsx +4 -5
  53. package/src/components/Table/relations.stories.tsx +11 -10
  54. package/src/components/TableCellEditor/TableCellEditor.stories.tsx +1 -1
  55. package/src/components/TableToolbar/TableToolbar.tsx +10 -11
  56. package/src/components/testing.ts +7 -6
  57. package/src/model/table-model.test.ts +4 -3
  58. package/src/model/table-presentation.test.ts +4 -3
  59. package/src/types/table.ts +16 -8
  60. package/src/util/table.ts +7 -7
  61. package/dist/lib/browser/chunk-YWNRUF4J.mjs +0 -26
  62. package/dist/lib/browser/chunk-YWNRUF4J.mjs.map +0 -7
  63. package/dist/lib/node/chunk-TGG6OZ54.cjs.map +0 -7
  64. package/dist/lib/node-esm/chunk-KKLP54L3.mjs.map +0 -7
@@ -1 +1 @@
1
- {"version":3,"file":"table-controls.d.ts","sourceRoot":"","sources":["../../../../src/util/table-controls.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,QAAQ,CAAC;AAEjD,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GACxD;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3D,KAAK,iBAAiB,GAAG;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC,EAAE,MAAM,CAAC,CAAC;AAC/G,MAAM,MAAM,iBAAiB,GAAG,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC,EAAE,MAAM,CAAC,CAAC;AAE3G,eAAO,MAAM,mBAAmB;;;CAGtB,CAAC;AAwBX,eAAO,MAAM,aAAa,6CAKvB,mBAAmB,KAAG,MAQxB,CAAC;AAEF,eAAO,MAAM,WAAW,8CAA+D,iBAAiB,KAAG,MAQ1G,CAAC;AAEF,eAAO,MAAM,aAAa;;;oEApBvB,mBAAmB,KAAG,MAAM;+BAwBb,WAAW,KAAG,OAAO,CAAC,WAAW,EAAE;YAAE,IAAI,EAAE,UAAU,CAAA;SAAE,CAAC;;;;qEAda,iBAAiB,KAAG,MAAM;+BAuB/F,WAAW,KAAG,OAAO,CAAC,WAAW,EAAE;YAAE,IAAI,EAAE,QAAQ,CAAA;SAAE,CAAC;;CAM9D,CAAC"}
1
+ {"version":3,"file":"table-controls.d.ts","sourceRoot":"","sources":["../../../../src/util/table-controls.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,QAAQ,CAAC;AAEjD,MAAM,MAAM,WAAW,GACnB;IAAE,IAAI,EAAE,UAAU,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAA;CAAE,GACxD;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAE3D,KAAK,iBAAiB,GAAG;IACvB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,CAAC,EAAE,MAAM,CAAC,CAAC;AAC/G,MAAM,MAAM,iBAAiB,GAAG,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;IAAE,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC,EAAE,MAAM,CAAC,CAAC;AAE3G,eAAO,MAAM,mBAAmB;;;CAGtB,CAAC;AAwBX,eAAO,MAAM,aAAa,GAAI,0CAK3B,mBAAmB,KAAG,MAQxB,CAAC;AAEF,eAAO,MAAM,WAAW,GAAI,2CAA2D,iBAAiB,KAAG,MAQ1G,CAAC;AAEF,eAAO,MAAM,aAAa;;;oEApBvB,mBAAmB,KAAG,MAAM;+BAwBb,WAAW,KAAG,OAAO,CAAC,WAAW,EAAE;YAAE,IAAI,EAAE,UAAU,CAAA;SAAE,CAAC;;;;qEAda,iBAAiB,KAAG,MAAM;+BAuB/F,WAAW,KAAG,OAAO,CAAC,WAAW,EAAE;YAAE,IAAI,EAAE,QAAQ,CAAA;SAAE,CAAC;;CAM9D,CAAC"}
@@ -1,4 +1,4 @@
1
- import { S } from '@dxos/echo-schema';
1
+ import { Schema } from 'effect';
2
2
  import { type Client } from '@dxos/react-client';
3
3
  import { type Space } from '@dxos/react-client/echo';
4
4
  import { type TableType } from '../types';
@@ -9,6 +9,6 @@ type InitialiseTableProps = {
9
9
  typename?: string;
10
10
  initialRow?: boolean;
11
11
  };
12
- export declare const initializeTable: ({ client, space, table, typename, initialRow, }: InitialiseTableProps) => Promise<S.Schema.AnyNoContext>;
12
+ export declare const initializeTable: ({ client, space, table, typename, initialRow, }: InitialiseTableProps) => Promise<Schema.Schema.AnyNoContext>;
13
13
  export {};
14
14
  //# sourceMappingURL=table.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../../../src/util/table.ts"],"names":[],"mappings":"AAIA,OAAO,EAOL,CAAC,EAGF,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,KAAK,MAAM,EAAa,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAiB,KAAK,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAGpE,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,UAAU,CAAC;AAG1C,KAAK,oBAAoB,GAAG;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,SAAS,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,eAAe,oDAMzB,oBAAoB,KAAG,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,YAAY,CA0CtD,CAAC"}
1
+ {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../../../src/util/table.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,MAAM,EAAa,MAAM,QAAQ,CAAC;AAW3C,OAAO,EAAE,KAAK,MAAM,EAAa,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAiB,KAAK,KAAK,EAAE,MAAM,yBAAyB,CAAC;AAGpE,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,UAAU,CAAC;AAG1C,KAAK,oBAAoB,GAAG;IAC1B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,KAAK,CAAC;IACb,KAAK,EAAE,SAAS,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,eAAO,MAAM,eAAe,GAAU,iDAMnC,oBAAoB,KAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CA0C3D,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"tag.d.ts","sourceRoot":"","sources":["../../../../src/util/tag.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,eAAO,MAAM,iBAAiB,QAA6B,CAAC;AAE5D;;;;GAIG;AACH,eAAO,MAAM,aAAa,UAAW,OAAO,KAAG,MAAM,EAAE,GAAG,SAgBzD,CAAC"}
1
+ {"version":3,"file":"tag.d.ts","sourceRoot":"","sources":["../../../../src/util/tag.ts"],"names":[],"mappings":"AAMA;;GAEG;AACH,eAAO,MAAM,iBAAiB,QAA6B,CAAC;AAE5D;;;;GAIG;AACH,eAAO,MAAM,aAAa,GAAI,OAAO,OAAO,KAAG,MAAM,EAAE,GAAG,SAgBzD,CAAC"}
@@ -1 +1 @@
1
- {"version":"5.7.3"}
1
+ {"version":"5.8.3"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dxos/react-ui-table",
3
- "version": "0.8.2-main.5885341",
3
+ "version": "0.8.2-main.600d381",
4
4
  "description": "A table component.",
5
5
  "homepage": "https://dxos.org",
6
6
  "bugs": "https://github.com/dxos/dxos/issues",
@@ -51,31 +51,33 @@
51
51
  "@radix-ui/react-slot": "1.1.2",
52
52
  "@radix-ui/react-use-controllable-state": "1.1.0",
53
53
  "date-fns": "^3.3.1",
54
+ "effect": "3.14.21",
54
55
  "lodash.orderby": "^4.6.0",
55
- "@dxos/debug": "0.8.2-main.5885341",
56
- "@dxos/context": "0.8.2-main.5885341",
57
- "@dxos/echo-schema": "0.8.2-main.5885341",
58
- "@dxos/invariant": "0.8.2-main.5885341",
59
- "@dxos/effect": "0.8.2-main.5885341",
60
- "@dxos/lit-grid": "0.8.2-main.5885341",
61
- "@dxos/keys": "0.8.2-main.5885341",
62
- "@dxos/live-object": "0.8.2-main.5885341",
63
- "@dxos/log": "0.8.2-main.5885341",
64
- "@dxos/plugin-search": "0.8.2-main.5885341",
65
- "@dxos/plugin-space": "0.8.2-main.5885341",
66
- "@dxos/react-ui-attention": "0.8.2-main.5885341",
67
- "@dxos/react-client": "0.8.2-main.5885341",
68
- "@dxos/react-ui-editor": "0.8.2-main.5885341",
69
- "@dxos/react-ui-form": "0.8.2-main.5885341",
70
- "@dxos/react-ui-grid": "0.8.2-main.5885341",
71
- "@dxos/react-ui-menu": "0.8.2-main.5885341",
72
- "@dxos/react-ui-searchlist": "0.8.2-main.5885341",
73
- "@dxos/react-ui-stack": "0.8.2-main.5885341",
74
- "@dxos/react-ui-syntax-highlighter": "0.8.2-main.5885341",
75
- "@dxos/react-ui-tag-picker": "0.8.2-main.5885341",
76
- "@dxos/react-ui-types": "0.8.2-main.5885341",
77
- "@dxos/util": "0.8.2-main.5885341",
78
- "@dxos/schema": "0.8.2-main.5885341"
56
+ "@dxos/context": "0.8.2-main.600d381",
57
+ "@dxos/echo": "0.8.2-main.600d381",
58
+ "@dxos/echo-schema": "0.8.2-main.600d381",
59
+ "@dxos/debug": "0.8.2-main.600d381",
60
+ "@dxos/effect": "0.8.2-main.600d381",
61
+ "@dxos/invariant": "0.8.2-main.600d381",
62
+ "@dxos/keys": "0.8.2-main.600d381",
63
+ "@dxos/log": "0.8.2-main.600d381",
64
+ "@dxos/live-object": "0.8.2-main.600d381",
65
+ "@dxos/lit-grid": "0.8.2-main.600d381",
66
+ "@dxos/plugin-search": "0.8.2-main.600d381",
67
+ "@dxos/plugin-space": "0.8.2-main.600d381",
68
+ "@dxos/react-ui-attention": "0.8.2-main.600d381",
69
+ "@dxos/react-client": "0.8.2-main.600d381",
70
+ "@dxos/react-ui-editor": "0.8.2-main.600d381",
71
+ "@dxos/react-ui-form": "0.8.2-main.600d381",
72
+ "@dxos/react-ui-grid": "0.8.2-main.600d381",
73
+ "@dxos/react-ui-menu": "0.8.2-main.600d381",
74
+ "@dxos/react-ui-searchlist": "0.8.2-main.600d381",
75
+ "@dxos/react-ui-stack": "0.8.2-main.600d381",
76
+ "@dxos/react-ui-syntax-highlighter": "0.8.2-main.600d381",
77
+ "@dxos/react-ui-types": "0.8.2-main.600d381",
78
+ "@dxos/react-ui-tag-picker": "0.8.2-main.600d381",
79
+ "@dxos/util": "0.8.2-main.600d381",
80
+ "@dxos/schema": "0.8.2-main.600d381"
79
81
  },
80
82
  "devDependencies": {
81
83
  "@phosphor-icons/react": "^2.1.5",
@@ -86,19 +88,19 @@
86
88
  "react": "~18.2.0",
87
89
  "react-dom": "~18.2.0",
88
90
  "vite": "5.4.7",
89
- "@dxos/echo-signals": "0.8.2-main.5885341",
90
- "@dxos/random": "0.8.2-main.5885341",
91
- "@dxos/react-ui-theme": "0.8.2-main.5885341",
92
- "@dxos/react-ui": "0.8.2-main.5885341",
93
- "@dxos/storybook-utils": "0.8.2-main.5885341",
94
- "@dxos/test-utils": "0.8.2-main.5885341"
91
+ "@dxos/echo-signals": "0.8.2-main.600d381",
92
+ "@dxos/random": "0.8.2-main.600d381",
93
+ "@dxos/react-ui": "0.8.2-main.600d381",
94
+ "@dxos/storybook-utils": "0.8.2-main.600d381",
95
+ "@dxos/test-utils": "0.8.2-main.600d381",
96
+ "@dxos/react-ui-theme": "0.8.2-main.600d381"
95
97
  },
96
98
  "peerDependencies": {
97
99
  "@phosphor-icons/react": "^2.1.5",
98
100
  "react": "~18.2.0",
99
101
  "react-dom": "~18.2.0",
100
- "@dxos/react-ui": "0.8.2-main.5885341",
101
- "@dxos/react-ui-theme": "0.8.2-main.5885341"
102
+ "@dxos/react-ui-theme": "0.8.2-main.600d381",
103
+ "@dxos/react-ui": "0.8.2-main.600d381"
102
104
  },
103
105
  "publishConfig": {
104
106
  "access": "public"
@@ -2,9 +2,9 @@
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
4
 
5
+ import { Schema } from 'effect';
5
6
  import React, { useCallback, useMemo } from 'react';
6
7
 
7
- import { S } from '@dxos/echo-schema';
8
8
  import { live } from '@dxos/react-client/echo';
9
9
  import { Popover } from '@dxos/react-ui';
10
10
  import { Form } from '@dxos/react-ui-form';
@@ -20,14 +20,14 @@ export const CreateRefPanel = ({ model, modals, __gridScope }: GridScopedProps<C
20
20
  const space = model?.space;
21
21
  const state = modals.state.value;
22
22
 
23
- const schema = useMemo<S.Schema<any> | undefined>(() => {
23
+ const schema = useMemo<Schema.Schema<any> | undefined>(() => {
24
24
  if (!space || state?.type !== 'createRefPanel') {
25
25
  return;
26
26
  }
27
27
 
28
28
  const [schema] = space.db.schemaRegistry.query({ typename: state.typename }).runSync();
29
29
  if (schema) {
30
- const omit = S.omit<any, any, ['id']>('id');
30
+ const omit = Schema.omit<any, any, ['id']>('id');
31
31
  return omit(schema);
32
32
  }
33
33
  }, [space, state]);
@@ -59,7 +59,7 @@ const meta: Meta = {
59
59
  title: 'ui/react-ui-table/DynamicTable',
60
60
  component: DynamicTable,
61
61
  parameters: { translations },
62
- decorators: [withTheme, withLayout({ fullscreen: true, tooltips: true })],
62
+ decorators: [withLayout({ fullscreen: true }), withTheme],
63
63
  };
64
64
 
65
65
  export default meta;
@@ -27,8 +27,6 @@ type DynamicTableProps = ThemedClassName<{
27
27
 
28
28
  /**
29
29
  * Properties define both the schema and display characteristics of the table columns.
30
- *
31
- * @deprecated Use Table.
32
30
  */
33
31
  // TODO(burdon): Instead of creating component variants, create helpers/hooks that normalize the props.
34
32
  // TODO(burdon): Warning: Cannot update a component (`DynamicTable`) while rendering a different component (`DynamicTable`).
@@ -28,8 +28,7 @@ import { TableType } from '../../types';
28
28
  import { initializeTable } from '../../util';
29
29
  import { TableToolbar } from '../TableToolbar';
30
30
 
31
- // NOTE(ZaymonFC): We rely on this seed being 0 in the smoke tests.
32
- faker.seed(0);
31
+ faker.seed(0); // NOTE(ZaymonFC): Required for smoke tests.
33
32
 
34
33
  /**
35
34
  * Custom hook to create and manage a test table model for storybook demonstrations.
@@ -233,8 +232,8 @@ const meta: Meta<StoryProps> = {
233
232
  });
234
233
  },
235
234
  }),
235
+ withLayout({ fullscreen: true }),
236
236
  withTheme,
237
- withLayout({ fullscreen: true, tooltips: true }),
238
237
  ],
239
238
  };
240
239
 
@@ -261,8 +260,8 @@ export const StaticSchema: StoryObj = {
261
260
  ]);
262
261
  },
263
262
  }),
263
+ withLayout({ fullscreen: true }),
264
264
  withTheme,
265
- withLayout({ fullscreen: true, tooltips: true }),
266
265
  ],
267
266
  };
268
267
 
@@ -317,7 +316,7 @@ export const Tags: Meta<StoryProps> = {
317
316
  });
318
317
  },
319
318
  }),
319
+ withLayout({ fullscreen: true }),
320
320
  withTheme,
321
- withLayout({ fullscreen: true, tooltips: true }),
322
321
  ],
323
322
  };
@@ -5,14 +5,15 @@
5
5
  import '@dxos-theme';
6
6
 
7
7
  import { type StoryObj, type Meta } from '@storybook/react';
8
+ import { SchemaAST } from 'effect';
8
9
  import React, { useEffect, useMemo } from 'react';
9
10
 
10
- import { AST, type BaseObject, ImmutableSchema, type BaseSchema, type HasId } from '@dxos/echo-schema';
11
+ import { type BaseObject, ImmutableSchema, type BaseSchema, type HasId } from '@dxos/echo-schema';
11
12
  import { getAnnotation } from '@dxos/effect';
12
13
  import { faker } from '@dxos/random';
13
14
  import { live, makeRef } from '@dxos/react-client/echo';
14
15
  import { useClientProvider, withClientProvider } from '@dxos/react-client/testing';
15
- import { Contact, createView, Organization, ViewProjection, ViewType } from '@dxos/schema';
16
+ import { DataType, createView, ViewProjection, ViewType } from '@dxos/schema';
16
17
  import { createAsyncGenerator, type ValueGenerator } from '@dxos/schema/testing';
17
18
  import { withLayout, withTheme } from '@dxos/storybook-utils';
18
19
 
@@ -33,9 +34,9 @@ const useTestModel = <T extends BaseObject & HasId>(schema: BaseSchema<T>, count
33
34
  const { space } = useClientProvider();
34
35
 
35
36
  const table = useMemo(() => {
36
- // const { typename } = pipe(schema.ast, AST.getAnnotation<TypeAnnotation>(TypeAnnotationId), Option.getOrThrow);
37
+ // const { typename } = pipe(schema.ast, SchemaAST.getAnnotation<TypeAnnotation>(TypeAnnotationId), Option.getOrThrow);
37
38
  const typename = schema.typename;
38
- const name = getAnnotation<string>(AST.TitleAnnotationId)(schema.ast) ?? typename;
39
+ const name = getAnnotation<string>(SchemaAST.TitleAnnotationId)(schema.ast) ?? typename;
39
40
  const view = createView({ name, typename, jsonSchema: schema.jsonSchema });
40
41
  return live(TableType, { view: makeRef(view) });
41
42
  }, [schema]);
@@ -81,12 +82,12 @@ const useTestModel = <T extends BaseObject & HasId>(schema: BaseSchema<T>, count
81
82
 
82
83
  const DefaultStory = () => {
83
84
  // TODO(burdon): Remove need for ImmutableSchema wrapper at API-level.
84
- const orgSchema = useMemo(() => new ImmutableSchema(Organization), []);
85
- const { model: orgModel, presentation: orgPresentation } = useTestModel<Organization>(orgSchema, 50);
85
+ const orgSchema = useMemo(() => new ImmutableSchema(DataType.Organization), []);
86
+ const { model: orgModel, presentation: orgPresentation } = useTestModel<DataType.Organization>(orgSchema, 50);
86
87
 
87
88
  // TODO(burdon): Generate links with references.
88
- const contactSchema = useMemo(() => new ImmutableSchema(Contact), []);
89
- const { model: contactModel, presentation: contactPresentation } = useTestModel<Contact>(contactSchema, 50);
89
+ const contactSchema = useMemo(() => new ImmutableSchema(DataType.Person), []);
90
+ const { model: contactModel, presentation: contactPresentation } = useTestModel<DataType.Person>(contactSchema, 50);
90
91
 
91
92
  return (
92
93
  <div className='is-full bs-full grid grid-cols-2 divide-x divide-separator'>
@@ -106,12 +107,12 @@ const meta: Meta<typeof DefaultStory> = {
106
107
  parameters: { translations },
107
108
  decorators: [
108
109
  withClientProvider({
109
- types: [TableType, ViewType, Organization, Contact],
110
+ types: [TableType, ViewType, DataType.Organization, DataType.Person],
110
111
  createIdentity: true,
111
112
  createSpace: true,
112
113
  }),
113
114
  withTheme,
114
- withLayout({ fullscreen: true, tooltips: true }),
115
+ withLayout({ fullscreen: true }),
115
116
  ],
116
117
  };
117
118
 
@@ -107,7 +107,7 @@ const meta: Meta<StoryProps> = {
107
107
  },
108
108
  }),
109
109
  withTheme,
110
- withLayout({ tooltips: true }),
110
+ withLayout(),
111
111
  ],
112
112
  };
113
113
 
@@ -10,7 +10,6 @@ import {
10
10
  createGapSeparator,
11
11
  createMenuAction,
12
12
  type MenuAction,
13
- type MenuActionHandler,
14
13
  MenuProvider,
15
14
  ToolbarMenu,
16
15
  useMenuActions,
@@ -27,18 +26,18 @@ export type TableToolbarActionType = 'add-row' | 'comment' | 'save-view';
27
26
  type TableToolbarState = Partial<{ viewDirty: boolean }>;
28
27
 
29
28
  export type TableToolbarProps = ThemedClassName<
30
- TableToolbarState & { onAction?: MenuActionHandler<TableToolbarAction>; attendableId?: string }
29
+ TableToolbarState & { onAction: (action: TableToolbarAction) => void; attendableId?: string }
31
30
  >;
32
31
 
33
- const createTableToolbarActions = (state: TableToolbarState) => {
34
- const add = createMenuAction<TableToolbarActionProperties>('add-row', {
35
- type: 'add-row',
32
+ const createTableToolbarActions = (state: TableToolbarState, onAction: (action: TableToolbarAction) => void) => {
33
+ const add = createMenuAction<TableToolbarActionProperties>('add-row', () => onAction(add), {
34
+ type: 'add-row' as const,
36
35
  icon: 'ph--plus--regular',
37
36
  label: ['add row', { ns: translationKey }],
38
37
  testId: 'table.toolbar.add-row',
39
38
  });
40
- const save = createMenuAction<TableToolbarActionProperties>('save-view', {
41
- type: 'save-view',
39
+ const save = createMenuAction<TableToolbarActionProperties>('save-view', () => onAction(save), {
40
+ type: 'save-view' as const,
42
41
  icon: 'ph--floppy-disk--regular',
43
42
  label: ['save view label', { ns: translationKey }],
44
43
  testId: 'table.toolbar.save-view',
@@ -46,8 +45,8 @@ const createTableToolbarActions = (state: TableToolbarState) => {
46
45
  hidden: !state.viewDirty,
47
46
  });
48
47
  const gap = createGapSeparator();
49
- const comment = createMenuAction('comment', {
50
- type: 'comment',
48
+ const comment = createMenuAction('comment', () => onAction(comment), {
49
+ type: 'comment' as const,
51
50
  icon: 'ph--chat-text--regular',
52
51
  label: ['create comment', { ns: translationKey }],
53
52
  testId: 'table.toolbar.comment',
@@ -61,11 +60,11 @@ const createTableToolbarActions = (state: TableToolbarState) => {
61
60
 
62
61
  export const TableToolbar = ({ classNames, viewDirty, attendableId, onAction }: TableToolbarProps) => {
63
62
  const state = useMemo(() => live<TableToolbarState>({ viewDirty }), []);
64
- const actionsCreator = useCallback(() => createTableToolbarActions(state), [state]);
63
+ const actionsCreator = useCallback(() => createTableToolbarActions(state, onAction), [state, onAction]);
65
64
  const menu = useMenuActions(actionsCreator);
66
65
 
67
66
  return (
68
- <MenuProvider {...menu} attendableId={attendableId} onAction={onAction as MenuActionHandler}>
67
+ <MenuProvider {...menu} attendableId={attendableId}>
69
68
  <ToolbarMenu classNames={classNames} />
70
69
  </MenuProvider>
71
70
  );
@@ -2,9 +2,10 @@
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
4
 
5
+ import { Schema } from 'effect';
5
6
  import { useEffect } from 'react';
6
7
 
7
- import { setValue, toJsonSchema, S, TypeEnum, TypedObject, FormatEnum } from '@dxos/echo-schema';
8
+ import { setValue, toJsonSchema, TypeEnum, TypedObject, FormatEnum, ObjectId } from '@dxos/echo-schema';
8
9
  import { faker } from '@dxos/random';
9
10
  import { live, makeRef } from '@dxos/react-client/echo';
10
11
  import { createView, type ViewProjection } from '@dxos/schema';
@@ -12,11 +13,11 @@ import { createView, type ViewProjection } from '@dxos/schema';
12
13
  import { TableType } from '../types';
13
14
 
14
15
  export const TestSchema = TypedObject({ typename: 'example.com/type/Test', version: '0.1.0' })({
15
- id: S.String,
16
- name: S.optional(S.String),
17
- age: S.optional(S.Number),
18
- active: S.optional(S.Boolean),
19
- netWorth: S.optional(S.Number),
16
+ id: ObjectId,
17
+ name: Schema.optional(Schema.String),
18
+ age: Schema.optional(Schema.Number),
19
+ active: Schema.optional(Schema.Boolean),
20
+ netWorth: Schema.optional(Schema.Number),
20
21
  });
21
22
 
22
23
  export const createTable = (schema = TestSchema) => {
@@ -3,9 +3,10 @@
3
3
  //
4
4
 
5
5
  import { computed } from '@preact/signals-core';
6
+ import { Schema } from 'effect';
6
7
  import { afterEach, beforeEach, describe, expect, it } from 'vitest';
7
8
 
8
- import { S, TypedObject } from '@dxos/echo-schema';
9
+ import { TypedObject } from '@dxos/echo-schema';
9
10
  import { updateCounter } from '@dxos/echo-schema/testing';
10
11
  import { registerSignalsRuntime } from '@dxos/echo-signals';
11
12
  import { createEchoSchema } from '@dxos/live-object/testing';
@@ -99,8 +100,8 @@ describe('TableModel', () => {
99
100
  });
100
101
 
101
102
  class Test extends TypedObject({ typename: 'example.com/type/Test', version: '0.1.0' })({
102
- title: S.String,
103
- completed: S.Boolean,
103
+ title: Schema.String,
104
+ completed: Schema.Boolean,
104
105
  }) {}
105
106
 
106
107
  const createTableModel = (props: Partial<TableModelProps> = {}): TableModel => {
@@ -2,9 +2,10 @@
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
4
 
5
+ import { Schema } from 'effect';
5
6
  import { describe, expect, it, beforeEach } from 'vitest';
6
7
 
7
- import { S, TypedObject } from '@dxos/echo-schema';
8
+ import { TypedObject } from '@dxos/echo-schema';
8
9
  import { live, makeRef } from '@dxos/live-object';
9
10
  import { createEchoSchema } from '@dxos/live-object/testing';
10
11
  import { createView, ViewProjection } from '@dxos/schema';
@@ -89,8 +90,8 @@ describe('TablePresentation', () => {
89
90
  });
90
91
 
91
92
  class Test extends TypedObject({ typename: 'example.com/type/Test', version: '0.1.0' })({
92
- title: S.String,
93
- completed: S.Boolean,
93
+ title: Schema.String,
94
+ completed: Schema.Boolean,
94
95
  }) {}
95
96
 
96
97
  const createTableModel = (props: Partial<TableModelProps> = {}): TableModel => {
@@ -2,20 +2,28 @@
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
4
 
5
- import { EchoObject, Expando, LabelAnnotationId, ObjectId, Ref, S } from '@dxos/echo-schema';
5
+ import { Schema } from 'effect';
6
+
7
+ import { Type } from '@dxos/echo';
6
8
  // import { ThreadType } from '@dxos/plugin-space/types';
9
+ import { LabelAnnotationId } from '@dxos/echo-schema';
7
10
  import { ViewType } from '@dxos/schema';
8
11
 
9
- export const TableSchema = S.Struct({
10
- id: ObjectId,
11
- name: S.optional(S.String),
12
- view: S.optional(Ref(ViewType)),
12
+ export const TableSchema = Schema.Struct({
13
+ id: Type.ObjectId,
14
+ name: Schema.optional(Schema.String),
15
+ view: Schema.optional(Type.Ref(ViewType)),
13
16
  // TODO(burdon): Document why threads is included here?
14
- threads: S.optional(S.Array(Ref(Expando /* ThreadType */))),
17
+ threads: Schema.optional(Schema.Array(Type.Ref(Type.Expando /* ThreadType */))),
15
18
  }).annotations({
16
19
  // TODO(burdon): Move annotation to property.
17
20
  [LabelAnnotationId]: 'name',
18
21
  });
19
22
 
20
- export const TableType = TableSchema.pipe(EchoObject({ typename: 'dxos.org/type/Table', version: '0.1.0' }));
21
- export interface TableType extends S.Schema.Type<typeof TableType> {}
23
+ export const TableType = TableSchema.pipe(
24
+ Type.def({
25
+ typename: 'dxos.org/type/Table',
26
+ version: '0.1.0',
27
+ }),
28
+ );
29
+ export interface TableType extends Schema.Schema.Type<typeof TableType> {}
package/src/util/table.ts CHANGED
@@ -2,14 +2,14 @@
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
4
 
5
+ import { Schema, SchemaAST } from 'effect';
6
+
5
7
  import {
6
- AST,
7
8
  type EchoSchema,
8
9
  Format,
9
10
  FormatEnum,
10
11
  type JsonPath,
11
12
  type JsonProp,
12
- S,
13
13
  TypedObject,
14
14
  TypeEnum,
15
15
  } from '@dxos/echo-schema';
@@ -34,7 +34,7 @@ export const initializeTable = async ({
34
34
  table,
35
35
  typename,
36
36
  initialRow = true,
37
- }: InitialiseTableProps): Promise<S.Schema.AnyNoContext> => {
37
+ }: InitialiseTableProps): Promise<Schema.Schema.AnyNoContext> => {
38
38
  if (typename) {
39
39
  const schema = await space.db.graph.getSchemaByTypename(typename, space.db);
40
40
  if (!schema) {
@@ -82,10 +82,10 @@ const ContactSchema = TypedObject({
82
82
  typename: `example.com/type/${PublicKey.random().truncate()}`,
83
83
  version: '0.1.0',
84
84
  })({
85
- name: S.optional(S.String).annotations({ [AST.TitleAnnotationId]: 'Name' }),
86
- active: S.optional(S.Boolean),
87
- email: S.optional(Format.Email),
88
- salary: S.optional(Format.Currency()).annotations({ [AST.TitleAnnotationId]: 'Salary' }),
85
+ name: Schema.optional(Schema.String).annotations({ [SchemaAST.TitleAnnotationId]: 'Name' }),
86
+ active: Schema.optional(Schema.Boolean),
87
+ email: Schema.optional(Format.Email),
88
+ salary: Schema.optional(Format.Currency()).annotations({ [SchemaAST.TitleAnnotationId]: 'Salary' }),
89
89
  });
90
90
 
91
91
  const ContactFields = ['name', 'email', 'salary', 'active'];
@@ -1,26 +0,0 @@
1
- // packages/ui/react-ui-table/src/types/table.ts
2
- import { EchoObject, Expando, LabelAnnotationId, ObjectId, Ref, S } from "@dxos/echo-schema";
3
- import { ViewType } from "@dxos/schema";
4
- var TableSchema = S.Struct({
5
- id: ObjectId,
6
- name: S.optional(S.String),
7
- view: S.optional(Ref(ViewType)),
8
- // TODO(burdon): Document why threads is included here?
9
- threads: S.optional(S.Array(Ref(
10
- Expando
11
- /* ThreadType */
12
- )))
13
- }).annotations({
14
- // TODO(burdon): Move annotation to property.
15
- [LabelAnnotationId]: "name"
16
- });
17
- var TableType = TableSchema.pipe(EchoObject({
18
- typename: "dxos.org/type/Table",
19
- version: "0.1.0"
20
- }));
21
-
22
- export {
23
- TableSchema,
24
- TableType
25
- };
26
- //# sourceMappingURL=chunk-YWNRUF4J.mjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/types/table.ts"],
4
- "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { EchoObject, Expando, LabelAnnotationId, ObjectId, Ref, S } from '@dxos/echo-schema';\n// import { ThreadType } from '@dxos/plugin-space/types';\nimport { ViewType } from '@dxos/schema';\n\nexport const TableSchema = S.Struct({\n id: ObjectId,\n name: S.optional(S.String),\n view: S.optional(Ref(ViewType)),\n // TODO(burdon): Document why threads is included here?\n threads: S.optional(S.Array(Ref(Expando /* ThreadType */))),\n}).annotations({\n // TODO(burdon): Move annotation to property.\n [LabelAnnotationId]: 'name',\n});\n\nexport const TableType = TableSchema.pipe(EchoObject({ typename: 'dxos.org/type/Table', version: '0.1.0' }));\nexport interface TableType extends S.Schema.Type<typeof TableType> {}\n"],
5
- "mappings": ";AAIA,SAASA,YAAYC,SAASC,mBAAmBC,UAAUC,KAAKC,SAAS;AAEzE,SAASC,gBAAgB;AAElB,IAAMC,cAAcC,EAAEC,OAAO;EAClCC,IAAIC;EACJC,MAAMJ,EAAEK,SAASL,EAAEM,MAAM;EACzBC,MAAMP,EAAEK,SAASG,IAAIC,QAAAA,CAAAA;;EAErBC,SAASV,EAAEK,SAASL,EAAEW,MAAMH;IAAII;;EAAsB,CAAA,CAAA;AACxD,CAAA,EAAGC,YAAY;;EAEb,CAACC,iBAAAA,GAAoB;AACvB,CAAA;AAEO,IAAMC,YAAYhB,YAAYiB,KAAKC,WAAW;EAAEC,UAAU;EAAuBC,SAAS;AAAQ,CAAA,CAAA;",
6
- "names": ["EchoObject", "Expando", "LabelAnnotationId", "ObjectId", "Ref", "S", "ViewType", "TableSchema", "S", "Struct", "id", "ObjectId", "name", "optional", "String", "view", "Ref", "ViewType", "threads", "Array", "Expando", "annotations", "LabelAnnotationId", "TableType", "pipe", "EchoObject", "typename", "version"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/types/table.ts"],
4
- "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { EchoObject, Expando, LabelAnnotationId, ObjectId, Ref, S } from '@dxos/echo-schema';\n// import { ThreadType } from '@dxos/plugin-space/types';\nimport { ViewType } from '@dxos/schema';\n\nexport const TableSchema = S.Struct({\n id: ObjectId,\n name: S.optional(S.String),\n view: S.optional(Ref(ViewType)),\n // TODO(burdon): Document why threads is included here?\n threads: S.optional(S.Array(Ref(Expando /* ThreadType */))),\n}).annotations({\n // TODO(burdon): Move annotation to property.\n [LabelAnnotationId]: 'name',\n});\n\nexport const TableType = TableSchema.pipe(EchoObject({ typename: 'dxos.org/type/Table', version: '0.1.0' }));\nexport interface TableType extends S.Schema.Type<typeof TableType> {}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAIA,yBAAyE;AAEzE,oBAAyB;AAElB,IAAMA,cAAcC,qBAAEC,OAAO;EAClCC,IAAIC;EACJC,MAAMJ,qBAAEK,SAASL,qBAAEM,MAAM;EACzBC,MAAMP,qBAAEK,aAASG,wBAAIC,sBAAAA,CAAAA;;EAErBC,SAASV,qBAAEK,SAASL,qBAAEW,UAAMH;IAAII;;EAAsB,CAAA,CAAA;AACxD,CAAA,EAAGC,YAAY;;EAEb,CAACC,oCAAAA,GAAoB;AACvB,CAAA;AAEO,IAAMC,YAAYhB,YAAYiB,SAAKC,+BAAW;EAAEC,UAAU;EAAuBC,SAAS;AAAQ,CAAA,CAAA;",
6
- "names": ["TableSchema", "S", "Struct", "id", "ObjectId", "name", "optional", "String", "view", "Ref", "ViewType", "threads", "Array", "Expando", "annotations", "LabelAnnotationId", "TableType", "pipe", "EchoObject", "typename", "version"]
7
- }
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/types/table.ts"],
4
- "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { EchoObject, Expando, LabelAnnotationId, ObjectId, Ref, S } from '@dxos/echo-schema';\n// import { ThreadType } from '@dxos/plugin-space/types';\nimport { ViewType } from '@dxos/schema';\n\nexport const TableSchema = S.Struct({\n id: ObjectId,\n name: S.optional(S.String),\n view: S.optional(Ref(ViewType)),\n // TODO(burdon): Document why threads is included here?\n threads: S.optional(S.Array(Ref(Expando /* ThreadType */))),\n}).annotations({\n // TODO(burdon): Move annotation to property.\n [LabelAnnotationId]: 'name',\n});\n\nexport const TableType = TableSchema.pipe(EchoObject({ typename: 'dxos.org/type/Table', version: '0.1.0' }));\nexport interface TableType extends S.Schema.Type<typeof TableType> {}\n"],
5
- "mappings": ";;;AAIA,SAASA,YAAYC,SAASC,mBAAmBC,UAAUC,KAAKC,SAAS;AAEzE,SAASC,gBAAgB;AAElB,IAAMC,cAAcC,EAAEC,OAAO;EAClCC,IAAIC;EACJC,MAAMJ,EAAEK,SAASL,EAAEM,MAAM;EACzBC,MAAMP,EAAEK,SAASG,IAAIC,QAAAA,CAAAA;;EAErBC,SAASV,EAAEK,SAASL,EAAEW,MAAMH;IAAII;;EAAsB,CAAA,CAAA;AACxD,CAAA,EAAGC,YAAY;;EAEb,CAACC,iBAAAA,GAAoB;AACvB,CAAA;AAEO,IAAMC,YAAYhB,YAAYiB,KAAKC,WAAW;EAAEC,UAAU;EAAuBC,SAAS;AAAQ,CAAA,CAAA;",
6
- "names": ["EchoObject", "Expando", "LabelAnnotationId", "ObjectId", "Ref", "S", "ViewType", "TableSchema", "S", "Struct", "id", "ObjectId", "name", "optional", "String", "view", "Ref", "ViewType", "threads", "Array", "Expando", "annotations", "LabelAnnotationId", "TableType", "pipe", "EchoObject", "typename", "version"]
7
- }