@dxos/react-ui-table 0.8.4-main.fcfe5033a5 → 0.8.4-staging.60fe92afc8

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 (115) hide show
  1. package/LICENSE +102 -5
  2. package/dist/lib/browser/{chunk-F7Y374KL.mjs → chunk-4KOQTPFC.mjs} +62 -111
  3. package/dist/lib/browser/chunk-4KOQTPFC.mjs.map +7 -0
  4. package/dist/lib/browser/{chunk-BF54SSNL.mjs → chunk-62PYOJPY.mjs} +13 -16
  5. package/dist/lib/browser/chunk-62PYOJPY.mjs.map +7 -0
  6. package/dist/lib/browser/chunk-J5LGTIGS.mjs +10 -0
  7. package/dist/lib/browser/chunk-J5LGTIGS.mjs.map +7 -0
  8. package/dist/lib/browser/index.mjs +57 -131
  9. package/dist/lib/browser/index.mjs.map +4 -4
  10. package/dist/lib/browser/meta.json +1 -1
  11. package/dist/lib/browser/testing/index.mjs +9 -8
  12. package/dist/lib/browser/testing/index.mjs.map +3 -3
  13. package/dist/lib/browser/translations.mjs +36 -0
  14. package/dist/lib/browser/translations.mjs.map +7 -0
  15. package/dist/lib/browser/types/index.mjs +2 -1
  16. package/dist/lib/node-esm/{chunk-SIRDIPHZ.mjs → chunk-7LMOZUTS.mjs} +13 -16
  17. package/dist/lib/node-esm/chunk-7LMOZUTS.mjs.map +7 -0
  18. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
  19. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +7 -0
  20. package/dist/lib/node-esm/{chunk-CCJ4LOVM.mjs → chunk-KOSV2J5N.mjs} +62 -111
  21. package/dist/lib/node-esm/chunk-KOSV2J5N.mjs.map +7 -0
  22. package/dist/lib/node-esm/index.mjs +57 -131
  23. package/dist/lib/node-esm/index.mjs.map +4 -4
  24. package/dist/lib/node-esm/meta.json +1 -1
  25. package/dist/lib/node-esm/testing/index.mjs +9 -8
  26. package/dist/lib/node-esm/testing/index.mjs.map +3 -3
  27. package/dist/lib/node-esm/translations.mjs +37 -0
  28. package/dist/lib/node-esm/translations.mjs.map +7 -0
  29. package/dist/lib/node-esm/types/index.mjs +2 -1
  30. package/dist/types/src/components/Table/ColumnActionsMenu.d.ts.map +1 -1
  31. package/dist/types/src/components/Table/ColumnSettings.d.ts +2 -2
  32. package/dist/types/src/components/Table/ColumnSettings.d.ts.map +1 -1
  33. package/dist/types/src/components/Table/DynamicTable.d.ts +3 -4
  34. package/dist/types/src/components/Table/DynamicTable.d.ts.map +1 -1
  35. package/dist/types/src/components/Table/DynamicTable.stories.d.ts +21 -20
  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 +87 -81
  38. package/dist/types/src/components/Table/Relations.stories.d.ts.map +1 -1
  39. package/dist/types/src/components/Table/RowActionsMenu.d.ts.map +1 -1
  40. package/dist/types/src/components/Table/Table.d.ts +2 -2
  41. package/dist/types/src/components/Table/Table.d.ts.map +1 -1
  42. package/dist/types/src/components/Table/Table.stories.d.ts +88 -81
  43. package/dist/types/src/components/Table/Table.stories.d.ts.map +1 -1
  44. package/dist/types/src/components/Table/TableContent.d.ts +2 -1
  45. package/dist/types/src/components/Table/TableContent.d.ts.map +1 -1
  46. package/dist/types/src/components/Table/TableToolbar.d.ts +1 -1
  47. package/dist/types/src/components/Table/TableToolbar.d.ts.map +1 -1
  48. package/dist/types/src/components/TableCellEditor/CellValidationMessage.d.ts.map +1 -1
  49. package/dist/types/src/components/TableCellEditor/FormCellEditor.d.ts +1 -2
  50. package/dist/types/src/components/TableCellEditor/FormCellEditor.d.ts.map +1 -1
  51. package/dist/types/src/components/TableCellEditor/TableCellEditor.d.ts.map +1 -1
  52. package/dist/types/src/components/TableCellEditor/TableCellEditor.stories.d.ts +19 -19
  53. package/dist/types/src/components/TableCellEditor/TableCellEditor.stories.d.ts.map +1 -1
  54. package/dist/types/src/components/testing.d.ts.map +1 -1
  55. package/dist/types/src/hooks/useAddRow.d.ts.map +1 -1
  56. package/dist/types/src/hooks/useProjectionModel.d.ts.map +1 -1
  57. package/dist/types/src/hooks/useTableModel.d.ts.map +1 -1
  58. package/dist/types/src/index.d.ts +0 -2
  59. package/dist/types/src/index.d.ts.map +1 -1
  60. package/dist/types/src/model/modal-controller.d.ts.map +1 -1
  61. package/dist/types/src/model/selection-model.d.ts +1 -1
  62. package/dist/types/src/model/selection-model.d.ts.map +1 -1
  63. package/dist/types/src/model/table-model.d.ts +7 -7
  64. package/dist/types/src/model/table-model.d.ts.map +1 -1
  65. package/dist/types/src/model/table-presentation.d.ts.map +1 -1
  66. package/dist/types/src/playwright/TableManager.d.ts.map +1 -1
  67. package/dist/types/src/playwright/playwright.config.d.ts.map +1 -1
  68. package/dist/types/src/testing/useTestTableModel.d.ts +1 -1
  69. package/dist/types/src/testing/useTestTableModel.d.ts.map +1 -1
  70. package/dist/types/src/translations.d.ts +19 -19
  71. package/dist/types/src/translations.d.ts.map +1 -1
  72. package/dist/types/src/types/Table.d.ts +12 -6
  73. package/dist/types/src/types/Table.d.ts.map +1 -1
  74. package/dist/types/src/util/dynamic-table.d.ts +6 -6
  75. package/dist/types/src/util/dynamic-table.d.ts.map +1 -1
  76. package/dist/types/src/util/query-ast.d.ts.map +1 -1
  77. package/dist/types/src/util/schema.d.ts.map +1 -1
  78. package/dist/types/src/util/signals.d.ts.map +1 -1
  79. package/dist/types/src/util/sort.d.ts.map +1 -1
  80. package/dist/types/src/util/table-buttons.d.ts +20 -20
  81. package/dist/types/src/util/table-buttons.d.ts.map +1 -1
  82. package/dist/types/src/util/table-controls.d.ts +4 -4
  83. package/dist/types/src/util/table-controls.d.ts.map +1 -1
  84. package/dist/types/src/util/tag.d.ts.map +1 -1
  85. package/dist/types/tsconfig.tsbuildinfo +1 -1
  86. package/package.json +53 -63
  87. package/src/components/Table/ColumnActionsMenu.tsx +2 -1
  88. package/src/components/Table/ColumnSettings.tsx +2 -2
  89. package/src/components/Table/DynamicTable.stories.tsx +9 -8
  90. package/src/components/Table/DynamicTable.tsx +11 -12
  91. package/src/components/Table/Relations.stories.tsx +46 -9
  92. package/src/components/Table/RowActionsMenu.tsx +3 -2
  93. package/src/components/Table/Table.stories.tsx +86 -33
  94. package/src/components/Table/TableContent.tsx +9 -4
  95. package/src/components/Table/TableToolbar.tsx +2 -2
  96. package/src/components/TableCellEditor/CellValidationMessage.tsx +1 -2
  97. package/src/components/TableCellEditor/FormCellEditor.tsx +8 -7
  98. package/src/components/TableCellEditor/TableCellEditor.stories.tsx +7 -4
  99. package/src/components/TableCellEditor/TableCellEditor.tsx +8 -6
  100. package/src/components/testing.ts +7 -12
  101. package/src/hooks/useProjectionModel.ts +5 -6
  102. package/src/hooks/useTableModel.ts +1 -1
  103. package/src/index.ts +0 -4
  104. package/src/model/table-model.test.ts +4 -9
  105. package/src/model/table-model.ts +43 -36
  106. package/src/model/table-presentation.test.ts +4 -9
  107. package/src/model/table-presentation.ts +15 -15
  108. package/src/testing/useTestTableModel.ts +6 -7
  109. package/src/types/Table.ts +16 -15
  110. package/src/util/dynamic-table.test.ts +13 -20
  111. package/src/util/dynamic-table.ts +19 -18
  112. package/dist/lib/browser/chunk-BF54SSNL.mjs.map +0 -7
  113. package/dist/lib/browser/chunk-F7Y374KL.mjs.map +0 -7
  114. package/dist/lib/node-esm/chunk-CCJ4LOVM.mjs.map +0 -7
  115. package/dist/lib/node-esm/chunk-SIRDIPHZ.mjs.map +0 -7
@@ -16,40 +16,11 @@ import {
16
16
  useAddRow,
17
17
  useProjectionModel,
18
18
  useTableModel
19
- } from "./chunk-F7Y374KL.mjs";
19
+ } from "./chunk-4KOQTPFC.mjs";
20
20
  import {
21
21
  Table_exports
22
- } from "./chunk-BF54SSNL.mjs";
23
-
24
- // src/translations.ts
25
- var translationKey = "@dxos/react-ui-table";
26
- var translations = [
27
- {
28
- "en-US": {
29
- [translationKey]: {
30
- "object.placeholder": "New table",
31
- "create-object.label": "Create table",
32
- "table-name.placeholder": "Table name",
33
- "settings.title": "Table settings",
34
- "table-schema.label": "Type",
35
- "continue.label": "Continue",
36
- "create-stack-section.label": "Create table",
37
- "add-row.label": "Add row",
38
- "column-action-sort-descending.menu": "Sort Descending",
39
- "column-action-sort-ascending.menu": "Sort Ascending",
40
- "column-action-clear-sorting.menu": "Clear Sorting",
41
- "column-action-settings.menu": "Column Settings",
42
- "column-action-delete.menu": "Delete Column",
43
- "delete-row.label": "Delete row",
44
- "bulk-delete-row.label": "Delete selected rows",
45
- "column-deleted.label": "Column deleted",
46
- "new-column-button.label": "Create column",
47
- "create-new-object.label": "Create new object \u201C{{text}}\u201D",
48
- "save-view.label": "Save changes to view"
49
- }
50
- }
51
- }
52
- ];
22
+ } from "./chunk-62PYOJPY.mjs";
23
+ import "./chunk-J5LGTIGS.mjs";
53
24
 
54
25
  // src/components/Table/Table.tsx
55
26
  import { Atom as Atom4 } from "@effect-atom/atom-react";
@@ -61,39 +32,31 @@ import { Atom as Atom2, RegistryContext, useAtomValue as useAtomValue4 } from "@
61
32
  import * as String2 from "effect/String";
62
33
  import React7, { useCallback as useCallback4, useContext, useEffect as useEffect3, useMemo as useMemo4, useState as useState4 } from "react";
63
34
  import { log } from "@dxos/log";
35
+ import { composable, composableProps } from "@dxos/react-ui";
64
36
  import { useAttention } from "@dxos/react-ui-attention";
65
37
  import { Grid, closestCell, gridSeparatorBlockEnd, gridSeparatorInlineEnd } from "@dxos/react-ui-grid";
66
38
  import { DxEditRequest } from "@dxos/react-ui-grid";
67
- import { composable, composableProps, mx } from "@dxos/ui-theme";
39
+ import { mx } from "@dxos/ui-theme";
68
40
 
69
41
  // src/util/dynamic-table.ts
70
- import { Filter, JsonSchema, Obj, Order, Query, Ref, Type } from "@dxos/echo";
71
- import { ProjectionModel, ViewModel, createEchoChangeCallback as createEchoChangeCallback2, getSchemaFromPropertyDefinitions } from "@dxos/schema";
72
- var getBaseSchema = ({ schema, typename, properties, jsonSchema }) => {
73
- if (typename && properties) {
74
- const schema2 = getSchemaFromPropertyDefinitions(typename, properties);
75
- return {
76
- typename: schema2.typename,
77
- jsonSchema: JsonSchema.toJsonSchema(schema2)
78
- };
79
- } else if (schema) {
80
- return {
81
- typename: Type.getTypename(schema),
82
- jsonSchema: JsonSchema.toJsonSchema(schema)
83
- };
84
- } else if (typename && jsonSchema) {
85
- return {
86
- typename,
87
- jsonSchema
88
- };
89
- } else {
42
+ import { Filter, Obj, Order, Query, Ref, Type } from "@dxos/echo";
43
+ import { ProjectionModel, ViewModel, createEchoChangeCallback as createEchoChangeCallback2, getSchemaFromJsonSchema, getSchemaFromPropertyDefinitions } from "@dxos/schema";
44
+ var getBaseSchema = ({ type, typename, properties, jsonSchema }) => {
45
+ const resolved = typename && properties ? getSchemaFromPropertyDefinitions(typename, properties) : type ?? (jsonSchema ? getSchemaFromJsonSchema(jsonSchema, typename) : void 0);
46
+ if (!resolved) {
90
47
  throw new Error("invalid properties");
91
48
  }
49
+ return {
50
+ typename: Type.getTypename(resolved),
51
+ type: resolved
52
+ };
92
53
  };
93
- var makeDynamicTable = ({ registry, jsonSchema, properties }) => {
54
+ var makeDynamicTable = ({ registry, type, properties }) => {
55
+ const jsonSchema = type.jsonSchema;
94
56
  const view = ViewModel.make({
95
57
  query: Query.select(Filter.everything()),
96
58
  jsonSchema,
59
+ type,
97
60
  ...properties && {
98
61
  fields: properties.map((property) => property.name)
99
62
  }
@@ -106,7 +69,7 @@ var makeDynamicTable = ({ registry, jsonSchema, properties }) => {
106
69
  registry,
107
70
  view,
108
71
  baseSchema: jsonSchema,
109
- change: createEchoChangeCallback2(view, jsonSchema)
72
+ change: createEchoChangeCallback2(view, type)
110
73
  });
111
74
  projection.normalizeView();
112
75
  if (properties && projection.getFields()) {
@@ -122,7 +85,7 @@ var setProperties = (view, projection, table, properties) => {
122
85
  const field = projection.getFields().find((field2) => field2.path === property.name);
123
86
  if (field) {
124
87
  if (property.size !== void 0) {
125
- Obj.change(table, (table2) => {
88
+ Obj.update(table, (table2) => {
126
89
  table2.sizes[field.path] = property.size;
127
90
  });
128
91
  }
@@ -139,7 +102,7 @@ var setProperties = (view, projection, table, properties) => {
139
102
  if (property.sort) {
140
103
  const currentQuery = Query.fromAst(Obj.getSnapshot(view).query.ast);
141
104
  const newQuery = currentQuery.orderBy(Order.property(field.path, property.sort));
142
- Obj.change(view, (view2) => {
105
+ Obj.update(view, (view2) => {
143
106
  view2.query.ast = newQuery.ast;
144
107
  });
145
108
  }
@@ -244,7 +207,7 @@ var ModalController = class {
244
207
  import { EditorView } from "@codemirror/view";
245
208
  import React3, { useCallback as useCallback2, useMemo as useMemo2, useRef as useRef2, useState as useState2 } from "react";
246
209
  import { debounce } from "@dxos/async";
247
- import { Format, TypeEnum } from "@dxos/echo/internal";
210
+ import { Format, TypeEnum } from "@dxos/echo/Format";
248
211
  import { invariant as invariant2 } from "@dxos/invariant";
249
212
  import { GridCellEditor, editorKeys, parseCellIndex as parseCellIndex2, useGridContext as useGridContext3 } from "@dxos/react-ui-grid";
250
213
 
@@ -257,9 +220,8 @@ var CellValidationMessage = ({ __gridScope, validationError, variant = "error" }
257
220
  return null;
258
221
  }
259
222
  const bgClass = variant === "error" ? "bg-error-surface" : "bg-warning-surface";
260
- const textClass = variant === "error" ? "text-error-surface-text" : "text-warning-surface-text";
223
+ const textClass = variant === "error" ? "text-error-fg" : "text-warning-fg";
261
224
  return /* @__PURE__ */ React.createElement("div", {
262
- role: "none",
263
225
  className: `absolute ${bgClass} ${textClass} rounded-h-sm text-xs p-1`,
264
226
  style: {
265
227
  ...{
@@ -275,13 +237,14 @@ var CellValidationMessage = ({ __gridScope, validationError, variant = "error" }
275
237
 
276
238
  // src/components/TableCellEditor/FormCellEditor.tsx
277
239
  import React2, { useCallback, useEffect, useMemo, useRef, useState } from "react";
278
- import { Entity } from "@dxos/echo";
279
- import { Ref as Ref2, getValue } from "@dxos/echo/internal";
240
+ import { Entity, Ref as Ref2, Type as Type2 } from "@dxos/echo";
241
+ import { SchemaEx } from "@dxos/effect";
280
242
  import { invariant } from "@dxos/invariant";
281
243
  import { Popover } from "@dxos/react-ui";
282
244
  import { Form } from "@dxos/react-ui-form";
283
245
  import { parseCellIndex, useGridContext as useGridContext2 } from "@dxos/react-ui-grid";
284
246
  import { getDeep, isTruthy, setDeep } from "@dxos/util";
247
+ import { translationKey } from "#translations";
285
248
  var __dxlog_file = "/__w/dxos/dxos/packages/ui/react-ui-table/src/components/TableCellEditor/FormCellEditor.tsx";
286
249
  var createOptionLabel = [
287
250
  "create-new-object.label",
@@ -308,7 +271,7 @@ var FormCellEditor = ({ __gridScope, schema, model, fieldProjection, onSave, onC
308
271
  if (!schema) {
309
272
  return void 0;
310
273
  }
311
- return narrowSchema(schema, [
274
+ return narrowSchema(Type2.getSchema(schema), [
312
275
  fieldProjection.field.path
313
276
  ]);
314
277
  }, [
@@ -320,27 +283,11 @@ var FormCellEditor = ({ __gridScope, schema, model, fieldProjection, onSave, onC
320
283
  const cell = parseCellIndex(contextEditing.index);
321
284
  if (model.isDraftCell(cell)) {
322
285
  const draftRow = model.getDraftRows()[cell.row];
323
- invariant(draftRow, void 0, {
324
- F: __dxlog_file,
325
- L: 74,
326
- S: void 0,
327
- A: [
328
- "draftRow",
329
- ""
330
- ]
331
- });
286
+ invariant(draftRow, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 52, S: void 0, A: ["draftRow", ""] });
332
287
  return draftRow.data;
333
288
  } else {
334
289
  const row = model.getRowAt(cell.row);
335
- invariant(row, void 0, {
336
- F: __dxlog_file,
337
- L: 78,
338
- S: void 0,
339
- A: [
340
- "row",
341
- ""
342
- ]
343
- });
290
+ invariant(row, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 56, S: void 0, A: ["row", ""] });
344
291
  return row;
345
292
  }
346
293
  }
@@ -424,8 +371,8 @@ var FormCellEditor = ({ __gridScope, schema, model, fieldProjection, onSave, onC
424
371
  ]);
425
372
  const getOptions = useCallback((results) => results.map((obj) => {
426
373
  return {
427
- id: Entity.getDXN(obj).toString(),
428
- label: getValue(obj, fieldProjection.field.referencePath) || obj.id.toString()
374
+ id: Entity.getURI(obj),
375
+ label: SchemaEx.getValue(obj, fieldProjection.field.referencePath) || obj.id.toString()
429
376
  };
430
377
  }).filter(isTruthy), [
431
378
  fieldProjection
@@ -440,7 +387,7 @@ var FormCellEditor = ({ __gridScope, schema, model, fieldProjection, onSave, onC
440
387
  virtualRef: anchorRef
441
388
  }), /* @__PURE__ */ React2.createElement(Popover.Portal, null, /* @__PURE__ */ React2.createElement(Popover.Content, {
442
389
  tabIndex: -1,
443
- classNames: "dx-card-popover-width dx-density-fine"
390
+ classNames: "dx-card-popover-width dx-density-md"
444
391
  }, /* @__PURE__ */ React2.createElement(Popover.Arrow, null), /* @__PURE__ */ React2.createElement(Popover.Viewport, null, /* @__PURE__ */ React2.createElement(Form.Root, {
445
392
  ...formProps,
446
393
  autoFocus: true,
@@ -469,15 +416,7 @@ var TableValueEditor = ({ __gridScope, schema, model, modals, onFocus, onSave, o
469
416
  const { col } = parseCellIndex2(editing.index);
470
417
  const field = model.projection.getFields()[col];
471
418
  const fieldProjection2 = model.projection.getFieldProjection(field.id);
472
- invariant2(fieldProjection2, void 0, {
473
- F: __dxlog_file2,
474
- L: 66,
475
- S: void 0,
476
- A: [
477
- "fieldProjection",
478
- ""
479
- ]
480
- });
419
+ invariant2(fieldProjection2, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 21, S: void 0, A: ["fieldProjection", ""] });
481
420
  return fieldProjection2;
482
421
  }, [
483
422
  model,
@@ -502,6 +441,11 @@ var TableValueEditor = ({ __gridScope, schema, model, modals, onFocus, onSave, o
502
441
  __gridScope
503
442
  });
504
443
  };
444
+ var cellEditorSlots = {
445
+ content: {
446
+ className: "!py-(--dx-grid-cell-editor-padding-block)"
447
+ }
448
+ };
505
449
  var TableCellEditor = ({ __gridScope, model, modals, onFocus, onSave }) => {
506
450
  const { editing, setEditing } = useGridContext3("TableCellEditor", __gridScope);
507
451
  const suppressNextBlur = useRef2(false);
@@ -514,15 +458,7 @@ var TableCellEditor = ({ __gridScope, model, modals, onFocus, onSave }) => {
514
458
  const { col } = parseCellIndex2(editing.index);
515
459
  const field = model.projection.getFields()[col];
516
460
  const fieldProjection2 = model.projection.getFieldProjection(field.id);
517
- invariant2(fieldProjection2, void 0, {
518
- F: __dxlog_file2,
519
- L: 113,
520
- S: void 0,
521
- A: [
522
- "fieldProjection",
523
- ""
524
- ]
525
- });
461
+ invariant2(fieldProjection2, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file2, L: 64, S: void 0, A: ["fieldProjection", ""] });
526
462
  return fieldProjection2;
527
463
  }, [
528
464
  model,
@@ -656,11 +592,7 @@ var TableCellEditor = ({ __gridScope, model, modals, onFocus, onSave }) => {
656
592
  __gridScope
657
593
  }), /* @__PURE__ */ React3.createElement(GridCellEditor, {
658
594
  extensions,
659
- slots: {
660
- content: {
661
- className: "!py-(--dx-grid-cell-editor-padding-block)"
662
- }
663
- },
595
+ slots: cellEditorSlots,
664
596
  getCellContent,
665
597
  onBlur: handleBlur
666
598
  }));
@@ -694,8 +626,9 @@ var determineNavigationDelta = ({ key, shift }) => {
694
626
  import { useAtomValue } from "@effect-atom/atom-react";
695
627
  import React4 from "react";
696
628
  import { DropdownMenu, useTranslation } from "@dxos/react-ui";
629
+ import { translationKey as translationKey2 } from "#translations";
697
630
  var ColumnActionsMenu = ({ model, modals }) => {
698
- const { t } = useTranslation(translationKey);
631
+ const { t } = useTranslation(translationKey2);
699
632
  const state = useAtomValue(modals.state);
700
633
  if (state?.type !== "column") {
701
634
  return null;
@@ -797,8 +730,9 @@ var ColumnSettings = ({ registry, model, modals, onNewColumn }) => {
797
730
  import { useAtomValue as useAtomValue3 } from "@effect-atom/atom-react";
798
731
  import React6 from "react";
799
732
  import { DropdownMenu as DropdownMenu2, toLocalizedString, useTranslation as useTranslation2 } from "@dxos/react-ui";
733
+ import { translationKey as translationKey3 } from "#translations";
800
734
  var RowActionsMenu = ({ model, modals }) => {
801
- const { t } = useTranslation2(translationKey);
735
+ const { t } = useTranslation2(translationKey3);
802
736
  const hasSelection = model.selection.hasSelection;
803
737
  const state = useAtomValue3(modals.state);
804
738
  if (state?.type !== "row") {
@@ -820,7 +754,7 @@ var RowActionsMenu = ({ model, modals }) => {
820
754
  }, toLocalizedString(action.label, t)))), /* @__PURE__ */ React6.createElement(DropdownMenu2.Separator, null)), model.features.dataEditable !== false && /* @__PURE__ */ React6.createElement(DropdownMenu2.Item, {
821
755
  "data-testid": "row-menu-delete",
822
756
  onClick: () => model.deleteRow(state.rowIndex)
823
- }, t(hasSelection ? "bulk delete row label" : "delete row label"))), /* @__PURE__ */ React6.createElement(DropdownMenu2.Arrow, null)));
757
+ }, t(hasSelection ? "bulk-delete-row.label" : "delete-row.label"))), /* @__PURE__ */ React6.createElement(DropdownMenu2.Arrow, null)));
824
758
  };
825
759
 
826
760
  // src/components/Table/TableContent.tsx
@@ -843,10 +777,10 @@ var emptyColumnMeta = Atom2.make({
843
777
  var emptyRowsAtom = Atom2.make([]);
844
778
  var emptyCellUpdateAtom = Atom2.make(0);
845
779
  var TABLE_CONTENT_NAME = "Table.Content";
846
- var TableContent = composable(({ schema, model, presentation, ignoreAttention, onCreate, onRowClick, testId, ...props }, forwardedRef) => {
780
+ var TableContent = composable(({ schema, model, presentation, ignoreAttention, attendableId, onCreate, onRowClick, testId, ...props }, forwardedRef) => {
847
781
  const registry = useContext(RegistryContext);
848
782
  const [dxGrid, setDxGrid] = useState4(null);
849
- const { hasAttention } = useAttention(model?.id ?? "table");
783
+ const { hasAttention } = useAttention(attendableId ?? model?.id ?? "table");
850
784
  const modals = useMemo4(() => new ModalController(registry), [
851
785
  registry
852
786
  ]);
@@ -1051,12 +985,7 @@ var TableContent = composable(({ schema, model, presentation, ignoreAttention, o
1051
985
  void navigator.clipboard.writeText(textContent);
1052
986
  event.preventDefault();
1053
987
  } catch (error) {
1054
- log.catch(error, void 0, {
1055
- F: __dxlog_file3,
1056
- L: 278,
1057
- S: void 0,
1058
- C: (f, a) => f(...a)
1059
- });
988
+ log.catch(error, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file3, L: 263, S: void 0 });
1060
989
  }
1061
990
  break;
1062
991
  }
@@ -1154,7 +1083,6 @@ var TableContent = composable(({ schema, model, presentation, ignoreAttention, o
1154
1083
  ]);
1155
1084
  if (!model || !modals) {
1156
1085
  return /* @__PURE__ */ React7.createElement("span", {
1157
- role: "none",
1158
1086
  className: "dx-attention-surface"
1159
1087
  });
1160
1088
  }
@@ -1206,8 +1134,9 @@ TableContent.displayName = TABLE_CONTENT_NAME;
1206
1134
  // src/components/Table/TableToolbar.tsx
1207
1135
  import { Atom as Atom3, RegistryContext as RegistryContext2 } from "@effect-atom/atom-react";
1208
1136
  import React8, { useContext as useContext2, useEffect as useEffect4, useMemo as useMemo5 } from "react";
1137
+ import { composable as composable2, composableProps as composableProps2 } from "@dxos/react-ui";
1209
1138
  import { Menu, createGapSeparator, createMenuAction, useMenuActions } from "@dxos/react-ui-menu";
1210
- import { composable as composable2, composableProps as composableProps2 } from "@dxos/ui-theme";
1139
+ import { translationKey as translationKey4 } from "#translations";
1211
1140
  var createTableToolbarActions = ({ stateAtom, onAdd, onSave, customActions }) => Atom3.make((get) => {
1212
1141
  const nodes = [];
1213
1142
  if (onAdd) {
@@ -1217,7 +1146,7 @@ var createTableToolbarActions = ({ stateAtom, onAdd, onSave, customActions }) =>
1217
1146
  label: [
1218
1147
  "add-row.label",
1219
1148
  {
1220
- ns: translationKey
1149
+ ns: translationKey4
1221
1150
  }
1222
1151
  ],
1223
1152
  testId: "table.toolbar.add-row"
@@ -1232,7 +1161,7 @@ var createTableToolbarActions = ({ stateAtom, onAdd, onSave, customActions }) =>
1232
1161
  label: [
1233
1162
  "save-view.label",
1234
1163
  {
1235
- ns: translationKey
1164
+ ns: translationKey4
1236
1165
  }
1237
1166
  ],
1238
1167
  testId: "table.toolbar.save-view",
@@ -1322,29 +1251,29 @@ import { RegistryContext as RegistryContext3 } from "@effect-atom/atom-react";
1322
1251
  import React10, { useCallback as useCallback5, useContext as useContext3, useEffect as useEffect5, useMemo as useMemo6, useRef as useRef4, useState as useState5 } from "react";
1323
1252
  import { useDefaultValue } from "@dxos/react-ui";
1324
1253
  import { mx as mx2 } from "@dxos/ui-theme";
1325
- var DynamicTable = ({ classNames, schema, name = "com.example.dynamic-table", rows, properties, jsonSchema: jsonSchemaProp, rowActions, onRowClick, onRowAction, ...props }) => {
1254
+ var DynamicTable = ({ classNames, type: typeProp, name = "com.example.dynamicTable", rows, properties, jsonSchema: jsonSchemaProp, rowActions, onRowClick, onRowAction, ...props }) => {
1326
1255
  const registry = useContext3(RegistryContext3);
1327
1256
  const [dynamicTable, setDynamicTable] = useState5();
1328
- const { jsonSchema } = useMemo6(() => getBaseSchema({
1257
+ const { type } = useMemo6(() => getBaseSchema({
1329
1258
  typename: name,
1330
1259
  properties,
1331
1260
  jsonSchema: jsonSchemaProp,
1332
- schema
1261
+ type: typeProp
1333
1262
  }), [
1334
1263
  name,
1335
1264
  properties,
1336
1265
  jsonSchemaProp,
1337
- schema
1266
+ typeProp
1338
1267
  ]);
1339
1268
  useEffect5(() => {
1340
1269
  setDynamicTable(makeDynamicTable({
1341
1270
  registry,
1342
- jsonSchema,
1271
+ type,
1343
1272
  properties
1344
1273
  }));
1345
1274
  }, [
1346
1275
  registry,
1347
- jsonSchema,
1276
+ type,
1348
1277
  properties
1349
1278
  ]);
1350
1279
  const tableRef = useRef4(null);
@@ -1379,10 +1308,8 @@ var DynamicTable = ({ classNames, schema, name = "com.example.dynamic-table", ro
1379
1308
  model
1380
1309
  ]);
1381
1310
  return /* @__PURE__ */ React10.createElement("div", {
1382
- role: "none",
1383
1311
  className: mx2("dx-expander grid", classNames)
1384
1312
  }, /* @__PURE__ */ React10.createElement("div", {
1385
- role: "none",
1386
1313
  className: "grid min-h-0 overflow-hidden"
1387
1314
  }, /* @__PURE__ */ React10.createElement(Table.Root, {
1388
1315
  ref: tableRef
@@ -1415,7 +1342,6 @@ export {
1415
1342
  tableButtons,
1416
1343
  tableControls,
1417
1344
  touch,
1418
- translations,
1419
1345
  useAddRow,
1420
1346
  useProjectionModel,
1421
1347
  useTableContext,