@dxos/react-ui-table 0.9.1-main.c7dcc2e112 → 0.9.1-staging.ee54ba693a

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 (68) hide show
  1. package/dist/lib/browser/{chunk-5V5FV3GS.mjs → chunk-K4J2CKTZ.mjs} +66 -14
  2. package/dist/lib/browser/chunk-K4J2CKTZ.mjs.map +7 -0
  3. package/dist/lib/browser/{chunk-62PYOJPY.mjs → chunk-VV3P3ADH.mjs} +5 -5
  4. package/dist/lib/browser/chunk-VV3P3ADH.mjs.map +7 -0
  5. package/dist/lib/browser/index.mjs +76 -10
  6. package/dist/lib/browser/index.mjs.map +3 -3
  7. package/dist/lib/browser/meta.json +1 -1
  8. package/dist/lib/browser/testing/index.mjs +2 -2
  9. package/dist/lib/browser/translations.mjs +5 -2
  10. package/dist/lib/browser/translations.mjs.map +2 -2
  11. package/dist/lib/browser/types/index.mjs +1 -1
  12. package/dist/lib/node-esm/{chunk-5H6GHWNR.mjs → chunk-E6V274ZW.mjs} +66 -14
  13. package/dist/lib/node-esm/chunk-E6V274ZW.mjs.map +7 -0
  14. package/dist/lib/node-esm/{chunk-7LMOZUTS.mjs → chunk-RPEWNOZZ.mjs} +5 -5
  15. package/dist/lib/node-esm/chunk-RPEWNOZZ.mjs.map +7 -0
  16. package/dist/lib/node-esm/index.mjs +76 -10
  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/testing/index.mjs +2 -2
  20. package/dist/lib/node-esm/translations.mjs +5 -2
  21. package/dist/lib/node-esm/translations.mjs.map +2 -2
  22. package/dist/lib/node-esm/types/index.mjs +1 -1
  23. package/dist/types/src/components/Table/DynamicTable.stories.d.ts +4 -1
  24. package/dist/types/src/components/Table/DynamicTable.stories.d.ts.map +1 -1
  25. package/dist/types/src/components/Table/Relations.stories.d.ts +4 -1
  26. package/dist/types/src/components/Table/Relations.stories.d.ts.map +1 -1
  27. package/dist/types/src/components/Table/Table.d.ts +1 -0
  28. package/dist/types/src/components/Table/Table.d.ts.map +1 -1
  29. package/dist/types/src/components/Table/Table.stories.d.ts +6 -3
  30. package/dist/types/src/components/Table/Table.stories.d.ts.map +1 -1
  31. package/dist/types/src/components/Table/TableToolbar.d.ts +3 -1
  32. package/dist/types/src/components/Table/TableToolbar.d.ts.map +1 -1
  33. package/dist/types/src/components/TableCellEditor/TableCellEditor.stories.d.ts +7 -4
  34. package/dist/types/src/components/TableCellEditor/TableCellEditor.stories.d.ts.map +1 -1
  35. package/dist/types/src/components/testing.d.ts +2 -3
  36. package/dist/types/src/components/testing.d.ts.map +1 -1
  37. package/dist/types/src/hooks/useTableModel.d.ts.map +1 -1
  38. package/dist/types/src/model/index.d.ts +1 -0
  39. package/dist/types/src/model/index.d.ts.map +1 -1
  40. package/dist/types/src/model/table-model.d.ts +15 -8
  41. package/dist/types/src/model/table-model.d.ts.map +1 -1
  42. package/dist/types/src/model/table-presentation.d.ts.map +1 -1
  43. package/dist/types/src/model/table-view-state.d.ts +19 -0
  44. package/dist/types/src/model/table-view-state.d.ts.map +1 -0
  45. package/dist/types/src/translations.d.ts +4 -1
  46. package/dist/types/src/translations.d.ts.map +1 -1
  47. package/dist/types/src/types/Table.d.ts +3 -11
  48. package/dist/types/src/types/Table.d.ts.map +1 -1
  49. package/dist/types/tsconfig.tsbuildinfo +1 -1
  50. package/package.json +43 -44
  51. package/src/components/Table/Table.stories.tsx +3 -3
  52. package/src/components/Table/Table.tsx +1 -0
  53. package/src/components/Table/TableToolbar.tsx +38 -5
  54. package/src/components/TableCellEditor/TableCellEditor.stories.tsx +2 -2
  55. package/src/components/testing.ts +8 -6
  56. package/src/hooks/useTableModel.ts +4 -2
  57. package/src/model/index.ts +1 -0
  58. package/src/model/table-model.test.ts +93 -5
  59. package/src/model/table-model.ts +36 -20
  60. package/src/model/table-presentation.test.ts +6 -4
  61. package/src/model/table-presentation.ts +30 -0
  62. package/src/model/table-view-state.ts +30 -0
  63. package/src/translations.ts +4 -1
  64. package/src/types/Table.ts +17 -19
  65. package/dist/lib/browser/chunk-5V5FV3GS.mjs.map +0 -7
  66. package/dist/lib/browser/chunk-62PYOJPY.mjs.map +0 -7
  67. package/dist/lib/node-esm/chunk-5H6GHWNR.mjs.map +0 -7
  68. package/dist/lib/node-esm/chunk-7LMOZUTS.mjs.map +0 -7
@@ -1 +1 @@
1
- {"inputs":{"src/types/Table.ts":{"bytes":8806,"imports":[{"path":"effect/Match","kind":"import-statement","external":true},{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"effect/SchemaAST","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo/Annotation","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true}],"format":"esm"},"src/types/index.ts":{"bytes":422,"imports":[{"path":"src/types/Table.ts","kind":"import-statement","original":"./Table"}],"format":"esm"},"src/util/dynamic-table.ts":{"bytes":11737,"imports":[{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"src/types/index.ts","kind":"import-statement","original":"../types"}],"format":"esm"},"src/util/query-ast.ts":{"bytes":1827,"imports":[],"format":"esm"},"src/util/signals.ts":{"bytes":782,"imports":[],"format":"esm"},"src/util/sort.ts":{"bytes":8681,"imports":[{"path":"@dxos/echo","kind":"import-statement","external":true}],"format":"esm"},"src/util/table-buttons.ts":{"bytes":14443,"imports":[],"format":"esm"},"src/util/table-controls.ts":{"bytes":9056,"imports":[{"path":"@dxos/lit-grid","kind":"import-statement","external":true}],"format":"esm"},"src/util/schema.ts":{"bytes":3972,"imports":[{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"effect/SchemaAST","kind":"import-statement","external":true}],"format":"esm"},"src/util/index.ts":{"bytes":934,"imports":[{"path":"src/util/dynamic-table.ts","kind":"import-statement","original":"./dynamic-table"},{"path":"src/util/query-ast.ts","kind":"import-statement","original":"./query-ast"},{"path":"src/util/signals.ts","kind":"import-statement","original":"./signals"},{"path":"src/util/sort.ts","kind":"import-statement","original":"./sort"},{"path":"src/util/table-buttons.ts","kind":"import-statement","original":"./table-buttons"},{"path":"src/util/table-controls.ts","kind":"import-statement","original":"./table-controls"},{"path":"src/util/schema.ts","kind":"import-statement","original":"./schema"}],"format":"esm"},"src/util/tag.ts":{"bytes":2762,"imports":[],"format":"esm"},"src/model/selection-model.ts":{"bytes":15505,"imports":[{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true}],"format":"esm"},"src/model/table-model.ts":{"bytes":102702,"imports":[{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo/JsonSchema","kind":"import-statement","external":true},{"path":"@dxos/echo/Obj","kind":"import-statement","external":true},{"path":"@dxos/effect","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/react-ui-form","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"src/util/index.ts","kind":"import-statement","original":"../util"},{"path":"src/util/sort.ts","kind":"import-statement","original":"../util/sort"},{"path":"src/util/tag.ts","kind":"import-statement","original":"../util/tag"},{"path":"src/model/selection-model.ts","kind":"import-statement","original":"./selection-model"}],"format":"esm"},"src/model/modal-controller.ts":{"bytes":7634,"imports":[{"path":"@effect-atom/atom-react","kind":"import-statement","external":true}],"format":"esm"},"src/model/table-presentation.ts":{"bytes":57199,"imports":[{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"effect/Predicate","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo/Format","kind":"import-statement","external":true},{"path":"@dxos/effect","kind":"import-statement","external":true},{"path":"@dxos/react-ui-form","kind":"import-statement","external":true},{"path":"@dxos/react-ui-grid","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true},{"path":"src/util/index.ts","kind":"import-statement","original":"../util"}],"format":"esm"},"src/model/index.ts":{"bytes":685,"imports":[{"path":"src/model/table-model.ts","kind":"import-statement","original":"./table-model"},{"path":"src/model/modal-controller.ts","kind":"import-statement","original":"./modal-controller"},{"path":"src/model/table-presentation.ts","kind":"import-statement","original":"./table-presentation"}],"format":"esm"},"src/components/TableCellEditor/CellValidationMessage.tsx":{"bytes":3908,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui-grid","kind":"import-statement","external":true}],"format":"esm"},"src/components/TableCellEditor/FormCellEditor.tsx":{"bytes":22626,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/effect","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-form","kind":"import-statement","external":true},{"path":"@dxos/react-ui-grid","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"#translations","kind":"import-statement","external":true},{"path":"src/util/index.ts","kind":"import-statement","original":"../../util"}],"format":"esm"},"src/components/TableCellEditor/TableCellEditor.tsx":{"bytes":27211,"imports":[{"path":"@codemirror/view","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/echo/Format","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/react-ui-grid","kind":"import-statement","external":true},{"path":"src/components/TableCellEditor/CellValidationMessage.tsx","kind":"import-statement","original":"./CellValidationMessage"},{"path":"src/components/TableCellEditor/FormCellEditor.tsx","kind":"import-statement","original":"./FormCellEditor"}],"format":"esm"},"src/components/TableCellEditor/index.ts":{"bytes":471,"imports":[{"path":"src/components/TableCellEditor/TableCellEditor.tsx","kind":"import-statement","original":"./TableCellEditor"}],"format":"esm"},"src/components/Table/ColumnActionsMenu.tsx":{"bytes":8451,"imports":[{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"#translations","kind":"import-statement","external":true}],"format":"esm"},"src/components/Table/ColumnSettings.tsx":{"bytes":8496,"imports":[{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-form","kind":"import-statement","external":true}],"format":"esm"},"src/components/Table/RowActionsMenu.tsx":{"bytes":6866,"imports":[{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"#translations","kind":"import-statement","external":true}],"format":"esm"},"src/components/Table/TableContent.tsx":{"bytes":49687,"imports":[{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"effect/String","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-attention","kind":"import-statement","external":true},{"path":"@dxos/react-ui-grid","kind":"import-statement","external":true},{"path":"@dxos/react-ui-grid","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true},{"path":"src/model/index.ts","kind":"import-statement","original":"../../model"},{"path":"src/util/index.ts","kind":"import-statement","original":"../../util"},{"path":"src/components/TableCellEditor/index.ts","kind":"import-statement","original":"../TableCellEditor"},{"path":"src/components/Table/ColumnActionsMenu.tsx","kind":"import-statement","original":"./ColumnActionsMenu"},{"path":"src/components/Table/ColumnSettings.tsx","kind":"import-statement","original":"./ColumnSettings"},{"path":"src/components/Table/RowActionsMenu.tsx","kind":"import-statement","original":"./RowActionsMenu"},{"path":"src/components/Table/Table.tsx","kind":"import-statement","original":"./Table"}],"format":"esm"},"src/components/Table/TableToolbar.tsx":{"bytes":10827,"imports":[{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-menu","kind":"import-statement","external":true},{"path":"#translations","kind":"import-statement","external":true}],"format":"esm"},"src/components/Table/Table.tsx":{"bytes":5977,"imports":[{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"src/components/Table/TableContent.tsx","kind":"import-statement","original":"./TableContent"},{"path":"src/components/Table/TableToolbar.tsx","kind":"import-statement","original":"./TableToolbar"}],"format":"esm"},"src/hooks/useAddRow.ts":{"bytes":2809,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true}],"format":"esm"},"src/hooks/useProjectionModel.ts":{"bytes":4251,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true}],"format":"esm"},"src/hooks/useTableModel.ts":{"bytes":8813,"imports":[{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui-attention","kind":"import-statement","external":true},{"path":"src/model/index.ts","kind":"import-statement","original":"../model"}],"format":"esm"},"src/hooks/index.ts":{"bytes":596,"imports":[{"path":"src/hooks/useAddRow.ts","kind":"import-statement","original":"./useAddRow"},{"path":"src/hooks/useProjectionModel.ts","kind":"import-statement","original":"./useProjectionModel"},{"path":"src/hooks/useTableModel.ts","kind":"import-statement","original":"./useTableModel"}],"format":"esm"},"src/components/Table/DynamicTable.tsx":{"bytes":11080,"imports":[{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true},{"path":"src/hooks/index.ts","kind":"import-statement","original":"../../hooks"},{"path":"src/model/index.ts","kind":"import-statement","original":"../../model"},{"path":"src/util/index.ts","kind":"import-statement","original":"../../util"},{"path":"src/components/Table/Table.tsx","kind":"import-statement","original":"./Table"}],"format":"esm"},"src/components/Table/index.ts":{"bytes":469,"imports":[{"path":"src/components/Table/Table.tsx","kind":"import-statement","original":"./Table"},{"path":"src/components/Table/DynamicTable.tsx","kind":"import-statement","original":"./DynamicTable"}],"format":"esm"},"src/components/index.ts":{"bytes":369,"imports":[{"path":"src/components/Table/index.ts","kind":"import-statement","original":"./Table"}],"format":"esm"},"src/index.ts":{"bytes":620,"imports":[{"path":"src/components/index.ts","kind":"import-statement","original":"./components"},{"path":"src/hooks/index.ts","kind":"import-statement","original":"./hooks"},{"path":"src/model/index.ts","kind":"import-statement","original":"./model"},{"path":"src/util/index.ts","kind":"import-statement","original":"./util"}],"format":"esm"},"src/testing/useTestTableModel.ts":{"bytes":13059,"imports":[{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/random","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-client/testing","kind":"import-statement","external":true},{"path":"@dxos/react-ui-search","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"src/hooks/index.ts","kind":"import-statement","original":"../hooks"},{"path":"src/model/index.ts","kind":"import-statement","original":"../model"},{"path":"src/types/index.ts","kind":"import-statement","original":"../types"}],"format":"esm"},"src/testing/index.ts":{"bytes":401,"imports":[{"path":"src/testing/useTestTableModel.ts","kind":"import-statement","original":"./useTestTableModel"}],"format":"esm"},"src/translations.ts":{"bytes":3793,"imports":[],"format":"esm"}},"outputs":{"dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":89592},"dist/lib/browser/index.mjs":{"imports":[{"path":"dist/lib/browser/chunk-5V5FV3GS.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-62PYOJPY.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-J5LGTIGS.mjs","kind":"import-statement"},{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"effect/String","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-attention","kind":"import-statement","external":true},{"path":"@dxos/react-ui-grid","kind":"import-statement","external":true},{"path":"@dxos/react-ui-grid","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"effect/SchemaAST","kind":"import-statement","external":true},{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"@codemirror/view","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/echo/Format","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/react-ui-grid","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui-grid","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/effect","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-form","kind":"import-statement","external":true},{"path":"@dxos/react-ui-grid","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"#translations","kind":"import-statement","external":true},{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"#translations","kind":"import-statement","external":true},{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-form","kind":"import-statement","external":true},{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"#translations","kind":"import-statement","external":true},{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-menu","kind":"import-statement","external":true},{"path":"#translations","kind":"import-statement","external":true},{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true}],"exports":["BUTTON_IDENTIFIERS","CONTROL_IDENTIFIERS","CheckboxStory","DynamicTable","ModalController","SwitchStory","Table","TableModel","TablePresentation","cellClassesForRowSelection","compareValues","createDirectChangeCallback","createEchoChangeCallback","extractOrder","getBaseSchema","getSortValue","makeDynamicTable","narrowSchema","tableButtons","tableControls","touch","useAddRow","useProjectionModel","useTableContext","useTableModel"],"entryPoint":"src/index.ts","inputs":{"src/components/Table/Table.tsx":{"bytesInOutput":914},"src/components/Table/TableContent.tsx":{"bytesInOutput":11391},"src/util/dynamic-table.ts":{"bytesInOutput":2332},"src/util/signals.ts":{"bytesInOutput":30},"src/util/schema.ts":{"bytesInOutput":498},"src/model/modal-controller.ts":{"bytesInOutput":1549},"src/components/TableCellEditor/TableCellEditor.tsx":{"bytesInOutput":6729},"src/components/TableCellEditor/CellValidationMessage.tsx":{"bytesInOutput":893},"src/components/TableCellEditor/FormCellEditor.tsx":{"bytesInOutput":5539},"src/components/Table/ColumnActionsMenu.tsx":{"bytesInOutput":2240},"src/components/Table/ColumnSettings.tsx":{"bytesInOutput":2240},"src/components/Table/RowActionsMenu.tsx":{"bytesInOutput":1773},"src/components/Table/TableToolbar.tsx":{"bytesInOutput":2511},"src/components/Table/DynamicTable.tsx":{"bytesInOutput":2208},"src/index.ts":{"bytesInOutput":0}},"bytes":42521},"dist/lib/browser/testing/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":7258},"dist/lib/browser/testing/index.mjs":{"imports":[{"path":"dist/lib/browser/chunk-5V5FV3GS.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-62PYOJPY.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-J5LGTIGS.mjs","kind":"import-statement"},{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/random","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-client/testing","kind":"import-statement","external":true},{"path":"@dxos/react-ui-search","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true}],"exports":["useTestTableModel"],"entryPoint":"src/testing/index.ts","inputs":{"src/testing/useTestTableModel.ts":{"bytesInOutput":2786},"src/testing/index.ts":{"bytesInOutput":0}},"bytes":3092},"dist/lib/browser/chunk-5V5FV3GS.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":110317},"dist/lib/browser/chunk-5V5FV3GS.mjs":{"imports":[{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/lit-grid","kind":"import-statement","external":true},{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo/JsonSchema","kind":"import-statement","external":true},{"path":"@dxos/echo/Obj","kind":"import-statement","external":true},{"path":"@dxos/effect","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/react-ui-form","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"effect/Predicate","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo/Format","kind":"import-statement","external":true},{"path":"@dxos/effect","kind":"import-statement","external":true},{"path":"@dxos/react-ui-form","kind":"import-statement","external":true},{"path":"@dxos/react-ui-grid","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui-attention","kind":"import-statement","external":true}],"exports":["BUTTON_IDENTIFIERS","CONTROL_IDENTIFIERS","CheckboxStory","SwitchStory","TableModel","TablePresentation","cellClassesForRowSelection","compareValues","createDirectChangeCallback","createEchoChangeCallback","extractOrder","getSortValue","tableButtons","tableControls","useAddRow","useProjectionModel","useTableModel"],"inputs":{"src/util/query-ast.ts":{"bytesInOutput":282},"src/util/sort.ts":{"bytesInOutput":1644},"src/util/table-buttons.ts":{"bytesInOutput":3497},"src/util/table-controls.ts":{"bytesInOutput":2023},"src/model/table-model.ts":{"bytesInOutput":23758},"src/util/tag.ts":{"bytesInOutput":334},"src/model/selection-model.ts":{"bytesInOutput":3552},"src/model/table-presentation.ts":{"bytesInOutput":14006},"src/hooks/useAddRow.ts":{"bytesInOutput":374},"src/hooks/useProjectionModel.ts":{"bytesInOutput":874},"src/hooks/useTableModel.ts":{"bytesInOutput":1853}},"bytes":52935},"dist/lib/browser/translations.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1772},"dist/lib/browser/translations.mjs":{"imports":[{"path":"dist/lib/browser/chunk-J5LGTIGS.mjs","kind":"import-statement"}],"exports":["translationKey","translations"],"entryPoint":"src/translations.ts","inputs":{"src/translations.ts":{"bytesInOutput":1109}},"bytes":1251},"dist/lib/browser/types/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"dist/lib/browser/types/index.mjs":{"imports":[{"path":"dist/lib/browser/chunk-62PYOJPY.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-J5LGTIGS.mjs","kind":"import-statement"}],"exports":["Table"],"entryPoint":"src/types/index.ts","inputs":{},"bytes":161},"dist/lib/browser/chunk-62PYOJPY.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":4579},"dist/lib/browser/chunk-62PYOJPY.mjs":{"imports":[{"path":"dist/lib/browser/chunk-J5LGTIGS.mjs","kind":"import-statement"},{"path":"effect/Match","kind":"import-statement","external":true},{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"effect/SchemaAST","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo/Annotation","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true}],"exports":["Table_exports"],"inputs":{"src/types/Table.ts":{"bytesInOutput":1773},"src/types/index.ts":{"bytesInOutput":0}},"bytes":1920},"dist/lib/browser/chunk-J5LGTIGS.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"dist/lib/browser/chunk-J5LGTIGS.mjs":{"imports":[],"exports":["__export"],"inputs":{},"bytes":235}}}
1
+ {"inputs":{"src/types/Table.ts":{"bytes":8724,"imports":[{"path":"effect/Match","kind":"import-statement","external":true},{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"effect/SchemaAST","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo/Annotation","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true}],"format":"esm"},"src/types/index.ts":{"bytes":422,"imports":[{"path":"src/types/Table.ts","kind":"import-statement","original":"./Table"}],"format":"esm"},"src/util/dynamic-table.ts":{"bytes":11737,"imports":[{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"src/types/index.ts","kind":"import-statement","original":"../types"}],"format":"esm"},"src/util/query-ast.ts":{"bytes":1827,"imports":[],"format":"esm"},"src/util/signals.ts":{"bytes":782,"imports":[],"format":"esm"},"src/util/sort.ts":{"bytes":8681,"imports":[{"path":"@dxos/echo","kind":"import-statement","external":true}],"format":"esm"},"src/util/table-buttons.ts":{"bytes":14443,"imports":[],"format":"esm"},"src/util/table-controls.ts":{"bytes":9056,"imports":[{"path":"@dxos/lit-grid","kind":"import-statement","external":true}],"format":"esm"},"src/util/schema.ts":{"bytes":3972,"imports":[{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"effect/SchemaAST","kind":"import-statement","external":true}],"format":"esm"},"src/util/index.ts":{"bytes":934,"imports":[{"path":"src/util/dynamic-table.ts","kind":"import-statement","original":"./dynamic-table"},{"path":"src/util/query-ast.ts","kind":"import-statement","original":"./query-ast"},{"path":"src/util/signals.ts","kind":"import-statement","original":"./signals"},{"path":"src/util/sort.ts","kind":"import-statement","original":"./sort"},{"path":"src/util/table-buttons.ts","kind":"import-statement","original":"./table-buttons"},{"path":"src/util/table-controls.ts","kind":"import-statement","original":"./table-controls"},{"path":"src/util/schema.ts","kind":"import-statement","original":"./schema"}],"format":"esm"},"src/util/tag.ts":{"bytes":2762,"imports":[],"format":"esm"},"src/model/selection-model.ts":{"bytes":15505,"imports":[{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true}],"format":"esm"},"src/model/table-view-state.ts":{"bytes":2836,"imports":[{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui-attention","kind":"import-statement","external":true}],"format":"esm"},"src/model/table-model.ts":{"bytes":105810,"imports":[{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo/JsonSchema","kind":"import-statement","external":true},{"path":"@dxos/echo/Obj","kind":"import-statement","external":true},{"path":"@dxos/effect","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/react-ui-form","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"src/util/index.ts","kind":"import-statement","original":"../util"},{"path":"src/util/sort.ts","kind":"import-statement","original":"../util/sort"},{"path":"src/util/tag.ts","kind":"import-statement","original":"../util/tag"},{"path":"src/model/selection-model.ts","kind":"import-statement","original":"./selection-model"},{"path":"src/model/table-view-state.ts","kind":"import-statement","original":"./table-view-state"}],"format":"esm"},"src/model/modal-controller.ts":{"bytes":7634,"imports":[{"path":"@effect-atom/atom-react","kind":"import-statement","external":true}],"format":"esm"},"src/model/table-presentation.ts":{"bytes":61529,"imports":[{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"effect/Predicate","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo/Format","kind":"import-statement","external":true},{"path":"@dxos/effect","kind":"import-statement","external":true},{"path":"@dxos/react-ui-form","kind":"import-statement","external":true},{"path":"@dxos/react-ui-grid","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true},{"path":"src/util/index.ts","kind":"import-statement","original":"../util"}],"format":"esm"},"src/model/index.ts":{"bytes":793,"imports":[{"path":"src/model/table-model.ts","kind":"import-statement","original":"./table-model"},{"path":"src/model/table-view-state.ts","kind":"import-statement","original":"./table-view-state"},{"path":"src/model/modal-controller.ts","kind":"import-statement","original":"./modal-controller"},{"path":"src/model/table-presentation.ts","kind":"import-statement","original":"./table-presentation"}],"format":"esm"},"src/components/TableCellEditor/CellValidationMessage.tsx":{"bytes":3908,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui-grid","kind":"import-statement","external":true}],"format":"esm"},"src/components/TableCellEditor/FormCellEditor.tsx":{"bytes":22626,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/effect","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-form","kind":"import-statement","external":true},{"path":"@dxos/react-ui-grid","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"#translations","kind":"import-statement","external":true},{"path":"src/util/index.ts","kind":"import-statement","original":"../../util"}],"format":"esm"},"src/components/TableCellEditor/TableCellEditor.tsx":{"bytes":27211,"imports":[{"path":"@codemirror/view","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/echo/Format","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/react-ui-grid","kind":"import-statement","external":true},{"path":"src/components/TableCellEditor/CellValidationMessage.tsx","kind":"import-statement","original":"./CellValidationMessage"},{"path":"src/components/TableCellEditor/FormCellEditor.tsx","kind":"import-statement","original":"./FormCellEditor"}],"format":"esm"},"src/components/TableCellEditor/index.ts":{"bytes":471,"imports":[{"path":"src/components/TableCellEditor/TableCellEditor.tsx","kind":"import-statement","original":"./TableCellEditor"}],"format":"esm"},"src/components/Table/ColumnActionsMenu.tsx":{"bytes":8451,"imports":[{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"#translations","kind":"import-statement","external":true}],"format":"esm"},"src/components/Table/ColumnSettings.tsx":{"bytes":8496,"imports":[{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-form","kind":"import-statement","external":true}],"format":"esm"},"src/components/Table/RowActionsMenu.tsx":{"bytes":6866,"imports":[{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"#translations","kind":"import-statement","external":true}],"format":"esm"},"src/components/Table/TableContent.tsx":{"bytes":49687,"imports":[{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"effect/String","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-attention","kind":"import-statement","external":true},{"path":"@dxos/react-ui-grid","kind":"import-statement","external":true},{"path":"@dxos/react-ui-grid","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true},{"path":"src/model/index.ts","kind":"import-statement","original":"../../model"},{"path":"src/util/index.ts","kind":"import-statement","original":"../../util"},{"path":"src/components/TableCellEditor/index.ts","kind":"import-statement","original":"../TableCellEditor"},{"path":"src/components/Table/ColumnActionsMenu.tsx","kind":"import-statement","original":"./ColumnActionsMenu"},{"path":"src/components/Table/ColumnSettings.tsx","kind":"import-statement","original":"./ColumnSettings"},{"path":"src/components/Table/RowActionsMenu.tsx","kind":"import-statement","original":"./RowActionsMenu"},{"path":"src/components/Table/Table.tsx","kind":"import-statement","original":"./Table"}],"format":"esm"},"src/components/Table/TableToolbar.tsx":{"bytes":16056,"imports":[{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-menu","kind":"import-statement","external":true},{"path":"#translations","kind":"import-statement","external":true}],"format":"esm"},"src/components/Table/Table.tsx":{"bytes":6053,"imports":[{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"src/components/Table/TableContent.tsx","kind":"import-statement","original":"./TableContent"},{"path":"src/components/Table/TableToolbar.tsx","kind":"import-statement","original":"./TableToolbar"}],"format":"esm"},"src/hooks/useAddRow.ts":{"bytes":2809,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true}],"format":"esm"},"src/hooks/useProjectionModel.ts":{"bytes":4251,"imports":[{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true}],"format":"esm"},"src/hooks/useTableModel.ts":{"bytes":9209,"imports":[{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui-attention","kind":"import-statement","external":true},{"path":"src/model/index.ts","kind":"import-statement","original":"../model"}],"format":"esm"},"src/hooks/index.ts":{"bytes":596,"imports":[{"path":"src/hooks/useAddRow.ts","kind":"import-statement","original":"./useAddRow"},{"path":"src/hooks/useProjectionModel.ts","kind":"import-statement","original":"./useProjectionModel"},{"path":"src/hooks/useTableModel.ts","kind":"import-statement","original":"./useTableModel"}],"format":"esm"},"src/components/Table/DynamicTable.tsx":{"bytes":11080,"imports":[{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true},{"path":"src/hooks/index.ts","kind":"import-statement","original":"../../hooks"},{"path":"src/model/index.ts","kind":"import-statement","original":"../../model"},{"path":"src/util/index.ts","kind":"import-statement","original":"../../util"},{"path":"src/components/Table/Table.tsx","kind":"import-statement","original":"./Table"}],"format":"esm"},"src/components/Table/index.ts":{"bytes":469,"imports":[{"path":"src/components/Table/Table.tsx","kind":"import-statement","original":"./Table"},{"path":"src/components/Table/DynamicTable.tsx","kind":"import-statement","original":"./DynamicTable"}],"format":"esm"},"src/components/index.ts":{"bytes":369,"imports":[{"path":"src/components/Table/index.ts","kind":"import-statement","original":"./Table"}],"format":"esm"},"src/index.ts":{"bytes":620,"imports":[{"path":"src/components/index.ts","kind":"import-statement","original":"./components"},{"path":"src/hooks/index.ts","kind":"import-statement","original":"./hooks"},{"path":"src/model/index.ts","kind":"import-statement","original":"./model"},{"path":"src/util/index.ts","kind":"import-statement","original":"./util"}],"format":"esm"},"src/testing/useTestTableModel.ts":{"bytes":13059,"imports":[{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/random","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-client/testing","kind":"import-statement","external":true},{"path":"@dxos/react-ui-search","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"src/hooks/index.ts","kind":"import-statement","original":"../hooks"},{"path":"src/model/index.ts","kind":"import-statement","original":"../model"},{"path":"src/types/index.ts","kind":"import-statement","original":"../types"}],"format":"esm"},"src/testing/index.ts":{"bytes":401,"imports":[{"path":"src/testing/useTestTableModel.ts","kind":"import-statement","original":"./useTestTableModel"}],"format":"esm"},"src/translations.ts":{"bytes":4169,"imports":[],"format":"esm"}},"outputs":{"dist/lib/browser/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":92018},"dist/lib/browser/index.mjs":{"imports":[{"path":"dist/lib/browser/chunk-K4J2CKTZ.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-VV3P3ADH.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-J5LGTIGS.mjs","kind":"import-statement"},{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"@radix-ui/react-context","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"effect/String","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/log","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-attention","kind":"import-statement","external":true},{"path":"@dxos/react-ui-grid","kind":"import-statement","external":true},{"path":"@dxos/react-ui-grid","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"effect/SchemaAST","kind":"import-statement","external":true},{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"@codemirror/view","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/async","kind":"import-statement","external":true},{"path":"@dxos/echo/Format","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/react-ui-grid","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui-grid","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/effect","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-form","kind":"import-statement","external":true},{"path":"@dxos/react-ui-grid","kind":"import-statement","external":true},{"path":"@dxos/util","kind":"import-statement","external":true},{"path":"#translations","kind":"import-statement","external":true},{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"#translations","kind":"import-statement","external":true},{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-form","kind":"import-statement","external":true},{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"#translations","kind":"import-statement","external":true},{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/react-ui-menu","kind":"import-statement","external":true},{"path":"#translations","kind":"import-statement","external":true},{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true}],"exports":["BUTTON_IDENTIFIERS","CONTROL_IDENTIFIERS","CheckboxStory","DynamicTable","FieldSortSchema","ModalController","SwitchStory","Table","TableModel","TablePresentation","cellClassesForRowSelection","compareValues","createDirectChangeCallback","createEchoChangeCallback","extractOrder","getBaseSchema","getSortValue","makeDynamicTable","narrowSchema","tableButtons","tableControls","tableSortAspect","touch","useAddRow","useProjectionModel","useTableContext","useTableModel"],"entryPoint":"src/index.ts","inputs":{"src/components/Table/Table.tsx":{"bytesInOutput":914},"src/components/Table/TableContent.tsx":{"bytesInOutput":11391},"src/util/dynamic-table.ts":{"bytesInOutput":2332},"src/util/signals.ts":{"bytesInOutput":30},"src/util/schema.ts":{"bytesInOutput":498},"src/model/modal-controller.ts":{"bytesInOutput":1549},"src/components/TableCellEditor/TableCellEditor.tsx":{"bytesInOutput":6729},"src/components/TableCellEditor/CellValidationMessage.tsx":{"bytesInOutput":893},"src/components/TableCellEditor/FormCellEditor.tsx":{"bytesInOutput":5539},"src/components/Table/ColumnActionsMenu.tsx":{"bytesInOutput":2240},"src/components/Table/ColumnSettings.tsx":{"bytesInOutput":2240},"src/components/Table/RowActionsMenu.tsx":{"bytesInOutput":1773},"src/components/Table/TableToolbar.tsx":{"bytesInOutput":3857},"src/components/Table/DynamicTable.tsx":{"bytesInOutput":2208},"src/index.ts":{"bytesInOutput":0}},"bytes":43943},"dist/lib/browser/testing/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":7258},"dist/lib/browser/testing/index.mjs":{"imports":[{"path":"dist/lib/browser/chunk-K4J2CKTZ.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-VV3P3ADH.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-J5LGTIGS.mjs","kind":"import-statement"},{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/random","kind":"import-statement","external":true},{"path":"@dxos/react-client/echo","kind":"import-statement","external":true},{"path":"@dxos/react-client/testing","kind":"import-statement","external":true},{"path":"@dxos/react-ui-search","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true}],"exports":["useTestTableModel"],"entryPoint":"src/testing/index.ts","inputs":{"src/testing/useTestTableModel.ts":{"bytesInOutput":2786},"src/testing/index.ts":{"bytesInOutput":0}},"bytes":3092},"dist/lib/browser/chunk-K4J2CKTZ.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":115477},"dist/lib/browser/chunk-K4J2CKTZ.mjs":{"imports":[{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/lit-grid","kind":"import-statement","external":true},{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui-attention","kind":"import-statement","external":true},{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo/JsonSchema","kind":"import-statement","external":true},{"path":"@dxos/echo/Obj","kind":"import-statement","external":true},{"path":"@dxos/effect","kind":"import-statement","external":true},{"path":"@dxos/invariant","kind":"import-statement","external":true},{"path":"@dxos/keys","kind":"import-statement","external":true},{"path":"@dxos/react-ui-form","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"@dxos/context","kind":"import-statement","external":true},{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"effect/Predicate","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo/Format","kind":"import-statement","external":true},{"path":"@dxos/effect","kind":"import-statement","external":true},{"path":"@dxos/react-ui-form","kind":"import-statement","external":true},{"path":"@dxos/react-ui-grid","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"@dxos/ui-theme","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true},{"path":"@effect-atom/atom-react","kind":"import-statement","external":true},{"path":"react","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/react-ui-attention","kind":"import-statement","external":true}],"exports":["BUTTON_IDENTIFIERS","CONTROL_IDENTIFIERS","CheckboxStory","FieldSortSchema","SwitchStory","TableModel","TablePresentation","cellClassesForRowSelection","compareValues","createDirectChangeCallback","createEchoChangeCallback","extractOrder","getSortValue","tableButtons","tableControls","tableSortAspect","useAddRow","useProjectionModel","useTableModel"],"inputs":{"src/util/query-ast.ts":{"bytesInOutput":282},"src/util/sort.ts":{"bytesInOutput":1644},"src/util/table-buttons.ts":{"bytesInOutput":3497},"src/util/table-controls.ts":{"bytesInOutput":2023},"src/model/table-view-state.ts":{"bytesInOutput":406},"src/model/table-model.ts":{"bytesInOutput":24423},"src/util/tag.ts":{"bytesInOutput":334},"src/model/selection-model.ts":{"bytesInOutput":3552},"src/model/table-presentation.ts":{"bytesInOutput":14976},"src/hooks/useAddRow.ts":{"bytesInOutput":374},"src/hooks/useProjectionModel.ts":{"bytesInOutput":874},"src/hooks/useTableModel.ts":{"bytesInOutput":1967}},"bytes":55162},"dist/lib/browser/translations.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":1938},"dist/lib/browser/translations.mjs":{"imports":[{"path":"dist/lib/browser/chunk-J5LGTIGS.mjs","kind":"import-statement"}],"exports":["translationKey","translations"],"entryPoint":"src/translations.ts","inputs":{"src/translations.ts":{"bytesInOutput":1233}},"bytes":1375},"dist/lib/browser/types/index.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"dist/lib/browser/types/index.mjs":{"imports":[{"path":"dist/lib/browser/chunk-VV3P3ADH.mjs","kind":"import-statement"},{"path":"dist/lib/browser/chunk-J5LGTIGS.mjs","kind":"import-statement"}],"exports":["Table"],"entryPoint":"src/types/index.ts","inputs":{},"bytes":161},"dist/lib/browser/chunk-VV3P3ADH.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":4493},"dist/lib/browser/chunk-VV3P3ADH.mjs":{"imports":[{"path":"dist/lib/browser/chunk-J5LGTIGS.mjs","kind":"import-statement"},{"path":"effect/Match","kind":"import-statement","external":true},{"path":"effect/Schema","kind":"import-statement","external":true},{"path":"effect/SchemaAST","kind":"import-statement","external":true},{"path":"@dxos/echo","kind":"import-statement","external":true},{"path":"@dxos/echo/Annotation","kind":"import-statement","external":true},{"path":"@dxos/schema","kind":"import-statement","external":true}],"exports":["Table_exports"],"inputs":{"src/types/Table.ts":{"bytesInOutput":1760},"src/types/index.ts":{"bytesInOutput":0}},"bytes":1907},"dist/lib/browser/chunk-J5LGTIGS.mjs.map":{"imports":[],"exports":[],"inputs":{},"bytes":93},"dist/lib/browser/chunk-J5LGTIGS.mjs":{"imports":[],"exports":["__export"],"inputs":{},"bytes":235}}}
@@ -3,10 +3,10 @@ import {
3
3
  useAddRow,
4
4
  useProjectionModel,
5
5
  useTableModel
6
- } from "../chunk-5V5FV3GS.mjs";
6
+ } from "../chunk-K4J2CKTZ.mjs";
7
7
  import {
8
8
  Table_exports
9
- } from "../chunk-62PYOJPY.mjs";
9
+ } from "../chunk-VV3P3ADH.mjs";
10
10
  import "../chunk-J5LGTIGS.mjs";
11
11
 
12
12
  // src/testing/useTestTableModel.ts
@@ -9,7 +9,6 @@ var translations = [
9
9
  "object.placeholder": "New table",
10
10
  "create-object.label": "Create table",
11
11
  "table-name.placeholder": "Table name",
12
- "settings.title": "Table settings",
13
12
  "table-schema.label": "Type",
14
13
  "continue.label": "Continue",
15
14
  "create-stack-section.label": "Create table",
@@ -24,7 +23,11 @@ var translations = [
24
23
  "column-deleted.label": "Column deleted",
25
24
  "new-column-button.label": "Create column",
26
25
  "create-new-object.label": "Create new object \u201C{{text}}\u201D",
27
- "save-view.label": "Save changes to view"
26
+ "save-view.label": "Save changes to view",
27
+ "export-rows.menu": "Export",
28
+ "export-rows-csv.menu": "CSV",
29
+ "export-rows-json.menu": "JSON (.dx.json)",
30
+ "export-rows-xml.menu": "XML"
28
31
  }
29
32
  }
30
33
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/translations.ts"],
4
- "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Resource } from '@dxos/react-ui';\n\nexport const translationKey = '@dxos/react-ui-table';\n\nexport const translations = [\n {\n 'en-US': {\n [translationKey]: {\n 'object.placeholder': 'New table',\n 'create-object.label': 'Create table',\n 'table-name.placeholder': 'Table name',\n 'settings.title': 'Table settings',\n 'table-schema.label': 'Type',\n 'continue.label': 'Continue',\n 'create-stack-section.label': 'Create table',\n 'add-row.label': 'Add row',\n 'column-action-sort-descending.menu': 'Sort Descending',\n 'column-action-sort-ascending.menu': 'Sort Ascending',\n 'column-action-clear-sorting.menu': 'Clear Sorting',\n 'column-action-settings.menu': 'Column Settings',\n 'column-action-delete.menu': 'Delete Column',\n 'delete-row.label': 'Delete row',\n 'bulk-delete-row.label': 'Delete selected rows',\n 'column-deleted.label': 'Column deleted',\n 'new-column-button.label': 'Create column',\n 'create-new-object.label': 'Create new object “{{text}}”',\n 'save-view.label': 'Save changes to view',\n },\n },\n },\n] as const satisfies Resource[];\n"],
5
- "mappings": ";;;AAMO,IAAMA,iBAAiB;AAEvB,IAAMC,eAAe;EAC1B;IACE,SAAS;MACP,CAACD,cAAAA,GAAiB;QAChB,sBAAsB;QACtB,uBAAuB;QACvB,0BAA0B;QAC1B,kBAAkB;QAClB,sBAAsB;QACtB,kBAAkB;QAClB,8BAA8B;QAC9B,iBAAiB;QACjB,sCAAsC;QACtC,qCAAqC;QACrC,oCAAoC;QACpC,+BAA+B;QAC/B,6BAA6B;QAC7B,oBAAoB;QACpB,yBAAyB;QACzB,wBAAwB;QACxB,2BAA2B;QAC3B,2BAA2B;QAC3B,mBAAmB;MACrB;IACF;EACF;;",
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Resource } from '@dxos/react-ui';\n\nexport const translationKey = '@dxos/react-ui-table';\n\nexport const translations = [\n {\n 'en-US': {\n [translationKey]: {\n 'object.placeholder': 'New table',\n 'create-object.label': 'Create table',\n 'table-name.placeholder': 'Table name',\n 'table-schema.label': 'Type',\n 'continue.label': 'Continue',\n 'create-stack-section.label': 'Create table',\n 'add-row.label': 'Add row',\n 'column-action-sort-descending.menu': 'Sort Descending',\n 'column-action-sort-ascending.menu': 'Sort Ascending',\n 'column-action-clear-sorting.menu': 'Clear Sorting',\n 'column-action-settings.menu': 'Column Settings',\n 'column-action-delete.menu': 'Delete Column',\n 'delete-row.label': 'Delete row',\n 'bulk-delete-row.label': 'Delete selected rows',\n 'column-deleted.label': 'Column deleted',\n 'new-column-button.label': 'Create column',\n 'create-new-object.label': 'Create new object “{{text}}”',\n 'save-view.label': 'Save changes to view',\n 'export-rows.menu': 'Export',\n 'export-rows-csv.menu': 'CSV',\n 'export-rows-json.menu': 'JSON (.dx.json)',\n 'export-rows-xml.menu': 'XML',\n },\n },\n },\n] as const satisfies Resource[];\n"],
5
+ "mappings": ";;;AAMO,IAAMA,iBAAiB;AAEvB,IAAMC,eAAe;EAC1B;IACE,SAAS;MACP,CAACD,cAAAA,GAAiB;QAChB,sBAAsB;QACtB,uBAAuB;QACvB,0BAA0B;QAC1B,sBAAsB;QACtB,kBAAkB;QAClB,8BAA8B;QAC9B,iBAAiB;QACjB,sCAAsC;QACtC,qCAAqC;QACrC,oCAAoC;QACpC,+BAA+B;QAC/B,6BAA6B;QAC7B,oBAAoB;QACpB,yBAAyB;QACzB,wBAAwB;QACxB,2BAA2B;QAC3B,2BAA2B;QAC3B,mBAAmB;QACnB,oBAAoB;QACpB,wBAAwB;QACxB,yBAAyB;QACzB,wBAAwB;MAC1B;IACF;EACF;;",
6
6
  "names": ["translationKey", "translations"]
7
7
  }
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  Table_exports
3
- } from "../chunk-62PYOJPY.mjs";
3
+ } from "../chunk-VV3P3ADH.mjs";
4
4
  import "../chunk-J5LGTIGS.mjs";
5
5
  export {
6
6
  Table_exports as Table
@@ -236,6 +236,21 @@ var tableControls = {
236
236
  }
237
237
  };
238
238
 
239
+ // src/model/table-view-state.ts
240
+ import * as Schema from "effect/Schema";
241
+ import { QueryAST } from "@dxos/echo";
242
+ import { defineViewState } from "@dxos/react-ui-attention";
243
+ var FieldSortSchema = Schema.Struct({
244
+ fieldId: Schema.String,
245
+ direction: QueryAST.OrderDirection
246
+ });
247
+ var tableSortAspect = defineViewState({
248
+ key: "table-sort",
249
+ backend: "local",
250
+ schema: Schema.UndefinedOr(FieldSortSchema),
251
+ defaultValue: () => void 0
252
+ });
253
+
239
254
  // src/model/table-model.ts
240
255
  import { Atom as Atom2 } from "@effect-atom/atom-react";
241
256
  import { Resource as Resource2 } from "@dxos/context";
@@ -423,7 +438,10 @@ var TableModel = class extends Resource2 {
423
438
  _features;
424
439
  _rows;
425
440
  _draftRows;
426
- // In-memory sort state - changes are local until saved.
441
+ // Optional per-context UI state manager; when present the column sort is view-state-backed.
442
+ _viewState;
443
+ // Per-user sort state - backed by the `tableSortAspect` view state (keyed by table URI) when a
444
+ // ViewStateManager is provided, else an ephemeral atom. Changes are local until saved to the view.
427
445
  _inMemorySort;
428
446
  // Derived atom for persisted sort from view.query.ast.
429
447
  _persistedSort;
@@ -438,13 +456,14 @@ var TableModel = class extends Resource2 {
438
456
  _columnMeta;
439
457
  // Counter atom that increments when cells are updated - allows UI to react to cell changes.
440
458
  _cellUpdateCounter;
441
- constructor({ registry, object, projection, db, change, features = {}, initialSelection = [], pinnedRows = {
459
+ constructor({ registry, object, projection, db, viewState, change, features = {}, initialSelection = [], pinnedRows = {
442
460
  top: [],
443
461
  bottom: []
444
462
  }, rowActions = [], onCellUpdate, onColumnDelete, onDeleteRows, onInsertRow, onRowOrderChange, onRowAction }) {
445
463
  super();
446
464
  this._registry = registry;
447
465
  this._object = object;
466
+ this._viewState = viewState;
448
467
  this._projection = projection;
449
468
  this._projection.normalizeView();
450
469
  this._db = db;
@@ -453,7 +472,7 @@ var TableModel = class extends Resource2 {
453
472
  ...defaultFeatures,
454
473
  ...features
455
474
  };
456
- invariant(!(this._features.dataEditable && this._features.selection.enabled && this._features.selection.mode === "single"), "Single selection is not compatible with editable tables.", { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 94, S: this, A: ["!(this._features.dataEditable && this._features.selection.enabled && this._features.selection.mode === 'single')", "'Single selection is not compatible with editable tables.'"] });
475
+ invariant(!(this._features.dataEditable && this._features.selection.enabled && this._features.selection.mode === "single"), "Single selection is not compatible with editable tables.", { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 99, S: this, A: ["!(this._features.dataEditable && this._features.selection.enabled && this._features.selection.mode === 'single')", "'Single selection is not compatible with editable tables.'"] });
457
476
  this._visibleRange = Atom2.make({
458
477
  start: {
459
478
  row: 0,
@@ -466,7 +485,7 @@ var TableModel = class extends Resource2 {
466
485
  });
467
486
  this._rows = Atom2.make([]);
468
487
  this._draftRows = Atom2.make([]);
469
- this._inMemorySort = Atom2.make(void 0);
488
+ this._inMemorySort = this._viewState ? this._viewState.atom(tableSortAspect, this.id) : Atom2.make(void 0);
470
489
  this._cellUpdateCounter = Atom2.make(0);
471
490
  this._persistedSort = Atom2.make((get) => {
472
491
  const view = get(this._object.view.atom);
@@ -540,7 +559,7 @@ var TableModel = class extends Resource2 {
540
559
  }
541
560
  get view() {
542
561
  const view = this._object.view.target;
543
- invariant(view, "Table model not initialized", { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 190, S: this, A: ["view", "'Table model not initialized'"] });
562
+ invariant(view, "Table model not initialized", { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 197, S: this, A: ["view", "'Table model not initialized'"] });
544
563
  return view;
545
564
  }
546
565
  get table() {
@@ -600,7 +619,7 @@ var TableModel = class extends Resource2 {
600
619
  return this._pinnedRows;
601
620
  }
602
621
  get columnMeta() {
603
- invariant(this._columnMeta, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 244, S: this, A: ["this._columnMeta", ""] });
622
+ invariant(this._columnMeta, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 251, S: this, A: ["this._columnMeta", ""] });
604
623
  return this._columnMeta;
605
624
  }
606
625
  get selection() {
@@ -619,7 +638,7 @@ var TableModel = class extends Resource2 {
619
638
  await this._selection.open(this._ctx);
620
639
  }
621
640
  initializeColumnMeta() {
622
- invariant(this._object.view.target, "View must be loaded before initializing column meta", { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 263, S: this, A: ["this._object.view.target", "'View must be loaded before initializing column meta'"] });
641
+ invariant(this._object.view.target, "View must be loaded before initializing column meta", { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 270, S: this, A: ["this._object.view.target", "'View must be loaded before initializing column meta'"] });
623
642
  this._columnMeta = Atom2.make((get) => {
624
643
  const fields = get(this._projection.fields);
625
644
  const meta = Object.fromEntries(fields.map((field, index) => [
@@ -881,13 +900,13 @@ var TableModel = class extends Resource2 {
881
900
  };
882
901
  } else {
883
902
  const currentRow = this._registry.get(this._rows)[row];
884
- invariant(currentRow, "Invalid row index", { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 537, S: this, A: ["currentRow", "'Invalid row index'"] });
903
+ invariant(currentRow, "Invalid row index", { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 544, S: this, A: ["currentRow", "'Invalid row index'"] });
885
904
  const snapshot = {
886
905
  ...getSnapshot(currentRow)
887
906
  };
888
907
  SchemaEx.setValue(snapshot, field.path, transformedValue);
889
908
  const type = Obj.getType(currentRow);
890
- invariant(type, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 544, S: this, A: ["type", ""] });
909
+ invariant(type, void 0, { "~LogMeta": "~LogMeta", F: __dxlog_file, L: 551, S: this, A: ["type", ""] });
891
910
  const schema = Type.getSchema(type);
892
911
  const validationResult = validateSchema(schema, snapshot);
893
912
  if (validationResult && validationResult.length > 0) {
@@ -1020,12 +1039,23 @@ var TableModel = class extends Resource2 {
1020
1039
  if (!field) {
1021
1040
  return;
1022
1041
  }
1023
- this._registry.set(this._inMemorySort, {
1042
+ this._writeSort({
1024
1043
  fieldId,
1025
1044
  direction
1026
1045
  });
1027
1046
  }
1028
1047
  /**
1048
+ * Writes the per-user sort, routing through the ViewStateManager (so the `local` backend persists)
1049
+ * when one is configured, otherwise updating the ephemeral atom directly.
1050
+ */
1051
+ _writeSort(value) {
1052
+ if (this._viewState) {
1053
+ this._viewState.set(tableSortAspect, this.id, value);
1054
+ } else {
1055
+ this._registry.set(this._inMemorySort, value);
1056
+ }
1057
+ }
1058
+ /**
1029
1059
  * Toggles the sort direction for a field in-memory.
1030
1060
  */
1031
1061
  toggleSort(fieldId) {
@@ -1041,7 +1071,7 @@ var TableModel = class extends Resource2 {
1041
1071
  * Clears the in-memory sort order.
1042
1072
  */
1043
1073
  clearSort() {
1044
- this._registry.set(this._inMemorySort, void 0);
1074
+ this._writeSort(void 0);
1045
1075
  }
1046
1076
  /**
1047
1077
  * Saves the current in-memory sort to the view query AST.
@@ -1066,7 +1096,7 @@ var TableModel = class extends Resource2 {
1066
1096
  view2.query.ast = baseQuery.ast;
1067
1097
  });
1068
1098
  }
1069
- this._registry.set(this._inMemorySort, void 0);
1099
+ this._writeSort(void 0);
1070
1100
  }
1071
1101
  /**
1072
1102
  * Extracts the base query without order clauses.
@@ -1275,6 +1305,13 @@ var TablePresentation = class {
1275
1305
  cell.accessoryHtml = `<div role="none" class="absolute end-0 inset-y-0 p-(--dx-grid-cell-content-padding-block)"><dx-anchor uri=${uri} class="dx-button w-6 aspect-square min-h-0" data-dx-grid-action="accessory"><dx-icon icon="ph--link-simple--regular"/></dx-anchor></div>`;
1276
1306
  }
1277
1307
  }
1308
+ if (props.format === Format3.TypeFormat.URL) {
1309
+ const value = SchemaEx2.getValue(obj, field.path);
1310
+ const href = typeof value === "string" ? safeHttpUrl(value) : void 0;
1311
+ if (href) {
1312
+ cell.accessoryHtml = `<div role="none" class="absolute end-0 inset-y-0 p-(--dx-grid-cell-content-padding-block)"><a href="${escapeHtmlAttribute(href)}" target="_blank" rel="noopener noreferrer" class="dx-button w-6 aspect-square min-h-0" data-dx-grid-action="accessory"><dx-icon icon="ph--arrow-square-out--regular"/></a></div>`;
1313
+ }
1314
+ }
1278
1315
  if (props.format === Format3.TypeFormat.Boolean) {
1279
1316
  const value = SchemaEx2.getValue(obj, field.path);
1280
1317
  cell.accessoryHtml = tableControls.switch.render({
@@ -1531,6 +1568,16 @@ var TablePresentation = class {
1531
1568
  return cells;
1532
1569
  }
1533
1570
  };
1571
+ var safeHttpUrl = (value) => {
1572
+ try {
1573
+ const normalized = /^https?:\/\//i.test(value) ? value : `https://${value}`;
1574
+ const url = new URL(normalized);
1575
+ return url.protocol === "http:" || url.protocol === "https:" ? url.href : void 0;
1576
+ } catch {
1577
+ return void 0;
1578
+ }
1579
+ };
1580
+ var escapeHtmlAttribute = (value) => value.replace(/&/g, "&amp;").replace(/"/g, "&quot;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
1534
1581
  var cellClassesForRowSelection = (selected, selectionMode) => {
1535
1582
  if (!selected) {
1536
1583
  if (selectionMode === "single") {
@@ -1606,9 +1653,10 @@ var useProjectionModel = (schema, table, registry) => {
1606
1653
  import { RegistryContext } from "@effect-atom/atom-react";
1607
1654
  import { useContext, useEffect, useMemo, useState as useState2 } from "react";
1608
1655
  import { Obj as Obj4 } from "@dxos/echo";
1609
- import { useSelection, useSelectionActions } from "@dxos/react-ui-attention";
1656
+ import { useSelection, useSelectionActions, useViewStateManagerOptional } from "@dxos/react-ui-attention";
1610
1657
  var useTableModel = ({ object, projection, db, rows, rowActions, features, onSelectionChanged, onRowAction, ...props }) => {
1611
1658
  const registry = useContext(RegistryContext);
1659
+ const viewState = useViewStateManagerOptional();
1612
1660
  const selected = useSelection(object && Obj4.getURI(object), "multi");
1613
1661
  const initialSelection = useMemo(() => selected, [
1614
1662
  object
@@ -1625,6 +1673,7 @@ var useTableModel = ({ object, projection, db, rows, rowActions, features, onSel
1625
1673
  object,
1626
1674
  projection,
1627
1675
  db,
1676
+ viewState,
1628
1677
  change: createEchoChangeCallback(object),
1629
1678
  features,
1630
1679
  rowActions,
@@ -1641,6 +1690,7 @@ var useTableModel = ({ object, projection, db, rows, rowActions, features, onSel
1641
1690
  };
1642
1691
  }, [
1643
1692
  registry,
1693
+ viewState,
1644
1694
  object,
1645
1695
  projection,
1646
1696
  features,
@@ -1689,6 +1739,8 @@ export {
1689
1739
  CheckboxStory,
1690
1740
  SwitchStory,
1691
1741
  tableControls,
1742
+ FieldSortSchema,
1743
+ tableSortAspect,
1692
1744
  createEchoChangeCallback,
1693
1745
  createDirectChangeCallback,
1694
1746
  TableModel,
@@ -1698,4 +1750,4 @@ export {
1698
1750
  useProjectionModel,
1699
1751
  useTableModel
1700
1752
  };
1701
- //# sourceMappingURL=chunk-5H6GHWNR.mjs.map
1753
+ //# sourceMappingURL=chunk-E6V274ZW.mjs.map