@dxos/react-ui-table 0.8.1-staging.391c573 → 0.8.1-staging.5be625a

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 (201) hide show
  1. package/dist/lib/browser/{chunk-3FR6NHPD.mjs → chunk-5MKYB7NF.mjs} +5 -7
  2. package/dist/lib/browser/chunk-5MKYB7NF.mjs.map +7 -0
  3. package/dist/lib/browser/{_deprecated → deprecated}/index.mjs +22 -22
  4. package/dist/lib/browser/{_deprecated → deprecated}/index.mjs.map +1 -1
  5. package/dist/lib/browser/index.mjs +394 -192
  6. package/dist/lib/browser/index.mjs.map +4 -4
  7. package/dist/lib/browser/meta.json +1 -1
  8. package/dist/lib/browser/types/index.mjs +1 -1
  9. package/dist/lib/node/{chunk-NB3SFHGA.cjs → chunk-NRFKBRPV.cjs} +7 -9
  10. package/dist/lib/node/chunk-NRFKBRPV.cjs.map +7 -0
  11. package/dist/lib/node/{_deprecated → deprecated}/index.cjs +1 -1
  12. package/dist/lib/node/{_deprecated → deprecated}/index.cjs.map +1 -1
  13. package/dist/lib/node/index.cjs +386 -188
  14. package/dist/lib/node/index.cjs.map +4 -4
  15. package/dist/lib/node/meta.json +1 -1
  16. package/dist/lib/node/types/index.cjs +3 -3
  17. package/dist/lib/node/types/index.cjs.map +1 -1
  18. package/dist/lib/node-esm/{chunk-RLVVOZW5.mjs → chunk-SU4D55KI.mjs} +5 -7
  19. package/dist/lib/node-esm/chunk-SU4D55KI.mjs.map +7 -0
  20. package/dist/lib/node-esm/{_deprecated → deprecated}/index.mjs +22 -22
  21. package/dist/lib/node-esm/{_deprecated → deprecated}/index.mjs.map +1 -1
  22. package/dist/lib/node-esm/index.mjs +394 -192
  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/types/index.mjs +1 -1
  26. package/dist/types/src/components/Table/ColumnActionsMenu.d.ts.map +1 -1
  27. package/dist/types/src/components/Table/ColumnSettings.d.ts.map +1 -1
  28. package/dist/types/src/components/Table/DynamicTable.d.ts +19 -0
  29. package/dist/types/src/components/Table/DynamicTable.d.ts.map +1 -0
  30. package/dist/types/src/components/Table/RowActionsMenu.d.ts.map +1 -1
  31. package/dist/types/src/components/Table/Table.d.ts +1 -0
  32. package/dist/types/src/components/Table/Table.d.ts.map +1 -1
  33. package/dist/types/src/components/Table/Table.stories.d.ts +3 -1
  34. package/dist/types/src/components/Table/Table.stories.d.ts.map +1 -1
  35. package/dist/types/src/components/Table/index.d.ts +1 -0
  36. package/dist/types/src/components/Table/index.d.ts.map +1 -1
  37. package/dist/types/src/components/TableCellEditor/TableCellEditor.stories.d.ts.map +1 -1
  38. package/dist/types/src/components/testing.d.ts +7 -7
  39. package/dist/types/src/components/testing.d.ts.map +1 -1
  40. package/dist/types/src/deprecated/components/Cell/Cell.d.ts.map +1 -0
  41. package/dist/types/src/deprecated/components/Cell/CellCombobox.d.ts.map +1 -0
  42. package/dist/types/src/deprecated/components/Cell/index.d.ts.map +1 -0
  43. package/dist/types/src/deprecated/components/ColumnMenu/ColumnMenu.d.ts.map +1 -0
  44. package/dist/types/src/deprecated/components/ColumnMenu/ColumnMenu.stories.d.ts.map +1 -0
  45. package/dist/types/src/deprecated/components/ColumnMenu/ColumnSettings.d.ts.map +1 -0
  46. package/dist/types/src/deprecated/components/ColumnMenu/ColumnSettings.stories.d.ts.map +1 -0
  47. package/dist/types/src/deprecated/components/ColumnMenu/index.d.ts.map +1 -0
  48. package/dist/types/src/deprecated/components/Table/Table.d.ts.map +1 -0
  49. package/dist/types/src/deprecated/components/Table/Table.stories.d.ts.map +1 -0
  50. package/dist/types/src/deprecated/components/Table/TableBody.d.ts.map +1 -0
  51. package/dist/types/src/deprecated/components/Table/TableContext.d.ts.map +1 -0
  52. package/dist/types/src/deprecated/components/Table/TableHead.d.ts.map +1 -0
  53. package/dist/types/src/deprecated/components/Table/TableRootContext.d.ts.map +1 -0
  54. package/dist/types/src/deprecated/components/Table/index.d.ts.map +1 -0
  55. package/dist/types/src/deprecated/components/Table/props.d.ts.map +1 -0
  56. package/dist/types/src/deprecated/components/index.d.ts.map +1 -0
  57. package/dist/types/src/deprecated/helpers.d.ts.map +1 -0
  58. package/dist/types/src/deprecated/hooks/index.d.ts.map +1 -0
  59. package/dist/types/src/deprecated/hooks/useColumnSizing.d.ts.map +1 -0
  60. package/dist/types/src/deprecated/hooks/useColumnSorting.d.ts.map +1 -0
  61. package/dist/types/src/deprecated/hooks/usePinLastRow.d.ts.map +1 -0
  62. package/dist/types/src/deprecated/hooks/useRowSelection.d.ts.map +1 -0
  63. package/dist/types/src/deprecated/index.d.ts.map +1 -0
  64. package/dist/types/src/deprecated/schema/Schema.stories.d.ts.map +1 -0
  65. package/dist/types/src/deprecated/schema/column-utils.d.ts.map +1 -0
  66. package/dist/types/src/deprecated/schema/index.d.ts.map +1 -0
  67. package/dist/types/src/deprecated/schema/types.d.ts.map +1 -0
  68. package/dist/types/src/deprecated/theme.d.ts.map +1 -0
  69. package/dist/types/src/deprecated/translations.d.ts.map +1 -0
  70. package/dist/types/src/deprecated/types.d.ts.map +1 -0
  71. package/dist/types/src/hooks/useTableModel.d.ts +6 -3
  72. package/dist/types/src/hooks/useTableModel.d.ts.map +1 -1
  73. package/dist/types/src/model/table-model.d.ts +34 -7
  74. package/dist/types/src/model/table-model.d.ts.map +1 -1
  75. package/dist/types/src/model/table-presentation.d.ts.map +1 -1
  76. package/dist/types/src/model/table-sorting.d.ts.map +1 -1
  77. package/dist/types/src/types/table.d.ts +7 -33
  78. package/dist/types/src/types/table.d.ts.map +1 -1
  79. package/dist/types/src/util/dynamic-table.d.ts +40 -0
  80. package/dist/types/src/util/dynamic-table.d.ts.map +1 -0
  81. package/dist/types/src/util/index.d.ts +1 -0
  82. package/dist/types/src/util/index.d.ts.map +1 -1
  83. package/dist/types/src/util/table.d.ts +5 -3
  84. package/dist/types/src/util/table.d.ts.map +1 -1
  85. package/package.json +34 -34
  86. package/src/components/Table/ColumnActionsMenu.tsx +6 -4
  87. package/src/components/Table/ColumnSettings.tsx +5 -6
  88. package/src/components/Table/CreateRefPanel.tsx +3 -3
  89. package/src/components/Table/DynamicTable.tsx +86 -0
  90. package/src/components/Table/RefPanel.tsx +3 -3
  91. package/src/components/Table/RowActionsMenu.tsx +18 -3
  92. package/src/components/Table/Table.stories.tsx +71 -20
  93. package/src/components/Table/Table.tsx +30 -10
  94. package/src/components/Table/index.ts +1 -0
  95. package/src/components/TableCellEditor/TableCellEditor.stories.tsx +9 -4
  96. package/src/hooks/useTableModel.ts +28 -7
  97. package/src/model/table-model.test.ts +1 -1
  98. package/src/model/table-model.ts +97 -21
  99. package/src/model/table-presentation.test.ts +1 -1
  100. package/src/model/table-presentation.ts +30 -12
  101. package/src/model/table-sorting.ts +1 -0
  102. package/src/types/table.ts +5 -7
  103. package/src/util/dynamic-table.ts +71 -0
  104. package/src/util/index.ts +1 -0
  105. package/src/util/table.ts +67 -65
  106. package/dist/lib/browser/chunk-3FR6NHPD.mjs.map +0 -7
  107. package/dist/lib/node/chunk-NB3SFHGA.cjs.map +0 -7
  108. package/dist/lib/node-esm/chunk-RLVVOZW5.mjs.map +0 -7
  109. package/dist/types/src/_deprecated/components/Cell/Cell.d.ts.map +0 -1
  110. package/dist/types/src/_deprecated/components/Cell/CellCombobox.d.ts.map +0 -1
  111. package/dist/types/src/_deprecated/components/Cell/index.d.ts.map +0 -1
  112. package/dist/types/src/_deprecated/components/ColumnMenu/ColumnMenu.d.ts.map +0 -1
  113. package/dist/types/src/_deprecated/components/ColumnMenu/ColumnMenu.stories.d.ts.map +0 -1
  114. package/dist/types/src/_deprecated/components/ColumnMenu/ColumnSettings.d.ts.map +0 -1
  115. package/dist/types/src/_deprecated/components/ColumnMenu/ColumnSettings.stories.d.ts.map +0 -1
  116. package/dist/types/src/_deprecated/components/ColumnMenu/index.d.ts.map +0 -1
  117. package/dist/types/src/_deprecated/components/Table/Table.d.ts.map +0 -1
  118. package/dist/types/src/_deprecated/components/Table/Table.stories.d.ts.map +0 -1
  119. package/dist/types/src/_deprecated/components/Table/TableBody.d.ts.map +0 -1
  120. package/dist/types/src/_deprecated/components/Table/TableContext.d.ts.map +0 -1
  121. package/dist/types/src/_deprecated/components/Table/TableHead.d.ts.map +0 -1
  122. package/dist/types/src/_deprecated/components/Table/TableRootContext.d.ts.map +0 -1
  123. package/dist/types/src/_deprecated/components/Table/index.d.ts.map +0 -1
  124. package/dist/types/src/_deprecated/components/Table/props.d.ts.map +0 -1
  125. package/dist/types/src/_deprecated/components/index.d.ts.map +0 -1
  126. package/dist/types/src/_deprecated/helpers.d.ts.map +0 -1
  127. package/dist/types/src/_deprecated/hooks/index.d.ts.map +0 -1
  128. package/dist/types/src/_deprecated/hooks/useColumnSizing.d.ts.map +0 -1
  129. package/dist/types/src/_deprecated/hooks/useColumnSorting.d.ts.map +0 -1
  130. package/dist/types/src/_deprecated/hooks/usePinLastRow.d.ts.map +0 -1
  131. package/dist/types/src/_deprecated/hooks/useRowSelection.d.ts.map +0 -1
  132. package/dist/types/src/_deprecated/index.d.ts.map +0 -1
  133. package/dist/types/src/_deprecated/schema/Schema.stories.d.ts.map +0 -1
  134. package/dist/types/src/_deprecated/schema/column-utils.d.ts.map +0 -1
  135. package/dist/types/src/_deprecated/schema/index.d.ts.map +0 -1
  136. package/dist/types/src/_deprecated/schema/types.d.ts.map +0 -1
  137. package/dist/types/src/_deprecated/theme.d.ts.map +0 -1
  138. package/dist/types/src/_deprecated/translations.d.ts.map +0 -1
  139. package/dist/types/src/_deprecated/types.d.ts.map +0 -1
  140. /package/dist/types/src/{_deprecated → deprecated}/components/Cell/Cell.d.ts +0 -0
  141. /package/dist/types/src/{_deprecated → deprecated}/components/Cell/CellCombobox.d.ts +0 -0
  142. /package/dist/types/src/{_deprecated → deprecated}/components/Cell/index.d.ts +0 -0
  143. /package/dist/types/src/{_deprecated → deprecated}/components/ColumnMenu/ColumnMenu.d.ts +0 -0
  144. /package/dist/types/src/{_deprecated → deprecated}/components/ColumnMenu/ColumnMenu.stories.d.ts +0 -0
  145. /package/dist/types/src/{_deprecated → deprecated}/components/ColumnMenu/ColumnSettings.d.ts +0 -0
  146. /package/dist/types/src/{_deprecated → deprecated}/components/ColumnMenu/ColumnSettings.stories.d.ts +0 -0
  147. /package/dist/types/src/{_deprecated → deprecated}/components/ColumnMenu/index.d.ts +0 -0
  148. /package/dist/types/src/{_deprecated → deprecated}/components/Table/Table.d.ts +0 -0
  149. /package/dist/types/src/{_deprecated → deprecated}/components/Table/Table.stories.d.ts +0 -0
  150. /package/dist/types/src/{_deprecated → deprecated}/components/Table/TableBody.d.ts +0 -0
  151. /package/dist/types/src/{_deprecated → deprecated}/components/Table/TableContext.d.ts +0 -0
  152. /package/dist/types/src/{_deprecated → deprecated}/components/Table/TableHead.d.ts +0 -0
  153. /package/dist/types/src/{_deprecated → deprecated}/components/Table/TableRootContext.d.ts +0 -0
  154. /package/dist/types/src/{_deprecated → deprecated}/components/Table/index.d.ts +0 -0
  155. /package/dist/types/src/{_deprecated → deprecated}/components/Table/props.d.ts +0 -0
  156. /package/dist/types/src/{_deprecated → deprecated}/components/index.d.ts +0 -0
  157. /package/dist/types/src/{_deprecated → deprecated}/helpers.d.ts +0 -0
  158. /package/dist/types/src/{_deprecated → deprecated}/hooks/index.d.ts +0 -0
  159. /package/dist/types/src/{_deprecated → deprecated}/hooks/useColumnSizing.d.ts +0 -0
  160. /package/dist/types/src/{_deprecated → deprecated}/hooks/useColumnSorting.d.ts +0 -0
  161. /package/dist/types/src/{_deprecated → deprecated}/hooks/usePinLastRow.d.ts +0 -0
  162. /package/dist/types/src/{_deprecated → deprecated}/hooks/useRowSelection.d.ts +0 -0
  163. /package/dist/types/src/{_deprecated → deprecated}/index.d.ts +0 -0
  164. /package/dist/types/src/{_deprecated → deprecated}/schema/Schema.stories.d.ts +0 -0
  165. /package/dist/types/src/{_deprecated → deprecated}/schema/column-utils.d.ts +0 -0
  166. /package/dist/types/src/{_deprecated → deprecated}/schema/index.d.ts +0 -0
  167. /package/dist/types/src/{_deprecated → deprecated}/schema/types.d.ts +0 -0
  168. /package/dist/types/src/{_deprecated → deprecated}/theme.d.ts +0 -0
  169. /package/dist/types/src/{_deprecated → deprecated}/translations.d.ts +0 -0
  170. /package/dist/types/src/{_deprecated → deprecated}/types.d.ts +0 -0
  171. /package/src/{_deprecated → deprecated}/components/Cell/Cell.tsx +0 -0
  172. /package/src/{_deprecated → deprecated}/components/Cell/CellCombobox.tsx +0 -0
  173. /package/src/{_deprecated → deprecated}/components/Cell/index.ts +0 -0
  174. /package/src/{_deprecated → deprecated}/components/ColumnMenu/ColumnMenu.stories.tsx +0 -0
  175. /package/src/{_deprecated → deprecated}/components/ColumnMenu/ColumnMenu.tsx +0 -0
  176. /package/src/{_deprecated → deprecated}/components/ColumnMenu/ColumnSettings.stories.tsx +0 -0
  177. /package/src/{_deprecated → deprecated}/components/ColumnMenu/ColumnSettings.tsx +0 -0
  178. /package/src/{_deprecated → deprecated}/components/ColumnMenu/index.ts +0 -0
  179. /package/src/{_deprecated → deprecated}/components/Table/Table.stories.tsx +0 -0
  180. /package/src/{_deprecated → deprecated}/components/Table/Table.tsx +0 -0
  181. /package/src/{_deprecated → deprecated}/components/Table/TableBody.tsx +0 -0
  182. /package/src/{_deprecated → deprecated}/components/Table/TableContext.tsx +0 -0
  183. /package/src/{_deprecated → deprecated}/components/Table/TableHead.tsx +0 -0
  184. /package/src/{_deprecated → deprecated}/components/Table/TableRootContext.ts +0 -0
  185. /package/src/{_deprecated → deprecated}/components/Table/index.ts +0 -0
  186. /package/src/{_deprecated → deprecated}/components/Table/props.ts +0 -0
  187. /package/src/{_deprecated → deprecated}/components/index.ts +0 -0
  188. /package/src/{_deprecated → deprecated}/helpers.tsx +0 -0
  189. /package/src/{_deprecated → deprecated}/hooks/index.ts +0 -0
  190. /package/src/{_deprecated → deprecated}/hooks/useColumnSizing.ts +0 -0
  191. /package/src/{_deprecated → deprecated}/hooks/useColumnSorting.ts +0 -0
  192. /package/src/{_deprecated → deprecated}/hooks/usePinLastRow.ts +0 -0
  193. /package/src/{_deprecated → deprecated}/hooks/useRowSelection.ts +0 -0
  194. /package/src/{_deprecated → deprecated}/index.ts +0 -0
  195. /package/src/{_deprecated → deprecated}/schema/Schema.stories.tsx +0 -0
  196. /package/src/{_deprecated → deprecated}/schema/column-utils.ts +0 -0
  197. /package/src/{_deprecated → deprecated}/schema/index.ts +0 -0
  198. /package/src/{_deprecated → deprecated}/schema/types.ts +0 -0
  199. /package/src/{_deprecated → deprecated}/theme.ts +0 -0
  200. /package/src/{_deprecated → deprecated}/translations.ts +0 -0
  201. /package/src/{_deprecated → deprecated}/types.ts +0 -0
@@ -1,5 +1,5 @@
1
1
  // packages/ui/react-ui-table/src/types/table.ts
2
- import { Ref, ObjectId, S, TypedObject, Expando } from "@dxos/echo-schema";
2
+ import { EchoObject, Expando, LabelAnnotationId, ObjectId, Ref, S } from "@dxos/echo-schema";
3
3
  import { ViewType } from "@dxos/schema";
4
4
  var TableSchema = S.Struct({
5
5
  id: ObjectId,
@@ -10,15 +10,13 @@ var TableSchema = S.Struct({
10
10
  Expando
11
11
  /* ThreadType */
12
12
  )))
13
+ }).annotations({
14
+ [LabelAnnotationId]: "name"
13
15
  });
14
- var TableType = class extends TypedObject({
15
- typename: "dxos.org/type/Table",
16
- version: "0.1.0"
17
- })(TableSchema.fields) {
18
- };
16
+ var TableType = TableSchema.pipe(EchoObject("dxos.org/type/Table", "0.1.0"));
19
17
 
20
18
  export {
21
19
  TableSchema,
22
20
  TableType
23
21
  };
24
- //# sourceMappingURL=chunk-3FR6NHPD.mjs.map
22
+ //# sourceMappingURL=chunk-5MKYB7NF.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/types/table.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { EchoObject, Expando, LabelAnnotationId, ObjectId, Ref, S } from '@dxos/echo-schema';\n// import { ThreadType } from '@dxos/plugin-space/types';\nimport { ViewType } from '@dxos/schema';\n\nexport const TableSchema = S.Struct({\n id: ObjectId, // TODO(burdon): Where should this be?\n name: S.optional(S.String),\n view: S.optional(Ref(ViewType)),\n // TODO(burdon): Should not import from plugin. Either factor out type or use reverse deps when supported.\n threads: S.optional(S.Array(Ref(Expando /* ThreadType */))), // TODO(dmaretskyi): Breaks edge because plugin-space depends on react-client.\n}).annotations({\n [LabelAnnotationId]: 'name',\n});\n\nexport const TableType = TableSchema.pipe(EchoObject('dxos.org/type/Table', '0.1.0'));\nexport type TableType = S.Schema.Type<typeof TableType>;\n"],
5
+ "mappings": ";AAIA,SAASA,YAAYC,SAASC,mBAAmBC,UAAUC,KAAKC,SAAS;AAEzE,SAASC,gBAAgB;AAElB,IAAMC,cAAcC,EAAEC,OAAO;EAClCC,IAAIC;EACJC,MAAMJ,EAAEK,SAASL,EAAEM,MAAM;EACzBC,MAAMP,EAAEK,SAASG,IAAIC,QAAAA,CAAAA;;EAErBC,SAASV,EAAEK,SAASL,EAAEW,MAAMH;IAAII;;EAAsB,CAAA,CAAA;AACxD,CAAA,EAAGC,YAAY;EACb,CAACC,iBAAAA,GAAoB;AACvB,CAAA;AAEO,IAAMC,YAAYhB,YAAYiB,KAAKC,WAAW,uBAAuB,OAAA,CAAA;",
6
+ "names": ["EchoObject", "Expando", "LabelAnnotationId", "ObjectId", "Ref", "S", "ViewType", "TableSchema", "S", "Struct", "id", "ObjectId", "name", "optional", "String", "view", "Ref", "ViewType", "threads", "Array", "Expando", "annotations", "LabelAnnotationId", "TableType", "pipe", "EchoObject"]
7
+ }
@@ -1,4 +1,4 @@
1
- // packages/ui/react-ui-table/src/_deprecated/translations.ts
1
+ // packages/ui/react-ui-table/src/deprecated/translations.ts
2
2
  var translationKey = "table";
3
3
  var translations_default = [
4
4
  {
@@ -21,7 +21,7 @@ var translations_default = [
21
21
  }
22
22
  ];
23
23
 
24
- // packages/ui/react-ui-table/src/_deprecated/components/Cell/CellCombobox.tsx
24
+ // packages/ui/react-ui-table/src/deprecated/components/Cell/CellCombobox.tsx
25
25
  import { CaretDown } from "@phosphor-icons/react";
26
26
  import React, { useCallback, useState } from "react";
27
27
  import { Popover, useTranslation } from "@dxos/react-ui";
@@ -90,13 +90,13 @@ var CellCombobox = ({ model, value, onValueChange }) => {
90
90
  }, label)))), /* @__PURE__ */ React.createElement(Popover.Arrow, null)));
91
91
  };
92
92
 
93
- // packages/ui/react-ui-table/src/_deprecated/components/ColumnMenu/ColumnMenu.tsx
93
+ // packages/ui/react-ui-table/src/deprecated/components/ColumnMenu/ColumnMenu.tsx
94
94
  import { X, GearSix, CaretDown as CaretDown2, ArrowDown, ArrowUp, ArrowRight, ArrowLeft } from "@phosphor-icons/react";
95
95
  import React4, { useRef as useRef2, useState as useState6, useCallback as useCallback5 } from "react";
96
96
  import { Button as Button2, Popover as Popover2, DropdownMenu } from "@dxos/react-ui";
97
97
  import { getSize as getSize2, mx as mx2 } from "@dxos/react-ui-theme";
98
98
 
99
- // packages/ui/react-ui-table/src/_deprecated/components/ColumnMenu/ColumnSettings.tsx
99
+ // packages/ui/react-ui-table/src/deprecated/components/ColumnMenu/ColumnSettings.tsx
100
100
  import React2, { useRef, useState as useState2 } from "react";
101
101
  import { FormatEnums } from "@dxos/echo-schema";
102
102
  import { Button, Input, Select, useTranslation as useTranslation2 } from "@dxos/react-ui";
@@ -214,7 +214,7 @@ var ColumnSettings = ({ column, tableDef, tablesToReference, onUpdate, onDelete,
214
214
  }, t("save label")))));
215
215
  };
216
216
 
217
- // packages/ui/react-ui-table/src/_deprecated/hooks/useColumnSizing.ts
217
+ // packages/ui/react-ui-table/src/deprecated/hooks/useColumnSizing.ts
218
218
  import { useCallback as useCallback2, useEffect, useState as useState3 } from "react";
219
219
  import { useOnTransition } from "@dxos/react-ui";
220
220
  var useColumnResizing = ({ columns, onColumnResize }) => {
@@ -247,10 +247,10 @@ var useColumnResizing = ({ columns, onColumnResize }) => {
247
247
  };
248
248
  };
249
249
 
250
- // packages/ui/react-ui-table/src/_deprecated/hooks/useColumnSorting.ts
250
+ // packages/ui/react-ui-table/src/deprecated/hooks/useColumnSorting.ts
251
251
  import { useState as useState4 } from "react";
252
252
 
253
- // packages/ui/react-ui-table/src/_deprecated/components/Table/TableContext.tsx
253
+ // packages/ui/react-ui-table/src/deprecated/components/Table/TableContext.tsx
254
254
  import React3, { useContext, createContext } from "react";
255
255
  import { raise } from "@dxos/debug";
256
256
  var TABLE_NAME = "Table";
@@ -264,7 +264,7 @@ var useTableContext = () => {
264
264
  return useContext(TableContext) ?? raise(new Error("Missing TableContext"));
265
265
  };
266
266
 
267
- // packages/ui/react-ui-table/src/_deprecated/hooks/useColumnSorting.ts
267
+ // packages/ui/react-ui-table/src/deprecated/hooks/useColumnSorting.ts
268
268
  var useColumnSorting = () => {
269
269
  const [columnSorting, setColumnSorting] = useState4([]);
270
270
  const sortColumn = (columnId, sortDirection) => {
@@ -320,7 +320,7 @@ var useSortColumn = (column) => {
320
320
  };
321
321
  };
322
322
 
323
- // packages/ui/react-ui-table/src/_deprecated/hooks/usePinLastRow.ts
323
+ // packages/ui/react-ui-table/src/deprecated/hooks/usePinLastRow.ts
324
324
  import { useCallback as useCallback3, useEffect as useEffect2, useState as useState5 } from "react";
325
325
  var usePinLastRow = (pinLastRow, table, data) => {
326
326
  const [pinnedRowKey, setPinnedRowKey] = useState5();
@@ -362,7 +362,7 @@ var usePinLastRow = (pinLastRow, table, data) => {
362
362
  ]);
363
363
  };
364
364
 
365
- // packages/ui/react-ui-table/src/_deprecated/hooks/useRowSelection.ts
365
+ // packages/ui/react-ui-table/src/deprecated/hooks/useRowSelection.ts
366
366
  import { useControllableState } from "@radix-ui/react-use-controllable-state";
367
367
  import { useCallback as useCallback4 } from "react";
368
368
  var useRowSelection = (props) => {
@@ -394,7 +394,7 @@ var useRowSelection = (props) => {
394
394
  };
395
395
  };
396
396
 
397
- // packages/ui/react-ui-table/src/_deprecated/components/ColumnMenu/ColumnMenu.tsx
397
+ // packages/ui/react-ui-table/src/deprecated/components/ColumnMenu/ColumnMenu.tsx
398
398
  var ColumnMenu = ({ column, columnOrderable, columnPosition, onColumnReorder, ...props }) => {
399
399
  const title = column.label?.length ? column.label : column.id;
400
400
  const header = props.context.header;
@@ -525,19 +525,19 @@ var SortIndicator = ({ direction, onClick }) => {
525
525
  }, icon);
526
526
  };
527
527
 
528
- // packages/ui/react-ui-table/src/_deprecated/components/Table/Table.tsx
528
+ // packages/ui/react-ui-table/src/deprecated/components/Table/Table.tsx
529
529
  import { Slot } from "@radix-ui/react-slot";
530
530
  import { getCoreRowModel, getExpandedRowModel, getGroupedRowModel, getSortedRowModel, useReactTable } from "@tanstack/react-table";
531
531
  import React8, { Fragment, memo, useCallback as useCallback7, useEffect as useEffect3, useState as useState8, useContext as useContext3 } from "react";
532
532
  import { useDefaultValue } from "@dxos/react-ui";
533
533
  import { mx as mx4 } from "@dxos/react-ui-theme";
534
534
 
535
- // packages/ui/react-ui-table/src/_deprecated/components/Table/TableBody.tsx
535
+ // packages/ui/react-ui-table/src/deprecated/components/Table/TableBody.tsx
536
536
  import { useArrowNavigationGroup } from "@fluentui/react-tabster";
537
537
  import { flexRender } from "@tanstack/react-table";
538
538
  import React6, { useContext as useContext2 } from "react";
539
539
 
540
- // packages/ui/react-ui-table/src/_deprecated/components/Table/TableRootContext.ts
540
+ // packages/ui/react-ui-table/src/deprecated/components/Table/TableRootContext.ts
541
541
  import { useVirtualizer } from "@tanstack/react-virtual";
542
542
  import { createContext as createContext2, useRef as useRef3, useState as useState7 } from "react";
543
543
  var useTableRootContext = () => {
@@ -566,7 +566,7 @@ var useTableRootContext = () => {
566
566
  };
567
567
  var TableRootContext = createContext2({});
568
568
 
569
- // packages/ui/react-ui-table/src/_deprecated/theme.ts
569
+ // packages/ui/react-ui-table/src/deprecated/theme.ts
570
570
  import { focusRing, ghostSelected, ghostSelectedCurrent, mx as mx3 } from "@dxos/react-ui-theme";
571
571
  var currentRow = "!bg-neutral-75 !dark:bg-neutral-850";
572
572
  var selectedRow = "!bg-primary-100 dark:!bg-primary-700";
@@ -588,7 +588,7 @@ var tbodyRoot = (_props, ...etc) => mx3(...etc);
588
588
  var tbodyTr = ({ canBeCurrent, isPinned }, ...etc) => mx3("group", canBeCurrent ? ghostSelectedCurrent : ghostSelected, canBeCurrent && focusRing, canBeCurrent && "cursor-pointer", isPinned && "sticky z-1 block-end-0", isPinned && stickyRowColors, ...etc);
589
589
  var tdRoot = ({ border, isGrid, pinned }, ...etc) => mx3("relative", "focus-within:!bg-neutral-50 dark:focus-within:!bg-neutral-900", flushPadding, border && "border-b border-l last:border-r border-neutral-200 dark:border-neutral-700", pinned && "border-t", isGrid && gridCellFocusRing, ...etc);
590
590
 
591
- // packages/ui/react-ui-table/src/_deprecated/components/Cell/Cell.tsx
591
+ // packages/ui/react-ui-table/src/deprecated/components/Cell/Cell.tsx
592
592
  import { useFocusableGroup } from "@fluentui/react-tabster";
593
593
  import React5, { useCallback as useCallback6 } from "react";
594
594
  var CELL_NAME = "Cell";
@@ -657,7 +657,7 @@ var Cell = ({ cell, children }) => {
657
657
  };
658
658
  Cell.displayName = CELL_NAME;
659
659
 
660
- // packages/ui/react-ui-table/src/_deprecated/components/Table/TableBody.tsx
660
+ // packages/ui/react-ui-table/src/deprecated/components/Table/TableBody.tsx
661
661
  var TABLE_BODY_NAME = "TableBody";
662
662
  var TableBody = ({ rows }) => {
663
663
  const { table, keyAccessor, currentDatum, debug, expand, isGrid, onDatumClick } = useTableContext();
@@ -710,7 +710,7 @@ var TableBody = ({ rows }) => {
710
710
  };
711
711
  TableBody.displayName = TABLE_BODY_NAME;
712
712
 
713
- // packages/ui/react-ui-table/src/_deprecated/components/Table/TableHead.tsx
713
+ // packages/ui/react-ui-table/src/deprecated/components/Table/TableHead.tsx
714
714
  import { flexRender as flexRender2 } from "@tanstack/react-table";
715
715
  import React7 from "react";
716
716
  import { defaultSizeCol } from "@dxos/react-ui-grid";
@@ -756,7 +756,7 @@ var TableHead = (_props) => {
756
756
  };
757
757
  TableHead.displayName = TABLE_HEAD_NAME;
758
758
 
759
- // packages/ui/react-ui-table/src/_deprecated/components/Table/Table.tsx
759
+ // packages/ui/react-ui-table/src/deprecated/components/Table/Table.tsx
760
760
  var TableRoot = ({ children }) => {
761
761
  const contextValue = useTableRootContext();
762
762
  return /* @__PURE__ */ React8.createElement(TableRootContext.Provider, {
@@ -956,7 +956,7 @@ var Table = {
956
956
  Main: TablePrimitive
957
957
  };
958
958
 
959
- // packages/ui/react-ui-table/src/_deprecated/helpers.tsx
959
+ // packages/ui/react-ui-table/src/deprecated/helpers.tsx
960
960
  import { useFocusFinders } from "@fluentui/react-tabster";
961
961
  import { Check, ClipboardText, X as X2 } from "@phosphor-icons/react";
962
962
  import { createColumnHelper } from "@tanstack/react-table";
@@ -967,7 +967,7 @@ import { log } from "@dxos/log";
967
967
  import { Input as Input2, Tooltip } from "@dxos/react-ui";
968
968
  import { defaultSizeRow } from "@dxos/react-ui-grid";
969
969
  import { getSize as getSize3, mx as mx5 } from "@dxos/react-ui-theme";
970
- var __dxlog_file = "/home/runner/work/dxos/dxos/packages/ui/react-ui-table/src/_deprecated/helpers.tsx";
970
+ var __dxlog_file = "/home/runner/work/dxos/dxos/packages/ui/react-ui-table/src/deprecated/helpers.tsx";
971
971
  var createColumnBuilder = () => ({
972
972
  helper: createColumnHelper(),
973
973
  builder: new ColumnBuilder()
@@ -1391,7 +1391,7 @@ var ColumnBuilder = class {
1391
1391
  }
1392
1392
  };
1393
1393
 
1394
- // packages/ui/react-ui-table/src/_deprecated/schema/column-utils.ts
1394
+ // packages/ui/react-ui-table/src/deprecated/schema/column-utils.ts
1395
1395
  import { TypeEnum } from "@dxos/echo-schema";
1396
1396
  import { FormatEnum } from "@dxos/echo-schema";
1397
1397
  import { mapSchemaToFields } from "@dxos/schema";
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../../src/_deprecated/translations.ts", "../../../../src/_deprecated/components/Cell/CellCombobox.tsx", "../../../../src/_deprecated/components/ColumnMenu/ColumnMenu.tsx", "../../../../src/_deprecated/components/ColumnMenu/ColumnSettings.tsx", "../../../../src/_deprecated/hooks/useColumnSizing.ts", "../../../../src/_deprecated/hooks/useColumnSorting.ts", "../../../../src/_deprecated/components/Table/TableContext.tsx", "../../../../src/_deprecated/hooks/usePinLastRow.ts", "../../../../src/_deprecated/hooks/useRowSelection.ts", "../../../../src/_deprecated/components/Table/Table.tsx", "../../../../src/_deprecated/components/Table/TableBody.tsx", "../../../../src/_deprecated/components/Table/TableRootContext.ts", "../../../../src/_deprecated/theme.ts", "../../../../src/_deprecated/components/Cell/Cell.tsx", "../../../../src/_deprecated/components/Table/TableHead.tsx", "../../../../src/_deprecated/helpers.tsx", "../../../../src/_deprecated/schema/column-utils.ts"],
3
+ "sources": ["../../../../src/deprecated/translations.ts", "../../../../src/deprecated/components/Cell/CellCombobox.tsx", "../../../../src/deprecated/components/ColumnMenu/ColumnMenu.tsx", "../../../../src/deprecated/components/ColumnMenu/ColumnSettings.tsx", "../../../../src/deprecated/hooks/useColumnSizing.ts", "../../../../src/deprecated/hooks/useColumnSorting.ts", "../../../../src/deprecated/components/Table/TableContext.tsx", "../../../../src/deprecated/hooks/usePinLastRow.ts", "../../../../src/deprecated/hooks/useRowSelection.ts", "../../../../src/deprecated/components/Table/Table.tsx", "../../../../src/deprecated/components/Table/TableBody.tsx", "../../../../src/deprecated/components/Table/TableRootContext.ts", "../../../../src/deprecated/theme.ts", "../../../../src/deprecated/components/Cell/Cell.tsx", "../../../../src/deprecated/components/Table/TableHead.tsx", "../../../../src/deprecated/helpers.tsx", "../../../../src/deprecated/schema/column-utils.ts"],
4
4
  "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nexport const translationKey = 'table';\n\nexport default [\n {\n 'en-US': {\n [translationKey]: {\n 'no selection label': ' ',\n 'number column type label': 'Number',\n 'boolean column type label': 'Boolean',\n 'date column type label': 'Date',\n 'string column type label': 'Text',\n 'ref column type label': 'Reference',\n 'digits label': 'Decimal places',\n 'save label': 'Save',\n 'delete label': 'Delete',\n 'column label label': 'Label',\n 'property key label': 'Property',\n 'column type label': 'Type',\n },\n },\n },\n];\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { CaretDown } from '@phosphor-icons/react';\nimport { type RowData } from '@tanstack/react-table';\nimport React, { useCallback, useState } from 'react';\n\nimport { Popover, useTranslation } from '@dxos/react-ui';\nimport { PopoverCombobox } from '@dxos/react-ui-searchlist';\nimport { descriptionText, getSize, mx, staticPlaceholderText } from '@dxos/react-ui-theme';\n\nimport { type SearchListQueryModel } from '../../helpers';\nimport { translationKey } from '../../translations';\n\nexport type ComboboxCellItems<TData extends RowData> = Record<string, { label: string; data: TData }>;\n\nconst initialItems = <TData extends RowData>(model: SearchListQueryModel<TData>, value?: TData) =>\n value\n ? {\n [model.getId(value)]: { label: model.getText(value), data: value },\n }\n : {};\n\nexport const CellCombobox = <TData extends RowData>({\n model,\n value,\n onValueChange,\n}: {\n model: SearchListQueryModel<TData>;\n value: TData;\n onValueChange: (value: TData) => void;\n}) => {\n const { t } = useTranslation(translationKey);\n const [items, setItems] = useState<ComboboxCellItems<TData>>(initialItems(model, value));\n const [loading, setLoading] = useState(false);\n const [searchInputValue, setSearchInputValue] = useState('');\n const handleSearchInputValueChange = async (text?: string) => {\n setSearchInputValue(text ?? '');\n setLoading(true);\n const items = await model.query(text);\n setItems(\n items.reduce(\n (acc: ComboboxCellItems<TData>, item) => {\n acc[model.getId(item)] = {\n label: model.getText(item),\n data: item,\n };\n return acc;\n },\n initialItems(model, value),\n ),\n );\n setLoading(false);\n };\n\n const handleValueChange = useCallback(\n (id: string) => {\n onValueChange(items[id]?.data);\n },\n [items, onValueChange],\n );\n\n return (\n <PopoverCombobox.Root placeholder={t('no selection label')}>\n <PopoverCombobox.Trigger variant='ghost' classNames='is-full rounded-none ring-inset'>\n {value ? (\n <>\n <span\n className={mx(\n 'font-normal text-start text-baseText flex-1 min-is-0 truncate mie-2',\n !value && staticPlaceholderText,\n )}\n >\n {model.getText(value)}\n </span>\n <CaretDown weight='bold' className={getSize(3)} />\n </>\n ) : null}\n </PopoverCombobox.Trigger>\n <PopoverCombobox.Content shouldFilter={false} classNames='is-[--radix-popover-trigger-width]'>\n <PopoverCombobox.Input value={searchInputValue} onValueChange={handleSearchInputValueChange} />\n <PopoverCombobox.List>\n {searchInputValue.length < 1 ? (\n <p className={mx('text-center', descriptionText)}>Start typing to search</p>\n ) : loading ? (\n <p className={mx('text-center', descriptionText)}>Searching…</p>\n ) : (\n <>\n <PopoverCombobox.Empty classNames={['text-center', descriptionText]}>No results</PopoverCombobox.Empty>\n {Object.entries(items).map(([id, { label }]) => (\n <PopoverCombobox.Item key={id} value={id} onSelect={handleValueChange} classNames='truncate'>\n {label}\n </PopoverCombobox.Item>\n ))}\n </>\n )}\n </PopoverCombobox.List>\n <Popover.Arrow />\n </PopoverCombobox.Content>\n </PopoverCombobox.Root>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { X, GearSix, CaretDown, ArrowDown, ArrowUp, ArrowRight, ArrowLeft } from '@phosphor-icons/react';\nimport { type SortDirection, type HeaderContext, type RowData } from '@tanstack/react-table';\nimport React, { useRef, useState, useCallback } from 'react';\n\nimport { Button, Popover, DropdownMenu } from '@dxos/react-ui';\nimport { getSize, mx } from '@dxos/react-ui-theme';\n\nimport { ColumnSettings } from './ColumnSettings';\nimport { useSortColumn } from '../../hooks';\nimport { type TableDef, type ColumnDef } from '../../schema';\n\nexport type ColumnMenuProps<TData extends RowData, TValue> = {\n context: HeaderContext<TData, TValue>;\n tablesToReference: TableDef[];\n tableDef: TableDef;\n column: ColumnDef;\n columnOrderable: boolean;\n columnPosition: 'start' | 'end' | undefined;\n onColumnReorder: (columnId: string, direction: 'left' | 'right') => void;\n onUpdate?: (id: string, column: ColumnDef) => void;\n onDelete?: (id: string) => void;\n};\n\n/**\n * @deprecated\n */\nexport const ColumnMenu = <TData extends RowData, TValue>({\n column,\n columnOrderable,\n columnPosition,\n onColumnReorder,\n ...props\n}: ColumnMenuProps<TData, TValue>) => {\n const title = column.label?.length ? column.label : column.id;\n const header = props.context.header;\n\n const { canSort, sortDirection, onSelectSort, onToggleSort, onClearSort } = useSortColumn(header.column);\n\n const columnSettingsAnchorRef = useRef<any>(null);\n\n const [isColumnSettingsOpen, setIsColumnSettingsOpen] = useState(false);\n\n const shouldPreventFocusOnClose = useRef(false);\n\n const onOpenColumnSettings = useCallback(() => {\n shouldPreventFocusOnClose.current = true;\n setIsColumnSettingsOpen(true);\n }, [shouldPreventFocusOnClose, setIsColumnSettingsOpen]); // setIsColumnSettingsOpen is a dependency\n\n const onDropdownCloseAutoFocus = useCallback(\n (event: Event) => {\n if (shouldPreventFocusOnClose.current) {\n event.preventDefault();\n shouldPreventFocusOnClose.current = false;\n }\n },\n [shouldPreventFocusOnClose],\n );\n\n return (\n <div className='flex items-center justify-between'>\n <div className='flex items-center gap-1 truncate' title={title}>\n <SortIndicator direction={sortDirection} onClick={onToggleSort} />\n <div className='truncate'>{title}</div>\n </div>\n\n <DropdownMenu.Root modal={false}>\n <Popover.Root open={isColumnSettingsOpen} onOpenChange={setIsColumnSettingsOpen} modal={false}>\n <DropdownMenu.Trigger ref={columnSettingsAnchorRef} asChild>\n <Popover.Anchor asChild>\n <Button variant='ghost' data-testid='table.column-menu'>\n <CaretDown className={getSize(4)} />\n </Button>\n </Popover.Anchor>\n </DropdownMenu.Trigger>\n\n <DropdownMenu.Portal>\n <DropdownMenu.Content onCloseAutoFocus={onDropdownCloseAutoFocus} sideOffset={4} collisionPadding={8}>\n <DropdownMenu.Viewport>\n {canSort && (\n <>\n <DropdownMenu.Item onClick={() => onSelectSort('asc')}>\n <span className='grow'>Sort ascending</span>\n <span className='opacity-50'>\n <ArrowUp className={getSize(4)} />\n </span>\n </DropdownMenu.Item>\n <DropdownMenu.Item onClick={() => onSelectSort('desc')}>\n <span className='grow'>Sort descending</span>\n <span className='opacity-50'>\n <ArrowDown className={getSize(4)} />\n </span>\n </DropdownMenu.Item>\n {sortDirection && (\n <DropdownMenu.Item onClick={onClearSort}>\n <span className='grow'>Clear sort</span>\n <span className='opacity-50'>\n <X className={getSize(4)} />\n </span>\n </DropdownMenu.Item>\n )}\n </>\n )}\n\n {columnOrderable && (\n <>\n {columnPosition !== 'start' && (\n <DropdownMenu.Item onClick={() => onColumnReorder(header.column.id, 'left')}>\n <span className='grow'>Move left</span>\n <span className='opacity-50'>\n <ArrowLeft className={mx(getSize(4))} />\n </span>\n </DropdownMenu.Item>\n )}\n {columnPosition !== 'end' && (\n <DropdownMenu.Item onClick={() => onColumnReorder(header.column.id, 'right')}>\n <span className='grow'>Move right</span>\n <span className='opacity-50'>\n <ArrowRight className={mx(getSize(4))} />\n </span>\n </DropdownMenu.Item>\n )}\n </>\n )}\n\n <DropdownMenu.Item onClick={onOpenColumnSettings} data-testid='table.open-column-settings'>\n <span className='grow'>Column settings</span>\n <span className='opacity-50'>\n <GearSix className={mx(getSize(4), 'rotate-90')} />\n </span>\n </DropdownMenu.Item>\n </DropdownMenu.Viewport>\n <DropdownMenu.Arrow />\n </DropdownMenu.Content>\n </DropdownMenu.Portal>\n\n <Popover.Portal>\n <Popover.Content>\n <Popover.Viewport>\n <ColumnSettings {...props} column={column} onClose={() => setIsColumnSettingsOpen(false)} />\n </Popover.Viewport>\n <Popover.Arrow />\n </Popover.Content>\n </Popover.Portal>\n </Popover.Root>\n </DropdownMenu.Root>\n </div>\n );\n};\n\nexport const SortIndicator = ({\n direction,\n onClick,\n}: {\n direction: SortDirection | undefined;\n onClick: (e: any) => void;\n}) => {\n if (direction === undefined) {\n return null;\n }\n\n let icon;\n\n switch (direction) {\n case 'asc':\n icon = <ArrowUp className={getSize(3)} />;\n break;\n case 'desc':\n icon = <ArrowDown className={getSize(3)} />;\n break;\n }\n\n return (\n <div onClick={onClick} className='flex items-center cursor-pointer'>\n {icon}\n </div>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useRef, useState } from 'react';\n\nimport { FormatEnums, type TypeEnum } from '@dxos/echo-schema';\nimport { Button, Input, Select, useTranslation } from '@dxos/react-ui';\nimport { safeParseInt } from '@dxos/util';\n\nimport { type TableDef, type ColumnDef } from '../../schema';\nimport { translationKey } from '../../translations';\n\nexport type ColumnSettingsProps = {\n column: ColumnDef;\n tableDef: TableDef;\n // TODO(burdon): Rename.\n tablesToReference: TableDef[];\n onUpdate?: (id: string, column: ColumnDef) => void;\n onDelete?: (id: string) => void;\n onClose?: () => void;\n};\n\n/**\n * @deprecated\n */\nexport const ColumnSettings = ({\n column,\n tableDef,\n tablesToReference,\n onUpdate,\n onDelete,\n onClose,\n}: ColumnSettingsProps) => {\n const { t } = useTranslation(translationKey);\n const propRef = useRef<HTMLInputElement>(null);\n const [formState, setFormState] = useState({\n prop: column.id,\n refTable: column.refTable,\n refProp: column.refProp,\n type: String(column.type),\n label: column.label,\n digits: String(column.digits ?? '0'),\n });\n\n const handleSave = () => {\n const { prop, refTable, refProp, type, label, digits } = formState;\n\n // Check valid.\n if (!prop.length || !prop.match(/^[a-zA-Z_].+/i)) {\n propRef.current?.focus();\n return;\n }\n\n // If already exists then check same type.\n const current = tableDef.columns.find((c) => c.id !== column.id && c.id === prop);\n if (current) {\n // TODO(burdon): Allow multiple columns with different refProps. Ensure correct table prop is updated.\n if (current.type !== 'ref' /* || current.ref !== refTable */) {\n // TODO(burdon): Show error.\n propRef.current?.focus();\n return;\n }\n }\n\n onUpdate?.(column.id, {\n id: prop, // TODO(burdon): Make unique.\n prop,\n label,\n type: type as TypeEnum,\n refTable,\n refProp,\n digits: safeParseInt(digits),\n });\n onClose?.();\n };\n\n const handleDelete = () => {\n onDelete?.(column.id);\n onClose?.();\n };\n\n // TODO(burdon): Standardize dialog/popup.\n return (\n <div className='flex flex-col w-full gap-4'>\n <div className='flex flex-col gap-2'>\n <Input.Root>\n <Input.Label>{t('column label label')}</Input.Label>\n <Input.TextInput\n placeholder='Column label'\n value={formState.label ?? ''}\n onChange={(event) => setFormState((prevState) => ({ ...prevState, label: event.target.value }))}\n autoFocus\n data-testid='table.column-settings.label'\n />\n </Input.Root>\n\n <Input.Root>\n <Input.Label>{t('property key label')}</Input.Label>\n <Input.TextInput\n ref={propRef}\n placeholder='Property key'\n value={formState.prop ?? ''}\n onChange={(event) =>\n setFormState((prevState) => ({ ...prevState, prop: event.target.value.replace(/[^\\w_]/g, '') }))\n }\n />\n </Input.Root>\n\n <Input.Root>\n <Input.Label>{t('column type label')}</Input.Label>\n <Select.Root\n value={formState.type}\n onValueChange={(value) => setFormState((prevState) => ({ ...prevState, type: value }))}\n >\n <Select.TriggerButton classNames='is-full' placeholder='Type' />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n {FormatEnums.map((type) => (\n <Select.Option key={type} value={type}>\n {t(`${type} column type label`)}\n </Select.Option>\n ))}\n </Select.Viewport>\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n </Input.Root>\n\n {formState.type === 'number' && (\n <Input.Root>\n <Input.Label>{t('digits label')}</Input.Label>\n <Input.TextInput\n value={formState.digits ?? ''}\n onChange={(event) => setFormState((prevState) => ({ ...prevState, digits: event.target.value }))}\n />\n </Input.Root>\n )}\n\n {formState.type === 'ref' && (\n <>\n <Input.Root>\n <Input.Label>Table</Input.Label>\n <Select.Root\n value={formState.refTable}\n onValueChange={(value) => setFormState((prevState) => ({ ...prevState, refTable: value }))}\n >\n <Select.TriggerButton placeholder='Table' classNames='is-full' />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n {tablesToReference\n .filter((t) => t.id !== tableDef.id)\n .map(({ id, name }) => (\n <Select.Option key={id} value={id}>\n {name ?? id}\n </Select.Option>\n ))}\n </Select.Viewport>\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n </Input.Root>\n\n {formState.refTable && (\n <Input.Root>\n <Input.Label>Table property</Input.Label>\n <Select.Root\n value={formState.refProp}\n onValueChange={(value) => setFormState((prevState) => ({ ...prevState, refProp: value }))}\n >\n <Select.TriggerButton placeholder='Property' />\n <Select.Portal>\n <Select.Content>\n <Select.Viewport>\n {tablesToReference\n .find((tableDef) => tableDef.id === formState.refTable)\n ?.columns.map(({ id, label }) => (\n <Select.Option key={id} value={id}>\n {label ?? id}\n </Select.Option>\n ))}\n </Select.Viewport>\n </Select.Content>\n </Select.Portal>\n </Select.Root>\n </Input.Root>\n )}\n </>\n )}\n </div>\n\n <div>\n {/* TODO(burdon): Change delete to cancel. Delete should be menu item. */}\n <div className='flex flex-row justify-end gap-1'>\n <Button onClick={handleDelete} data-testid='table.column-settings.delete'>\n {t('delete label')}\n </Button>\n <Button variant='primary' onClick={handleSave} data-testid='table.column-settings.save'>\n {t('save label')}\n </Button>\n </div>\n </div>\n </div>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { type ColumnSizingInfoState, type ColumnSizingState } from '@tanstack/react-table';\nimport { useCallback, useEffect, useState } from 'react';\n\nimport { useOnTransition } from '@dxos/react-ui';\n\nimport { type TableColumnDef } from '../types';\n\nexport const useColumnResizing = ({\n columns,\n onColumnResize,\n}: {\n columns: TableColumnDef<any>[];\n onColumnResize: ((state: Record<string, number>) => void) | undefined;\n}) => {\n const [columnsInitialised, setColumnsInitialised] = useState(false);\n const [columnSizing, setColumnSizing] = useState<ColumnSizingState>({});\n\n useEffect(() => {\n if (columnsInitialised) {\n return;\n }\n\n setColumnSizing(\n columns\n .filter((column) => !!column.size && (column as any).prop !== undefined)\n .reduce<ColumnSizingState>((state, column) => {\n state[(column as any).prop] = column.size!;\n return state;\n }, {}),\n );\n\n setColumnsInitialised(true);\n }, [columns, setColumnSizing]);\n\n const [columnSizingInfo, setColumnSizingInfo] = useState<ColumnSizingInfoState>({} as ColumnSizingInfoState);\n\n // Notify on column resize.\n const notifyColumnResize = useCallback(() => onColumnResize?.(columnSizing), [onColumnResize, columnSizing]);\n useOnTransition(columnSizingInfo.isResizingColumn, (v) => typeof v === 'string', false, notifyColumnResize);\n\n return { columnSizing, columnSizingInfo, setColumnSizing, setColumnSizingInfo };\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { type SortDirection, type Column, type ColumnSort } from '@tanstack/react-table';\nimport { useState } from 'react';\n\nimport { useTableContext } from '../components/Table/TableContext';\n\nexport const useColumnSorting = () => {\n const [columnSorting, setColumnSorting] = useState<ColumnSort[]>([]);\n\n const sortColumn = (columnId: string, sortDirection: SortDirection) => {\n setColumnSorting([{ id: columnId, desc: sortDirection === 'desc' }]);\n };\n\n const clearColumnSorting = () => {\n setColumnSorting([]);\n };\n\n return { sorting: columnSorting, sortColumn, clearColumnSorting };\n};\n\nexport type ColumnSorting = ReturnType<typeof useColumnSorting>;\n\nexport const useSortColumn = (column: Column<any>) => {\n const { sorting, sortColumn, clearColumnSorting } = useTableContext();\n const [initialSortDirection, setInitialSortDirection] = useState<SortDirection | undefined>();\n\n const columnSort = sorting.find((s) => s.id === column.id);\n const sortDirection = columnSort ? (columnSort.desc ? ('desc' as const) : ('asc' as const)) : undefined;\n\n const canSort = column.getCanSort();\n\n const updateColumnSort = (direction: SortDirection) => {\n sortColumn(column.id, direction);\n };\n\n // Whichever sort is explicitly set first, will be the first sort direction\n // When toggling, we always go to the other direction, and then to unsorted.\n const onToggleSort = () => {\n if (sortDirection === undefined) {\n return;\n }\n\n if (sortDirection === initialSortDirection) {\n updateColumnSort(initialSortDirection === 'asc' ? 'desc' : 'asc');\n } else {\n clearColumnSorting();\n }\n };\n\n const onSelectSort = (direction: SortDirection) => {\n clearColumnSorting();\n setInitialSortDirection(direction);\n updateColumnSort(direction);\n };\n\n const onClearSort = () => {\n clearColumnSorting();\n };\n\n return { canSort, sortDirection, onSelectSort, onToggleSort, onClearSort };\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { type RowData } from '@tanstack/react-table';\nimport React, {\n useContext,\n createContext,\n type Context,\n type JSX,\n type PropsWithChildren,\n type ReactNode,\n} from 'react';\n\nimport { raise } from '@dxos/debug';\n\nimport { type TableContextValue } from './props';\n\nexport const TABLE_NAME = 'Table';\n\nconst TableContext = createContext<TableContextValue<RowData> | undefined>(undefined);\n\nexport type TypedTableProvider<TData extends RowData> = {\n (props: TableContextValue<TData> & { children: ReactNode }): JSX.Element;\n displayName: string;\n};\n\nexport const TableProvider = ({ children, ...value }: PropsWithChildren<TableContextValue<RowData>>) => {\n return <TableContext.Provider value={value}>{children}</TableContext.Provider>;\n};\n\nexport const useTableContext = <TData extends RowData>(): TableContextValue<TData> => {\n return useContext(TableContext as Context<TableContextValue<TData>>) ?? raise(new Error('Missing TableContext'));\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { type Row, type Table } from '@tanstack/react-table';\nimport { useCallback, useEffect, useState } from 'react';\n\nexport const usePinLastRow = (pinLastRow: boolean | undefined, table: Table<any>, data: any[]) => {\n const [pinnedRowKey, setPinnedRowKey] = useState<string>();\n\n const pinRow = useCallback(\n (rowToPin: Row<any>) => {\n table.resetRowPinning();\n rowToPin.pin('bottom');\n setPinnedRowKey(rowToPin.id);\n },\n [table],\n );\n\n const clearRowPinning = useCallback(() => {\n table.resetRowPinning();\n setPinnedRowKey(undefined);\n }, [table]);\n\n // Define the logic for pinning the last row in a callback.\n const pinLastRowCallback = useCallback(() => {\n const rows = table.getRowModel().rows;\n\n if (rows.length === 0) {\n return clearRowPinning();\n }\n\n const lastRow = rows[rows.length - 1];\n if (lastRow.id === pinnedRowKey) {\n return;\n }\n\n pinRow(lastRow);\n }, [table, pinnedRowKey]);\n\n // Effect to handle pinning logic when data changes.\n useEffect(() => {\n if (pinLastRow) {\n pinLastRowCallback();\n }\n }, [data, pinLastRow, pinLastRowCallback]);\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { useControllableState } from '@radix-ui/react-use-controllable-state';\nimport { type OnChangeFn, type RowSelectionState } from '@tanstack/react-table';\nimport { useCallback } from 'react';\n\nimport { type TableProps } from '../components/Table';\n\nexport const useRowSelection = (\n props: Pick<\n TableProps<any>,\n 'rowsSelectable' | 'defaultRowSelection' | 'rowSelection' | 'onRowSelectionChange' | 'rowsSelectable'\n >,\n) => {\n const [rowSelection = {}, setRowSelection] = useControllableState({\n prop: props.rowSelection,\n onChange: props.onRowSelectionChange,\n defaultProp: props.defaultRowSelection,\n });\n\n // TODO(thure): Does @tanstack/react-table really need this intervention? It did seem necessary to enforce single-selection...\n const handleRowSelectionChange = useCallback<OnChangeFn<RowSelectionState>>(\n (updaterOrValue) => {\n const nextRowSelection = typeof updaterOrValue === 'function' ? updaterOrValue(rowSelection) : updaterOrValue;\n if (props.rowsSelectable === 'multi') {\n setRowSelection(nextRowSelection);\n } else if (props.rowsSelectable) {\n const nextRowSelectionKey = Object.keys(nextRowSelection).filter((id) => !rowSelection[id])[0];\n setRowSelection(nextRowSelectionKey ? { [nextRowSelectionKey]: true } : {});\n } else {\n setRowSelection({});\n }\n },\n [props.rowsSelectable, setRowSelection, rowSelection],\n );\n\n return { rowSelection, handleRowSelectionChange };\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Primitive } from '@radix-ui/react-primitive';\nimport { Slot } from '@radix-ui/react-slot';\nimport {\n type GroupingState,\n type Row,\n type RowData,\n getCoreRowModel,\n getExpandedRowModel,\n getGroupedRowModel,\n getSortedRowModel,\n useReactTable,\n} from '@tanstack/react-table';\nimport React, {\n type ComponentPropsWithoutRef,\n type ReactNode,\n Fragment,\n memo,\n useCallback,\n useEffect,\n useState,\n useContext,\n} from 'react';\n\nimport { type ThemedClassName, useDefaultValue } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { TableBody } from './TableBody';\nimport { type TypedTableProvider, TableProvider as UntypedTableProvider, useTableContext } from './TableContext';\nimport { TableHead } from './TableHead';\nimport { TableRootContext, useTableRootContext } from './TableRootContext';\nimport { type TableProps } from './props';\nimport { useColumnResizing, useColumnSorting, usePinLastRow, useRowSelection } from '../../hooks';\nimport { groupTh, tableRoot } from '../../theme';\n\ntype TableRootProps = { children: ReactNode };\n\nconst TableRoot = ({ children }: TableRootProps) => {\n const contextValue = useTableRootContext();\n return <TableRootContext.Provider value={contextValue}>{children}</TableRootContext.Provider>;\n};\n\ntype TableViewportProps = ThemedClassName<ComponentPropsWithoutRef<typeof Primitive.div>> & {\n asChild?: boolean;\n};\n\nconst TableViewport = ({ children, classNames, asChild, ...props }: TableViewportProps) => {\n const { scrollContextRef } = useContext(TableRootContext);\n\n const classes = mx(classNames, 'overflow-auto');\n return asChild ? (\n <Slot ref={scrollContextRef} className={classes} {...props}>\n {children}\n </Slot>\n ) : (\n <div role='none' className={classes} ref={scrollContextRef} {...props}>\n {children}\n </div>\n );\n};\n\nexport const TablePrimitive = <TData extends RowData>(props: TableProps<TData>) => {\n const {\n role,\n header = true,\n rowsSelectable,\n debug,\n pinLastRow,\n columnVisibility,\n onColumnResize,\n onDataSelectionChange,\n } = props;\n\n const columns = useDefaultValue(props.columns, () => []);\n const incomingData = useDefaultValue(props.data, () => []);\n\n const [data, setData] = useState([...incomingData]);\n\n // Reactivity workaround: https://github.com/dxos/dxos/issues/6376.\n const forceUpdate = useCallback(() => setData([...incomingData]), [incomingData]);\n useEffect(() => forceUpdate(), [JSON.stringify(incomingData), forceUpdate]);\n\n const TableProvider = UntypedTableProvider as TypedTableProvider<TData>;\n\n const { columnSizing, setColumnSizing, columnSizingInfo, setColumnSizingInfo } = useColumnResizing({\n columns,\n onColumnResize,\n });\n\n const { rowSelection, handleRowSelectionChange } = useRowSelection(props);\n\n const [grouping, handleGroupingChange] = useState<GroupingState>(props.grouping ?? []);\n useEffect(() => handleGroupingChange(props.grouping ?? []), [handleGroupingChange, props.grouping]);\n\n const columnSorting = useColumnSorting();\n\n const table = useReactTable({\n // Data\n meta: {},\n data,\n\n // Columns\n columns,\n defaultColumn: {\n size: 400, // Required in order remove default width.\n maxSize: 1024,\n },\n\n // State\n state: {\n columnVisibility,\n columnSizing,\n columnSizingInfo,\n sorting: columnSorting.sorting,\n rowSelection,\n grouping,\n },\n\n // Resize columns\n columnResizeMode: 'onChange',\n enableColumnResizing: true,\n onColumnSizingChange: setColumnSizing,\n onColumnSizingInfoChange: setColumnSizingInfo,\n\n // Rows\n getCoreRowModel: getCoreRowModel(),\n getSortedRowModel: getSortedRowModel(),\n getExpandedRowModel: getExpandedRowModel(),\n\n // Grouping\n getGroupedRowModel: grouping.length > 1 ? getGroupedRowModel() : undefined,\n onGroupingChange: handleGroupingChange,\n\n enableMultiRowSelection: rowsSelectable === 'multi' ? true : undefined,\n enableRowSelection: rowsSelectable === true ? true : undefined,\n\n onRowSelectionChange: handleRowSelectionChange,\n\n enableSorting: true,\n enableColumnPinning: true,\n\n // Debug\n debugTable: debug,\n });\n\n useEffect(() => {\n onDataSelectionChange?.(Object.keys(rowSelection).map((id) => table.getRowModel().rowsById[id].original));\n }, [onDataSelectionChange, rowSelection, table]);\n\n usePinLastRow(pinLastRow, table, data);\n\n // Create additional expansion column if all columns have fixed width.\n const expand = false; // columns.map((column) => column.size).filter(Boolean).length === columns?.length;\n\n return (\n <TableProvider\n {...{ ...props, ...columnSorting }}\n table={table}\n header={header}\n expand={expand}\n isGrid={role === 'grid' || role === 'treegrid'}\n >\n <TableImpl<TData> debug={false} {...props} />\n </TableProvider>\n );\n};\n\n// TODO(zan): Smush this into the Table component.\n/**\n * Pure implementation of table outside of context set-up.\n */\nconst TableImpl = <TData extends RowData>(props: TableProps<TData>) => {\n const { debug, classNames, role, grouping, fullWidth } = props;\n const { table } = useTableContext<TData>();\n\n if (debug) {\n return (\n <pre className='font-mono text-xs text-neutral-500 m-1 p-2 ring'>\n <code>{JSON.stringify(table.getState(), undefined, 2)}</code>\n </pre>\n );\n }\n\n const isResizingColumn = table.getState().columnSizingInfo.isResizingColumn;\n\n const TableComponent = isResizingColumn ? MemoizedVirtualizedTableContent : VirtualizedTableContent;\n\n return (\n <table\n role={role}\n className={tableRoot(props, classNames)}\n style={{\n // borderCollapse: 'separate',\n borderSpacing: 0,\n ...(!fullWidth && { width: table.getTotalSize() }),\n }}\n >\n <TableHead />\n\n {grouping?.length !== 0 ? <TableComponent /> : <GroupedTableContent />}\n </table>\n );\n};\n\nconst VirtualizedTableContent = () => {\n const { table } = useTableContext();\n const { virtualizer, dispatch } = useContext(TableRootContext);\n\n const centerRows = table.getCenterRows();\n let pinnedRows = [] as Row<unknown>[];\n\n useEffect(() => {\n dispatch({ type: 'updateTableCount', count: centerRows.length });\n }, [centerRows.length]);\n\n try {\n // TODO(zan): Work out how to sync the row pinning with rendering\n // This is a hack because the first call to this function after a row is deleted will throw an error\n // because the row index is no longer in the table\n // The pin last row hook updates the pinned row key after the row is deleted\n pinnedRows = table.getBottomRows();\n } catch (_) {} // Ignore error\n\n const { getTotalSize, getVirtualItems } = virtualizer;\n\n const virtualRows = getVirtualItems();\n const totalSize = getTotalSize();\n\n const paddingTop = virtualRows.length > 0 ? virtualRows?.[0]?.start || 0 : 0;\n const paddingBottom = virtualRows.length > 0 ? totalSize - (virtualRows?.[virtualRows.length - 1]?.end || 0) : 0;\n\n const rowsToRender = [...virtualRows.map((virtualRow) => centerRows[virtualRow.index]), ...pinnedRows].filter(\n (r) => !!r,\n );\n\n return (\n <Fragment>\n {paddingTop > 0 && (\n <tbody role='none'>\n <tr role='none'>\n <td style={{ height: `${paddingTop}px` }} role='none' />\n </tr>\n </tbody>\n )}\n <TableBody rows={rowsToRender} />\n {paddingBottom > 0 && (\n <tbody role='none'>\n <tr role='none'>\n <td style={{ height: `${paddingBottom}px` }} role='none' />\n </tr>\n </tbody>\n )}\n </Fragment>\n );\n};\n\nexport const MemoizedVirtualizedTableContent = memo(VirtualizedTableContent);\n\nconst GroupedTableContent = () => {\n const {\n table: { getGroupedRowModel, getHeaderGroups, getState },\n debug,\n } = useTableContext();\n\n return (\n <>\n {getGroupedRowModel().rows.map((row, i) => {\n return (\n <Fragment key={i}>\n {/* TODO(burdon): Customize group header renderer. */}\n <thead>\n <tr>\n {debug && <th />}\n <th\n // TODO(burdon): Calculate row span.\n colSpan={getHeaderGroups()[0].headers.length}\n className={groupTh({})}\n >\n {getState().grouping[0]}[{String(row.getGroupingValue(getState().grouping[0]))}]\n </th>\n </tr>\n </thead>\n <TableBody rows={row.subRows} />\n </Fragment>\n );\n })}\n </>\n );\n};\n\n// TODO(burdon): Floating \"add row\" jumps by 1 pixel on scroll.\n// TODO(burdon): Blue focus highlight is clipped by 1px on the left.\n// TODO(burdon): Focused row and focus ring passes over the sticky header.\nexport const Table = {\n Root: TableRoot,\n Viewport: TableViewport,\n Main: TablePrimitive,\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { useArrowNavigationGroup } from '@fluentui/react-tabster';\nimport { flexRender, type Row, type RowData } from '@tanstack/react-table';\nimport React, { useContext } from 'react';\n\nimport { useTableContext } from './TableContext';\nimport { TableRootContext } from './TableRootContext';\nimport { tbodyTr } from '../../theme';\nimport { Cell } from '../Cell/Cell';\n\nconst TABLE_BODY_NAME = 'TableBody';\n\ntype TableBodyProps = {\n rows: Row<RowData>[];\n};\n\nconst TableBody = ({ rows }: TableBodyProps) => {\n const { table, keyAccessor, currentDatum, debug, expand, isGrid, onDatumClick } = useTableContext();\n\n const rowSelection = table.getState().rowSelection;\n const arrowNavigationAttrs = useArrowNavigationGroup({ axis: 'grid' });\n const canBeCurrent = !isGrid && !!onDatumClick;\n\n const { virtualizer } = useContext(TableRootContext);\n\n return (\n <tbody {...(isGrid && arrowNavigationAttrs)}>\n {rows.map((row) => {\n const isCurrent = currentDatum === row.original;\n const isSelected = rowSelection?.[row.id];\n\n const isPinned = row.getIsPinned();\n\n const classNames = tbodyTr({ canBeCurrent, isPinned: isPinned !== false });\n\n return (\n <tr\n key={keyAccessor ? keyAccessor(row.original) : row.id}\n className={classNames}\n data-index={row.index}\n data-testid={'table.data-row'}\n ref={virtualizer.measureElement}\n {...(isCurrent && { 'aria-current': 'location' })}\n {...(isSelected && { 'aria-selected': 'true' })}\n {...(canBeCurrent && {\n tabIndex: 0,\n onClick: () => {\n onDatumClick(row.original);\n },\n onKeyUp: ({ key }) => {\n if (key === 'Enter' || key === ' ') {\n onDatumClick(row.original);\n }\n },\n })}\n >\n {debug && <td>{row.id}</td>}\n\n {row.getVisibleCells().map((cell) => {\n return (\n <Cell key={cell.id} cell={cell}>\n {flexRender(cell.column.columnDef.cell, { ...cell.getContext() })}\n </Cell>\n );\n })}\n\n {expand && <td />}\n </tr>\n );\n })}\n </tbody>\n );\n};\n\nTableBody.displayName = TABLE_BODY_NAME;\n\nexport { TableBody };\n\nexport type { TableBodyProps };\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { useVirtualizer } from '@tanstack/react-virtual';\nimport { createContext, useRef, useState } from 'react';\n\ntype TableRootContextActions = { type: 'updateTableCount'; count: number };\n\nexport const useTableRootContext = () => {\n const scrollContextRef = useRef<HTMLDivElement>(null);\n const [tableCount, setTableCount] = useState(0);\n\n const virtualizer = useVirtualizer({\n getScrollElement: () => scrollContextRef?.current ?? null,\n count: tableCount,\n overscan: 8,\n estimateSize: () => 40,\n });\n\n const dispatch = (action: TableRootContextActions) => {\n switch (action.type) {\n case 'updateTableCount':\n setTableCount(action.count);\n break;\n\n default:\n break;\n }\n };\n\n return { scrollContextRef, virtualizer, dispatch };\n};\n\nexport type TableRootContextValue = ReturnType<typeof useTableRootContext>;\n\n// Create the context without a default value.\n// The expectation is that the provider will always supply a value, so no need to define a default here.\nexport const TableRootContext = createContext<TableRootContextValue>({} as TableRootContextValue);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { focusRing, ghostSelected, ghostSelectedCurrent, mx } from '@dxos/react-ui-theme';\nimport { type ComponentFunction } from '@dxos/react-ui-types';\n\nimport { type TableContextValue, type TableFlags } from './components';\n\nexport const currentRow = '!bg-neutral-75 !dark:bg-neutral-850';\nexport const selectedRow = '!bg-primary-100 dark:!bg-primary-700';\nexport const flushPadding = 'pli-0 plb-0';\nexport const textPadding = 'pli-2 plb-0';\nexport const headPadding = 'pli-2 plb-0';\n\nexport const gridCellFocusRing =\n 'relative focus-within:outline focus-within:outline-1 outline-primary-500 outline-offset-[-1px]';\nconst borderColors = 'border-neutral-200 dark:border-neutral-700';\nconst stickyRowColors = 'bg-neutral-50 dark:bg-neutral-800';\n\nexport type TableStyleProps = Partial<TableContextValue<any>>;\n\nexport const tableRoot: ComponentFunction<TableStyleProps> = ({ fullWidth }, ...etc) =>\n mx('table-fixed', 'text-neutral-800 dark:text-neutral-200', fullWidth && 'is-full', ...etc);\n\nexport const groupTh: ComponentFunction<TableStyleProps> = (_props, ...etc) =>\n mx('text-start font-medium', flushPadding, ...etc);\n\nexport type TheadStyleProps = Partial<TableFlags>;\n\nexport const theadRoot: ComponentFunction<TheadStyleProps> = ({ header, stickyHeader }, ...etc) =>\n mx(header ? stickyHeader && 'sticky block-start-[--sticky-top] z-[1]' : 'collapse', stickyRowColors, ...etc);\n\nexport const theadTr: ComponentFunction<TheadStyleProps> = (_props, ...etc) => mx('group', ...etc);\n\nexport const theadTh: ComponentFunction<TheadStyleProps> = ({ border }, ...etc) =>\n mx(\n 'relative',\n 'text-start text-xs select-none truncate',\n headPadding,\n border && borderColors,\n border && 'border-t border-b border-l last:border-r',\n ...etc,\n );\n\nexport const theadResizeRoot: ComponentFunction<{ isResizing: boolean }> = ({ isResizing }) => {\n return mx(\n 'absolute h-full w-[4px] top-0 right-0',\n 'cursor-col-resize',\n 'user-select-none',\n 'touch-action-none',\n 'pointer-coarse:bg-neutral-100 dark:pointer-coarse:bg-neutral-800',\n !isResizing && 'group-hover:bg-neutral-100 dark:group-hover:bg-neutral-800',\n isResizing && 'bg-primary-500',\n );\n};\n\nexport type TbodyStyleProps = Partial<TableContextValue<any>>;\nexport const tbodyRoot: ComponentFunction<TbodyStyleProps> = (_props, ...etc) => mx(...etc);\n\nexport type TbodyTrStyleProps = Partial<{ canBeCurrent?: boolean; isPinned?: boolean }>;\nexport const tbodyTr: ComponentFunction<TbodyTrStyleProps> = ({ canBeCurrent, isPinned }, ...etc) =>\n mx(\n 'group',\n canBeCurrent ? ghostSelectedCurrent : ghostSelected,\n canBeCurrent && focusRing,\n canBeCurrent && 'cursor-pointer',\n isPinned && 'sticky z-1 block-end-0',\n isPinned && stickyRowColors,\n ...etc,\n );\n\nexport const tdRoot: ComponentFunction<TbodyStyleProps & { pinned?: boolean }> = ({ border, isGrid, pinned }, ...etc) =>\n mx(\n 'relative',\n 'focus-within:!bg-neutral-50 dark:focus-within:!bg-neutral-900',\n flushPadding,\n border && 'border-b border-l last:border-r border-neutral-200 dark:border-neutral-700',\n pinned && 'border-t',\n isGrid && gridCellFocusRing,\n ...etc,\n );\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { useFocusableGroup } from '@fluentui/react-tabster';\nimport { type Cell as CellType, type RowData } from '@tanstack/react-table';\nimport React, { useCallback, type PropsWithChildren, type KeyboardEvent } from 'react';\n\nimport { tdRoot } from '../../theme';\nimport { useTableContext } from '../Table/TableContext';\n\ntype CellProps<TData extends RowData, TValue> = PropsWithChildren<{\n cell: CellType<TData, TValue>;\n}>;\n\nconst CELL_NAME = 'Cell';\n\nconst FocusableCell = <TData extends RowData, TValue>({ cell, children }: CellProps<TData, TValue>) => {\n const tableContext = useTableContext();\n const focusableGroupAttrs = useFocusableGroup({ tabBehavior: 'limited' });\n\n const pinned = tableContext.table.getState().rowPinning?.bottom?.includes(cell.row.id);\n const className = tdRoot({ ...tableContext, pinned }, cell.column.columnDef.meta?.cell?.classNames);\n\n const handleKeyDown = useCallback(({ key, currentTarget }: KeyboardEvent<HTMLTableCellElement>) => {\n if (key !== 'Enter') {\n return;\n }\n\n const currentRow = currentTarget.closest('tr');\n if (!currentRow) {\n return;\n }\n\n const cellIndex = Array.from(currentRow.cells || []).indexOf(currentTarget);\n\n const nextSibling = currentRow.nextElementSibling;\n if (!(nextSibling instanceof HTMLTableRowElement)) {\n let depth = 0;\n // Poll for the new 'add row' row to be added to the DOM.\n const pollForNewRow = () => {\n const newNextSibling = currentRow.nextElementSibling;\n if (newNextSibling instanceof HTMLTableRowElement) {\n const nextCell = newNextSibling.cells[cellIndex];\n // Find the input within next cell and focus it.\n const input = nextCell.querySelector('input');\n if (input) {\n input.focus();\n }\n\n // TODO(Zan): Use the same utility that sheets uses.\n // Scroll current row into view after it's been hidden behind the sticky add-row row.\n currentRow.scrollIntoView({ behavior: 'smooth', block: 'center' });\n } else if (depth++ < 100) {\n requestAnimationFrame(pollForNewRow);\n }\n };\n requestAnimationFrame(pollForNewRow);\n }\n }, []);\n\n return (\n <td data-testid='table.cell' tabIndex={0} {...focusableGroupAttrs} className={className} onKeyDown={handleKeyDown}>\n {children}\n </td>\n );\n};\n\nconst StaticCell = <TData extends RowData, TValue>({ cell, children }: CellProps<TData, TValue>) => {\n const tableContext = useTableContext();\n return (\n <td data-testid='table.cell' className={tdRoot(tableContext, cell.column.columnDef.meta?.cell?.classNames)}>\n {children}\n </td>\n );\n};\n\nconst Cell = <TData extends RowData, TValue>({ cell, children }: CellProps<TData, TValue>) => {\n const { isGrid } = useTableContext();\n const Root = isGrid ? FocusableCell : StaticCell;\n return <Root cell={cell}>{children}</Root>;\n};\n\nCell.displayName = CELL_NAME;\n\nexport { Cell };\n\nexport type { CellProps };\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { flexRender } from '@tanstack/react-table';\nimport React from 'react';\n\nimport { defaultSizeCol } from '@dxos/react-ui-grid';\n\nimport { useTableContext } from './TableContext';\nimport { theadResizeRoot, theadRoot, theadTh, theadTr } from '../../theme';\n\nconst TABLE_HEAD_NAME = 'TableHeader';\n\ntype TableHeadProps = {};\n\nconst TableHead = (_props: TableHeadProps) => {\n const tableContext = useTableContext();\n const headerGroups = tableContext.table.getHeaderGroups();\n\n return (\n <thead className={theadRoot(tableContext)}>\n {headerGroups.map((headerGroup) => {\n return (\n // Group element to hover resize handles.\n <tr key={headerGroup.id} className={theadTr(tableContext)}>\n {/* TODO(burdon): Calc. width. */}\n {tableContext.debug && (\n <th className='font-mono' style={{ width: defaultSizeCol }}>\n #\n </th>\n )}\n\n {headerGroup.headers.map((header) => {\n const isResizing = header.column.getIsResizing();\n const onResize = header.getResizeHandler();\n const resizable = header.column.columnDef.meta?.resizable;\n\n return (\n <th\n key={header.id}\n style={{ width: header.getSize() }}\n className={theadTh(tableContext, header.column.columnDef.meta?.header?.classNames)}\n data-testid='table.header-cell'\n >\n {!header || header.isPlaceholder\n ? null\n : flexRender(header.column.columnDef.header, header.getContext())}\n\n {/*\n * Resize handle.\n * https://codesandbox.io/p/sandbox/github/tanstack/table/tree/main/examples/react/column-sizing\n */}\n {resizable && (\n <div\n className={theadResizeRoot({ isResizing })}\n onDoubleClick={header.column.resetSize} // TODO(zan): How should non-pointer users reset column sizing?\n onMouseDown={onResize}\n onTouchStart={onResize}\n />\n )}\n </th>\n );\n })}\n\n {tableContext.expand && <th />}\n </tr>\n );\n })}\n </thead>\n );\n};\n\nTableHead.displayName = TABLE_HEAD_NAME;\n\nexport { TableHead };\n\nexport type { TableHeadProps };\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { useFocusFinders } from '@fluentui/react-tabster';\nimport { Check, ClipboardText, type Icon, X } from '@phosphor-icons/react';\nimport {\n createColumnHelper,\n type ColumnDef,\n type ColumnMeta,\n type RowData,\n type ColumnHelper,\n type CellContext,\n} from '@tanstack/react-table';\nimport { format } from 'date-fns/format';\nimport { formatDistanceToNow } from 'date-fns/formatDistanceToNow';\nimport React, { useCallback, useEffect, useRef, useState } from 'react';\n\nimport { type PublicKey } from '@dxos/keys';\nimport { log } from '@dxos/log';\nimport { type ClassNameValue, Input, Tooltip } from '@dxos/react-ui';\nimport { defaultSizeRow } from '@dxos/react-ui-grid';\nimport { getSize, mx } from '@dxos/react-ui-theme';\n\nimport { CellCombobox, useTableContext } from './components';\nimport { textPadding } from './theme';\n\nexport type ValueUpdater<TData extends RowData, TValue> = (row: TData, id: string, value: TValue) => void;\n\nexport const createColumnBuilder = <TData extends RowData>() => ({\n helper: createColumnHelper<TData>(),\n builder: new ColumnBuilder<TData>(),\n});\n\n// TODO(thure): This interface is redundant, e.g. `classNames` == `meta.cell.classNames`\n/**\n * NOTE: Can use `meta` for custom properties.\n */\nexport type BaseColumnOptions<TData, TValue> = Partial<ColumnDef<TData, TValue>> & {\n meta?: ColumnMeta<TData, TValue>;\n label?: string;\n classNames?: ClassNameValue;\n onUpdate?: ValueUpdater<TData, TValue | undefined>;\n};\n\n// TODO(burdon): Better abstraction?\nexport type SearchListQueryModel<TData extends RowData> = {\n getId(object: TData): string;\n getText(object: TData): string;\n query(text?: string): Promise<TData[]>;\n};\n\nexport type ComboboxColumnOptions<TData extends RowData> = BaseColumnOptions<TData, any> & {\n model: SearchListQueryModel<TData>;\n};\n\nexport type StringColumnOptions<TData extends RowData> = BaseColumnOptions<TData, string> & {};\nexport type SelectRowColumnOptions<TData extends RowData> = BaseColumnOptions<TData, string> & {};\n\nexport type NumberColumnOptions<TData extends RowData> = BaseColumnOptions<TData, number> & {\n digits?: number;\n};\n\nexport type KeyColumnOptions<TData extends RowData> = BaseColumnOptions<TData, PublicKey> & {\n tooltip?: boolean;\n};\n\nexport type DateColumnOptions<TData extends RowData> = BaseColumnOptions<TData, Date> & {\n format?: string;\n relative?: boolean;\n};\n\nexport type SwitchColumnOptions<TData extends RowData> = BaseColumnOptions<TData, boolean> & {};\n\nexport type IconColumnOptions<TData extends RowData> = BaseColumnOptions<TData, boolean> & {\n on?: {\n Icon?: Icon;\n className?: string;\n };\n off?: {\n Icon?: Icon;\n className?: string;\n };\n};\n\nconst ComboboxBuilderCell = <TData extends RowData>(cellContext: CellContext<TData, TData>) => {\n const { model, onUpdate } = cellContext.column.columnDef.meta as ColumnMeta<TData, TData>;\n return model ? (\n <CellCombobox<TData>\n model={model}\n value={cellContext.getValue()}\n onValueChange={(value) => onUpdate?.(cellContext.row.original, cellContext.column.id, value)}\n />\n ) : null;\n};\n\nconst StringBuilderCell = <TData extends RowData>(cellContext: CellContext<TData, string>) => {\n const ref = useRef<HTMLInputElement>(null);\n const { findPrevFocusable } = useFocusFinders();\n\n const { onUpdate, cell } = cellContext.column.columnDef.meta as ColumnMeta<TData, string>;\n\n // https://tanstack.com/table/v8/docs/examples/react/editable-data\n const initialValue = cellContext.getValue();\n\n const getInitialValue = useCallback(() => {\n // TODO(burdon): Temporary shim for automerge.\n return (initialValue as any)?.content ?? initialValue;\n }, [initialValue]);\n\n const [value, setValue] = useState(getInitialValue);\n\n // Update value if initialValue changes externally (cell reactivity).\n useEffect(() => setValue(getInitialValue()), [getInitialValue]);\n\n const handleSave = () => {\n ref.current && document.activeElement === ref.current && findPrevFocusable(ref.current)?.focus();\n\n if (value !== initialValue) {\n onUpdate?.(cellContext.row.original, cellContext.column.id, value);\n }\n };\n\n const handleCancel = () => setValue(initialValue);\n\n let placeholder = false;\n const columns = cellContext.table.getVisibleFlatColumns();\n\n // Calling getRowModel is expensive, so only do it when we're a cell in the first position.\n if (columns[0].id === cellContext.column.id) {\n const rowCount = cellContext.table.getRowModel().rows.length;\n placeholder = cellContext.row.index === rowCount - 1 && columns[0].id === cellContext.column.id;\n }\n\n // TODO(burdon): Don't render inputs unless mouse over (Show ellipsis when div)?\n return (\n <Input.Root>\n <Input.TextInput\n ref={ref}\n variant='subdued'\n placeholder={placeholder ? 'Add row...' : undefined}\n classNames={['is-full', textPadding, cell?.classNames]}\n value={value ?? ''}\n onBlur={handleSave}\n onChange={(event) => setValue(event.target.value)}\n onKeyDown={(event) => (event.key === 'Enter' && handleSave()) || (event.key === 'Escape' && handleCancel())}\n autoComplete='off'\n />\n </Input.Root>\n );\n};\n\nconst parseNumber = (text?: string) => (text?.trim().length ? Number(text) : NaN);\n\nconst displayNumber = (value?: number, digits?: number) =>\n value || value === 0\n ? value.toLocaleString(undefined, {\n minimumFractionDigits: digits ?? 0,\n maximumFractionDigits: digits ?? 2,\n })\n : '';\n\nconst NumberBuilderCell = <TData extends RowData>(cellContext: CellContext<TData, number>) => {\n const { onUpdate, digits } = cellContext.column.columnDef.meta as ColumnMeta<TData, string>;\n const value = cellContext.getValue();\n const [text, setText] = useState<string>(displayNumber(value, digits));\n const { findPrevFocusable } = useFocusFinders();\n const ref = useRef<HTMLInputElement | null>(null);\n\n // Update display value if `digits` changes and input is not in focus.\n useEffect(() => {\n (!document.activeElement || document.activeElement !== ref.current) && setText(displayNumber(value, digits));\n }, [digits, value]);\n\n const handleEdit = () => setText(value !== undefined ? String(value) : '');\n\n // TODO(burdon): Property is encoded as float (e.g., 6.1 => 6.099)\n const handleSave = () => {\n const nextValue = parseNumber(text);\n\n if (!isNaN(nextValue)) {\n onUpdate?.(cellContext.row.original, cellContext.column.id, nextValue);\n setText(displayNumber(nextValue, digits));\n } else {\n // Reset the text to display the original value without updating the model.\n setText(displayNumber(value, digits));\n }\n\n // Shift focus only if input is focused on save (e.g. on `Enter`).\n ref.current && document.activeElement === ref.current && findPrevFocusable(ref.current)?.focus();\n };\n\n const _handleCancel = () => {\n setText(displayNumber(value, digits));\n ref.current && findPrevFocusable(ref.current)?.focus();\n };\n\n return (\n <Input.Root>\n <Input.TextInput\n ref={ref}\n variant='subdued'\n value={text}\n classNames={['is-full text-end font-mono', textPadding]}\n onBlur={handleSave}\n onFocus={handleEdit}\n onChange={({ target: { value } }) => setText(value)}\n onKeyDown={(event) => {\n // TODO(thure): `Escape` is reserved for blurring the input and moving focus to the cell.\n return /* (event.key === 'Escape' && handleCancel()) || */ event.key === 'Enter' && handleSave();\n }}\n autoComplete='off'\n />\n </Input.Root>\n );\n};\n\nconst RowSelectorBuilderCell = <TData extends RowData>(cellContext: CellContext<TData, unknown>) => {\n const { cell } = cellContext.column.columnDef.meta as ColumnMeta<TData, unknown>;\n const { row } = cellContext;\n\n const checked = row.getCanSelect()\n ? row.getIsSelected()\n : row.getCanSelectSubRows() && (row.getIsSomeSelected() ? 'indeterminate' : row.getIsAllSubRowsSelected());\n\n return (\n <div className='flex justify-center w-full h-full' role='presentation'>\n <Input.Root>\n <Input.Checkbox\n size={4}\n classNames={[cell?.classNames]}\n checked={checked}\n onCheckedChange={(event) => {\n if (row.getCanSelect()) {\n row.getToggleSelectedHandler()(event);\n }\n }}\n disabled={!(row.getCanSelect() || row.getCanSelectSubRows())}\n />\n </Input.Root>\n </div>\n );\n};\n\nconst SwitchBuilderCell = <TData extends RowData>(cellContext: CellContext<TData, boolean>) => {\n const { onUpdate } = cellContext.column.columnDef.meta as ColumnMeta<TData, boolean>;\n const value = cellContext.getValue();\n return (\n <Input.Root>\n <Input.Switch\n classNames='block mli-auto'\n onClick={(event) => event.stopPropagation()}\n disabled={!onUpdate}\n checked={!!value}\n onCheckedChange={(value) => {\n onUpdate?.(cellContext.row.original, cellContext.column.id, !!value);\n }}\n />\n </Input.Root>\n );\n};\n\n/**\n * Util to create column definitions.\n */\nexport class ColumnBuilder<TData extends RowData> {\n /**\n * Combobox value\n */\n combobox({\n label,\n classNames,\n model,\n onUpdate,\n ...props\n }: ComboboxColumnOptions<TData>): Partial<ColumnDef<TData, any>> {\n return {\n minSize: 100,\n header: (column) => {\n return label ?? column.header.id;\n },\n cell:\n model && onUpdate\n ? ComboboxBuilderCell\n : (cellContext) => {\n const cellValue = cellContext.getValue();\n return <div className={mx('truncate', classNames)}>{cellValue ? model?.getText(cellValue) : ''}</div>;\n },\n ...props,\n meta: {\n ...props.meta,\n model,\n onUpdate,\n cell: { classNames, ...props.meta?.cell },\n },\n };\n }\n\n /**\n * String formats.\n */\n string({ label, classNames, onUpdate, ...props }: StringColumnOptions<TData> = {}): Partial<\n ColumnDef<TData, string>\n > {\n return {\n minSize: 100,\n // TODO(burdon): Default.\n header: (column) => {\n return label ?? column.header.id;\n },\n cell: onUpdate\n ? StringBuilderCell\n : (cell) => {\n let value = cell.getValue();\n // TODO(burdon): Hack to support automerge.\n if (typeof value === 'object' && (value as any)?.type === 'dxos.Text.v0') {\n value = (value as any).content;\n }\n\n return <div className={mx('truncate', textPadding, classNames)}>{value}</div>;\n },\n ...props,\n meta: {\n ...props.meta,\n onUpdate,\n cell: { ...props.meta?.cell, classNames },\n },\n };\n }\n\n /**\n * Number formats.\n */\n number({ label, minSize, classNames, digits, onUpdate, ...props }: NumberColumnOptions<TData> = {}): Partial<\n ColumnDef<TData, number>\n > {\n return {\n size: 100,\n minSize: 100,\n header: (cell) => label ?? cell.header.id,\n cell: NumberBuilderCell,\n ...props,\n meta: {\n ...props.meta,\n onUpdate,\n digits,\n header: { ...props.meta?.header },\n cell: { ...props.meta?.cell, classNames },\n },\n };\n }\n\n /**\n * Date formats.\n */\n // TODO(burdon): Date picker (pluggable renderers?)\n date({ label, format: formatSpec, relative, classNames, ...props }: DateColumnOptions<TData> = {}): Partial<\n ColumnDef<TData, Date>\n > {\n return {\n size: 220, // TODO(burdon): Depends on format.\n minSize: 100,\n header: (cell) => label ?? cell.header.id,\n cell: (cell) => {\n const value = cell.getValue();\n\n try {\n const str = value\n ? formatSpec\n ? format(value, formatSpec)\n : relative\n ? formatDistanceToNow(value, { addSuffix: true })\n : value.toISOString()\n : undefined;\n\n return <div className={mx(textPadding, classNames)}>{str}</div>;\n } catch (err) {\n log.info('formatError', { value });\n return null;\n }\n },\n ...props,\n meta: { ...props.meta, cell: { ...props.meta?.cell, classNames } },\n };\n }\n\n /**\n * PublicKey with tooltip.\n */\n key({ label, tooltip, classNames, ...props }: KeyColumnOptions<TData> = {}): Partial<ColumnDef<TData, PublicKey>> {\n return {\n size: 94,\n minSize: 94,\n header: (cell) => label ?? cell.header.id,\n cell: (cell) => {\n const value = cell.getValue();\n if (!value) {\n return;\n }\n\n // TODO(burdon): Factor out styles.\n const element = value.truncate();\n if (!tooltip) {\n return element;\n }\n\n return (\n <Tooltip.Provider>\n <Tooltip.Root>\n <Tooltip.Trigger>{element}</Tooltip.Trigger>\n <Tooltip.Portal>\n <Tooltip.Content side='right'>\n <Tooltip.Arrow />\n <ClipboardText\n onClick={(ev) => {\n ev.stopPropagation(); // Prevent select row.\n void navigator.clipboard.writeText(value.toHex());\n }}\n />\n </Tooltip.Content>\n </Tooltip.Portal>\n </Tooltip.Root>\n </Tooltip.Provider>\n );\n },\n ...props,\n meta: { ...props.meta, cell: { ...props.meta?.cell, classNames: ['font-mono', textPadding, classNames] } },\n };\n }\n\n /**\n * Row selector\n */\n selectRow({ classNames, onUpdate, id = 'selectRow' }: SelectRowColumnOptions<TData> = {}): Parameters<\n ColumnHelper<TData>['display']\n >[0] {\n return {\n id,\n size: defaultSizeRow,\n enableResizing: false,\n meta: { onUpdate, cell: { classNames } },\n header: ({ table }) => {\n const { rowsSelectable } = useTableContext();\n const checked = table.getIsSomeRowsSelected() ? 'indeterminate' : table.getIsAllRowsSelected();\n\n return rowsSelectable === 'multi' ? (\n <div className='flex justify-center w-full h-full' role='presentation'>\n <Input.Root>\n <Input.Checkbox\n size={4}\n classNames={['mli-auto', classNames]}\n checked={checked}\n onCheckedChange={() => table.toggleAllRowsSelected()}\n />\n </Input.Root>\n </div>\n ) : null;\n },\n cell: RowSelectorBuilderCell,\n };\n }\n\n /**\n * Switch\n */\n switch({ label, classNames, onUpdate, ...props }: SwitchColumnOptions<TData> = {}): Partial<\n ColumnDef<TData, boolean>\n > {\n return {\n size: 50,\n minSize: 50,\n header: (column) => label ?? column.header.id,\n // TODO(zan): Implement sort algorithm.\n enableSorting: true,\n cell: SwitchBuilderCell,\n ...props,\n meta: { ...props.meta, onUpdate, cell: { ...props.meta?.cell, classNames: [textPadding, classNames] } },\n };\n }\n\n /**\n * Icon based on boolean value.\n */\n icon({ label, size, on, off, ...props }: IconColumnOptions<TData> = {}): Partial<ColumnDef<TData, boolean>> {\n const IconOn = on?.Icon ?? Check;\n const IconOff = off?.Icon ?? X;\n return {\n size: size ?? defaultSizeRow,\n // TODO(zan): Implement sort algorithm.\n enableSorting: false,\n header: (column) => <div className={'justify-center'}>{label ?? column.header.id}</div>,\n cell: (cell) => {\n const value = cell.getValue();\n if (value) {\n return <IconOn className={mx('block mli-auto', getSize(6), on?.className ?? 'text-green-700')} />;\n } else if (value === false) {\n return <IconOff className={mx('block mli-auto', getSize(6), off?.className ?? 'text-red-700')} />;\n } else {\n return null;\n }\n },\n ...props,\n };\n }\n\n /**\n * This display column type is for nested/unhandled data to appear as JSON.\n */\n json({ label, classNames, ...props }: KeyColumnOptions<TData> = {}): Partial<ColumnDef<TData, PublicKey>> {\n return {\n size: 120,\n minSize: 120,\n header: (cell) => label ?? cell.header.id,\n cell: (cell) => {\n const value = cell.getValue();\n return (\n <div className='overflow-scroll'>\n <code className='text-xs'>{JSON.stringify(value)}</code>\n </div>\n );\n },\n ...props,\n meta: { ...props.meta, cell: { ...props.meta?.cell, classNames: ['font-mono', textPadding, classNames] } },\n };\n }\n}\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { type ColumnDef } from '@tanstack/react-table';\n\nimport { TypeEnum, type S } from '@dxos/echo-schema';\nimport { FormatEnum } from '@dxos/echo-schema';\nimport { mapSchemaToFields } from '@dxos/schema';\n\nimport { createColumnBuilder } from '../helpers';\n\n/**\n * @deprecated\n */\nexport const schemaToColumnDefs = <T>(schema: S.Schema<T, any>): ColumnDef<T, any>[] => {\n const { helper, builder } = createColumnBuilder<T>();\n\n return mapSchemaToFields(schema).map(({ property, type, format }) => {\n const propertyKey = property.toString();\n\n if (!format) {\n switch (type) {\n case TypeEnum.String: {\n return helper.accessor(\n propertyKey as any,\n builder.string({ label: propertyKey, classNames: [property === 'id' && 'font-mono'] }),\n );\n }\n case TypeEnum.Number: {\n return helper.accessor(propertyKey as any, builder.number({ label: propertyKey }));\n }\n case TypeEnum.Boolean: {\n return helper.accessor(propertyKey as any, builder.switch({ label: propertyKey }));\n }\n default: {\n throw new Error(`Unhandled scalar type: ${type}`);\n }\n }\n }\n\n switch (format) {\n case FormatEnum.Date: {\n return helper.accessor(propertyKey as any, builder.date({ label: propertyKey }));\n }\n case FormatEnum.JSON: {\n return helper.accessor(propertyKey as any, builder.json({ label: propertyKey, id: propertyKey }));\n }\n default: {\n throw new Error(`Unhandled format: ${format}`);\n }\n }\n });\n};\n"],
5
5
  "mappings": "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",
6
6
  "names": ["translationKey", "CaretDown", "React", "useCallback", "useState", "Popover", "useTranslation", "PopoverCombobox", "descriptionText", "getSize", "mx", "staticPlaceholderText", "initialItems", "model", "value", "getId", "label", "getText", "data", "CellCombobox", "onValueChange", "t", "useTranslation", "translationKey", "items", "setItems", "useState", "loading", "setLoading", "searchInputValue", "setSearchInputValue", "handleSearchInputValueChange", "text", "query", "reduce", "acc", "item", "handleValueChange", "useCallback", "id", "PopoverCombobox", "Root", "placeholder", "Trigger", "variant", "classNames", "span", "className", "mx", "staticPlaceholderText", "CaretDown", "weight", "getSize", "Content", "shouldFilter", "Input", "List", "length", "p", "descriptionText", "Empty", "Object", "entries", "map", "Item", "key", "onSelect", "Popover", "Arrow", "X", "GearSix", "CaretDown", "ArrowDown", "ArrowUp", "ArrowRight", "ArrowLeft", "React", "useRef", "useState", "useCallback", "Button", "Popover", "DropdownMenu", "getSize", "mx", "React", "useRef", "useState", "FormatEnums", "Button", "Input", "Select", "useTranslation", "safeParseInt", "ColumnSettings", "column", "tableDef", "tablesToReference", "onUpdate", "onDelete", "onClose", "t", "useTranslation", "translationKey", "propRef", "useRef", "formState", "setFormState", "useState", "prop", "id", "refTable", "refProp", "type", "String", "label", "digits", "handleSave", "length", "match", "current", "focus", "columns", "find", "c", "safeParseInt", "handleDelete", "React", "div", "className", "Input", "Root", "Label", "TextInput", "placeholder", "value", "onChange", "event", "prevState", "target", "autoFocus", "data-testid", "ref", "replace", "Select", "onValueChange", "TriggerButton", "classNames", "Portal", "Content", "Viewport", "FormatEnums", "map", "Option", "key", "filter", "name", "Button", "onClick", "variant", "useCallback", "useEffect", "useState", "useOnTransition", "useColumnResizing", "columns", "onColumnResize", "columnsInitialised", "setColumnsInitialised", "useState", "columnSizing", "setColumnSizing", "useEffect", "filter", "column", "size", "prop", "undefined", "reduce", "state", "columnSizingInfo", "setColumnSizingInfo", "notifyColumnResize", "useCallback", "useOnTransition", "isResizingColumn", "v", "useState", "React", "useContext", "createContext", "raise", "TABLE_NAME", "TableContext", "createContext", "undefined", "TableProvider", "children", "value", "React", "Provider", "useTableContext", "useContext", "raise", "Error", "useColumnSorting", "columnSorting", "setColumnSorting", "useState", "sortColumn", "columnId", "sortDirection", "id", "desc", "clearColumnSorting", "sorting", "useSortColumn", "column", "useTableContext", "initialSortDirection", "setInitialSortDirection", "columnSort", "find", "s", "undefined", "canSort", "getCanSort", "updateColumnSort", "direction", "onToggleSort", "onSelectSort", "onClearSort", "useCallback", "useEffect", "useState", "usePinLastRow", "pinLastRow", "table", "data", "pinnedRowKey", "setPinnedRowKey", "useState", "pinRow", "useCallback", "rowToPin", "resetRowPinning", "pin", "id", "clearRowPinning", "undefined", "pinLastRowCallback", "rows", "getRowModel", "length", "lastRow", "useEffect", "useControllableState", "useCallback", "useRowSelection", "props", "rowSelection", "setRowSelection", "useControllableState", "prop", "onChange", "onRowSelectionChange", "defaultProp", "defaultRowSelection", "handleRowSelectionChange", "useCallback", "updaterOrValue", "nextRowSelection", "rowsSelectable", "nextRowSelectionKey", "Object", "keys", "filter", "id", "ColumnMenu", "column", "columnOrderable", "columnPosition", "onColumnReorder", "props", "title", "label", "length", "id", "header", "context", "canSort", "sortDirection", "onSelectSort", "onToggleSort", "onClearSort", "useSortColumn", "columnSettingsAnchorRef", "useRef", "isColumnSettingsOpen", "setIsColumnSettingsOpen", "useState", "shouldPreventFocusOnClose", "onOpenColumnSettings", "useCallback", "current", "onDropdownCloseAutoFocus", "event", "preventDefault", "React", "div", "className", "SortIndicator", "direction", "onClick", "DropdownMenu", "Root", "modal", "Popover", "open", "onOpenChange", "Trigger", "ref", "asChild", "Anchor", "Button", "variant", "data-testid", "CaretDown", "getSize", "Portal", "Content", "onCloseAutoFocus", "sideOffset", "collisionPadding", "Viewport", "Item", "span", "ArrowUp", "ArrowDown", "X", "ArrowLeft", "mx", "ArrowRight", "GearSix", "Arrow", "ColumnSettings", "onClose", "undefined", "icon", "Slot", "getCoreRowModel", "getExpandedRowModel", "getGroupedRowModel", "getSortedRowModel", "useReactTable", "React", "Fragment", "memo", "useCallback", "useEffect", "useState", "useContext", "useDefaultValue", "mx", "useArrowNavigationGroup", "flexRender", "React", "useContext", "useVirtualizer", "createContext", "useRef", "useState", "useTableRootContext", "scrollContextRef", "useRef", "tableCount", "setTableCount", "useState", "virtualizer", "useVirtualizer", "getScrollElement", "current", "count", "overscan", "estimateSize", "dispatch", "action", "type", "TableRootContext", "createContext", "focusRing", "ghostSelected", "ghostSelectedCurrent", "mx", "currentRow", "selectedRow", "flushPadding", "textPadding", "headPadding", "gridCellFocusRing", "borderColors", "stickyRowColors", "tableRoot", "fullWidth", "etc", "mx", "groupTh", "_props", "theadRoot", "header", "stickyHeader", "theadTr", "theadTh", "border", "theadResizeRoot", "isResizing", "tbodyRoot", "tbodyTr", "canBeCurrent", "isPinned", "ghostSelectedCurrent", "ghostSelected", "focusRing", "tdRoot", "isGrid", "pinned", "useFocusableGroup", "React", "useCallback", "CELL_NAME", "FocusableCell", "cell", "children", "tableContext", "useTableContext", "focusableGroupAttrs", "useFocusableGroup", "tabBehavior", "pinned", "table", "getState", "rowPinning", "bottom", "includes", "row", "id", "className", "tdRoot", "column", "columnDef", "meta", "classNames", "handleKeyDown", "useCallback", "key", "currentTarget", "currentRow", "closest", "cellIndex", "Array", "from", "cells", "indexOf", "nextSibling", "nextElementSibling", "HTMLTableRowElement", "depth", "pollForNewRow", "newNextSibling", "nextCell", "input", "querySelector", "focus", "scrollIntoView", "behavior", "block", "requestAnimationFrame", "React", "td", "data-testid", "tabIndex", "onKeyDown", "StaticCell", "Cell", "isGrid", "Root", "displayName", "TABLE_BODY_NAME", "TableBody", "rows", "table", "keyAccessor", "currentDatum", "debug", "expand", "isGrid", "onDatumClick", "useTableContext", "rowSelection", "getState", "arrowNavigationAttrs", "useArrowNavigationGroup", "axis", "canBeCurrent", "virtualizer", "useContext", "TableRootContext", "React", "tbody", "map", "row", "isCurrent", "original", "isSelected", "id", "isPinned", "getIsPinned", "classNames", "tbodyTr", "tr", "key", "className", "data-index", "index", "data-testid", "ref", "measureElement", "tabIndex", "onClick", "onKeyUp", "td", "getVisibleCells", "cell", "Cell", "flexRender", "column", "columnDef", "getContext", "displayName", "flexRender", "React", "defaultSizeCol", "TABLE_HEAD_NAME", "TableHead", "_props", "tableContext", "useTableContext", "headerGroups", "table", "getHeaderGroups", "React", "thead", "className", "theadRoot", "map", "headerGroup", "tr", "key", "id", "theadTr", "debug", "th", "style", "width", "defaultSizeCol", "headers", "header", "isResizing", "column", "getIsResizing", "onResize", "getResizeHandler", "resizable", "columnDef", "meta", "getSize", "theadTh", "classNames", "data-testid", "isPlaceholder", "flexRender", "getContext", "div", "theadResizeRoot", "onDoubleClick", "resetSize", "onMouseDown", "onTouchStart", "expand", "displayName", "TableRoot", "children", "contextValue", "useTableRootContext", "React", "TableRootContext", "Provider", "value", "TableViewport", "classNames", "asChild", "props", "scrollContextRef", "useContext", "classes", "mx", "Slot", "ref", "className", "div", "role", "TablePrimitive", "header", "rowsSelectable", "debug", "pinLastRow", "columnVisibility", "onColumnResize", "onDataSelectionChange", "columns", "useDefaultValue", "incomingData", "data", "setData", "useState", "forceUpdate", "useCallback", "useEffect", "JSON", "stringify", "TableProvider", "UntypedTableProvider", "columnSizing", "setColumnSizing", "columnSizingInfo", "setColumnSizingInfo", "useColumnResizing", "rowSelection", "handleRowSelectionChange", "useRowSelection", "grouping", "handleGroupingChange", "columnSorting", "useColumnSorting", "table", "useReactTable", "meta", "defaultColumn", "size", "maxSize", "state", "sorting", "columnResizeMode", "enableColumnResizing", "onColumnSizingChange", "onColumnSizingInfoChange", "getCoreRowModel", "getSortedRowModel", "getExpandedRowModel", "getGroupedRowModel", "length", "undefined", "onGroupingChange", "enableMultiRowSelection", "enableRowSelection", "onRowSelectionChange", "enableSorting", "enableColumnPinning", "debugTable", "Object", "keys", "map", "id", "getRowModel", "rowsById", "original", "usePinLastRow", "expand", "isGrid", "TableImpl", "fullWidth", "useTableContext", "pre", "code", "getState", "isResizingColumn", "TableComponent", "MemoizedVirtualizedTableContent", "VirtualizedTableContent", "tableRoot", "style", "borderSpacing", "width", "getTotalSize", "TableHead", "GroupedTableContent", "virtualizer", "dispatch", "centerRows", "getCenterRows", "pinnedRows", "type", "count", "getBottomRows", "_", "getVirtualItems", "virtualRows", "totalSize", "paddingTop", "start", "paddingBottom", "end", "rowsToRender", "virtualRow", "index", "filter", "r", "Fragment", "tbody", "tr", "td", "height", "TableBody", "rows", "memo", "getHeaderGroups", "row", "i", "key", "thead", "th", "colSpan", "headers", "groupTh", "String", "getGroupingValue", "subRows", "Table", "Root", "Viewport", "Main", "useFocusFinders", "Check", "ClipboardText", "X", "createColumnHelper", "format", "formatDistanceToNow", "React", "useCallback", "useEffect", "useRef", "useState", "log", "Input", "Tooltip", "defaultSizeRow", "getSize", "mx", "createColumnBuilder", "helper", "createColumnHelper", "builder", "ColumnBuilder", "ComboboxBuilderCell", "cellContext", "model", "onUpdate", "column", "columnDef", "meta", "React", "CellCombobox", "value", "getValue", "onValueChange", "row", "original", "id", "StringBuilderCell", "ref", "useRef", "findPrevFocusable", "useFocusFinders", "cell", "initialValue", "getInitialValue", "useCallback", "content", "setValue", "useState", "useEffect", "handleSave", "current", "document", "activeElement", "focus", "handleCancel", "placeholder", "columns", "table", "getVisibleFlatColumns", "rowCount", "getRowModel", "rows", "length", "index", "Input", "Root", "TextInput", "variant", "undefined", "classNames", "textPadding", "onBlur", "onChange", "event", "target", "onKeyDown", "key", "autoComplete", "parseNumber", "text", "trim", "Number", "NaN", "displayNumber", "digits", "toLocaleString", "minimumFractionDigits", "maximumFractionDigits", "NumberBuilderCell", "setText", "handleEdit", "String", "nextValue", "isNaN", "_handleCancel", "onFocus", "RowSelectorBuilderCell", "checked", "getCanSelect", "getIsSelected", "getCanSelectSubRows", "getIsSomeSelected", "getIsAllSubRowsSelected", "div", "className", "role", "Checkbox", "size", "onCheckedChange", "getToggleSelectedHandler", "disabled", "SwitchBuilderCell", "Switch", "onClick", "stopPropagation", "combobox", "label", "props", "minSize", "header", "cellValue", "mx", "getText", "string", "type", "number", "date", "format", "formatSpec", "relative", "str", "formatDistanceToNow", "addSuffix", "toISOString", "err", "log", "info", "tooltip", "element", "truncate", "Tooltip", "Provider", "Trigger", "Portal", "Content", "side", "Arrow", "ClipboardText", "ev", "navigator", "clipboard", "writeText", "toHex", "selectRow", "defaultSizeRow", "enableResizing", "rowsSelectable", "useTableContext", "getIsSomeRowsSelected", "getIsAllRowsSelected", "toggleAllRowsSelected", "switch", "enableSorting", "icon", "on", "off", "IconOn", "Icon", "Check", "IconOff", "X", "getSize", "json", "code", "JSON", "stringify", "TypeEnum", "FormatEnum", "mapSchemaToFields", "schemaToColumnDefs", "schema", "helper", "builder", "createColumnBuilder", "mapSchemaToFields", "map", "property", "type", "format", "propertyKey", "toString", "TypeEnum", "String", "accessor", "string", "label", "classNames", "Number", "number", "Boolean", "switch", "Error", "FormatEnum", "Date", "date", "JSON", "json", "id"]