@dxos/plugin-sheet 0.8.4-main.c1de068 → 0.8.4-main.dedc0f3

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 (142) hide show
  1. package/dist/lib/browser/{SheetContainer-KDGD4AVG.mjs → SheetContainer-OUN6AARA.mjs} +20 -21
  2. package/dist/lib/browser/SheetContainer-OUN6AARA.mjs.map +7 -0
  3. package/dist/lib/browser/{anchor-sort-VHURGBOY.mjs → anchor-sort-7WD2VGXW.mjs} +2 -2
  4. package/dist/lib/browser/{anchor-sort-VHURGBOY.mjs.map → anchor-sort-7WD2VGXW.mjs.map} +1 -1
  5. package/dist/lib/browser/{chunk-7HQX4NQP.mjs → chunk-SSN4HYJL.mjs} +6 -6
  6. package/dist/lib/browser/chunk-SSN4HYJL.mjs.map +7 -0
  7. package/dist/lib/browser/{chunk-JUOVL3LE.mjs → chunk-X4EWLDT3.mjs} +197 -193
  8. package/dist/lib/browser/chunk-X4EWLDT3.mjs.map +7 -0
  9. package/dist/lib/browser/{chunk-SI4X5GUR.mjs → chunk-XSXUU6FO.mjs} +19 -5
  10. package/dist/lib/browser/chunk-XSXUU6FO.mjs.map +7 -0
  11. package/dist/lib/browser/{compute-graph-registry-VG7VP7IV.mjs → compute-graph-registry-6YJHXORG.mjs} +1 -1
  12. package/dist/lib/{node-esm/compute-graph-registry-3K3Q2A5T.mjs.map → browser/compute-graph-registry-6YJHXORG.mjs.map} +2 -2
  13. package/dist/lib/browser/index.mjs +7 -7
  14. package/dist/lib/browser/index.mjs.map +3 -3
  15. package/dist/lib/browser/{intent-resolver-WOJGZMSV.mjs → intent-resolver-ROEY4LHM.mjs} +3 -3
  16. package/dist/lib/browser/{intent-resolver-WOJGZMSV.mjs.map → intent-resolver-ROEY4LHM.mjs.map} +3 -3
  17. package/dist/lib/browser/{markdown-VXMIPUQC.mjs → markdown-VOY636TS.mjs} +2 -2
  18. package/dist/lib/browser/markdown-VOY636TS.mjs.map +7 -0
  19. package/dist/lib/browser/meta.json +1 -1
  20. package/dist/lib/browser/{react-surface-SE4HGAEH.mjs → react-surface-XCNAVF2M.mjs} +4 -4
  21. package/dist/lib/browser/{react-surface-SE4HGAEH.mjs.map → react-surface-XCNAVF2M.mjs.map} +2 -2
  22. package/dist/lib/browser/types/index.mjs +1 -1
  23. package/dist/lib/node-esm/{SheetContainer-RMG24NZC.mjs → SheetContainer-NFLLTGNV.mjs} +20 -21
  24. package/dist/lib/node-esm/SheetContainer-NFLLTGNV.mjs.map +7 -0
  25. package/dist/lib/node-esm/{anchor-sort-CTJGOPET.mjs → anchor-sort-ACQDUIPU.mjs} +2 -2
  26. package/dist/lib/node-esm/{anchor-sort-CTJGOPET.mjs.map → anchor-sort-ACQDUIPU.mjs.map} +1 -1
  27. package/dist/lib/node-esm/{chunk-Q6UYC4G5.mjs → chunk-IK4O7FUJ.mjs} +6 -6
  28. package/dist/lib/node-esm/chunk-IK4O7FUJ.mjs.map +7 -0
  29. package/dist/lib/node-esm/{chunk-CADTJFAS.mjs → chunk-ODP4L4OV.mjs} +19 -5
  30. package/dist/lib/node-esm/chunk-ODP4L4OV.mjs.map +7 -0
  31. package/dist/lib/node-esm/{chunk-IFMIRCZH.mjs → chunk-PYF4ZJXN.mjs} +197 -193
  32. package/dist/lib/node-esm/chunk-PYF4ZJXN.mjs.map +7 -0
  33. package/dist/lib/node-esm/{compute-graph-registry-3K3Q2A5T.mjs → compute-graph-registry-ET5KJNLV.mjs} +1 -1
  34. package/dist/lib/{browser/compute-graph-registry-VG7VP7IV.mjs.map → node-esm/compute-graph-registry-ET5KJNLV.mjs.map} +2 -2
  35. package/dist/lib/node-esm/index.mjs +7 -7
  36. package/dist/lib/node-esm/index.mjs.map +3 -3
  37. package/dist/lib/node-esm/{intent-resolver-PZRXBNIJ.mjs → intent-resolver-HESRI2ML.mjs} +3 -3
  38. package/dist/lib/node-esm/{intent-resolver-PZRXBNIJ.mjs.map → intent-resolver-HESRI2ML.mjs.map} +3 -3
  39. package/dist/lib/node-esm/{markdown-4VPQJZNZ.mjs → markdown-P4CLZ24C.mjs} +2 -2
  40. package/dist/lib/node-esm/markdown-P4CLZ24C.mjs.map +7 -0
  41. package/dist/lib/node-esm/meta.json +1 -1
  42. package/dist/lib/node-esm/{react-surface-LAU23XBH.mjs → react-surface-KE3EEVF4.mjs} +4 -4
  43. package/dist/lib/node-esm/{react-surface-LAU23XBH.mjs.map → react-surface-KE3EEVF4.mjs.map} +2 -2
  44. package/dist/lib/node-esm/types/index.mjs +1 -1
  45. package/dist/types/src/capabilities/anchor-sort.d.ts +2 -2
  46. package/dist/types/src/capabilities/compute-graph-registry.d.ts +1 -1
  47. package/dist/types/src/capabilities/compute-graph-registry.d.ts.map +1 -1
  48. package/dist/types/src/capabilities/index.d.ts +6 -8
  49. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  50. package/dist/types/src/capabilities/intent-resolver.d.ts +1 -1
  51. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  52. package/dist/types/src/capabilities/markdown.d.ts +1 -3
  53. package/dist/types/src/capabilities/markdown.d.ts.map +1 -1
  54. package/dist/types/src/capabilities/react-surface.d.ts +1 -1
  55. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  56. package/dist/types/src/components/ComputeGraph/ComputeGraphContextProvider.d.ts.map +1 -1
  57. package/dist/types/src/components/ComputeGraph/compute-graph.stories.d.ts +9 -3
  58. package/dist/types/src/components/ComputeGraph/compute-graph.stories.d.ts.map +1 -1
  59. package/dist/types/src/components/GridSheet/GridSheet.d.ts.map +1 -1
  60. package/dist/types/src/components/GridSheet/GridSheet.stories.d.ts +49 -2
  61. package/dist/types/src/components/GridSheet/GridSheet.stories.d.ts.map +1 -1
  62. package/dist/types/src/components/GridSheet/SheetCellEditor.stories.d.ts +11 -19
  63. package/dist/types/src/components/GridSheet/SheetCellEditor.stories.d.ts.map +1 -1
  64. package/dist/types/src/components/GridSheet/util.d.ts +1 -1
  65. package/dist/types/src/components/GridSheet/util.d.ts.map +1 -1
  66. package/dist/types/src/components/SheetContainer/SheetContainer.d.ts.map +1 -1
  67. package/dist/types/src/components/SheetContainer/SheetContainer.stories.d.ts +49 -2
  68. package/dist/types/src/components/SheetContainer/SheetContainer.stories.d.ts.map +1 -1
  69. package/dist/types/src/components/SheetContext/SheetContext.d.ts +1 -1
  70. package/dist/types/src/components/SheetContext/SheetContext.d.ts.map +1 -1
  71. package/dist/types/src/components/SheetToolbar/SheetToolbar.d.ts.map +1 -1
  72. package/dist/types/src/components/SheetToolbar/SheetToolbar.stories.d.ts +86 -3
  73. package/dist/types/src/components/SheetToolbar/SheetToolbar.stories.d.ts.map +1 -1
  74. package/dist/types/src/components/SheetToolbar/align.d.ts +2 -2
  75. package/dist/types/src/components/SheetToolbar/align.d.ts.map +1 -1
  76. package/dist/types/src/components/SheetToolbar/style.d.ts.map +1 -1
  77. package/dist/types/src/extensions/compute.d.ts +1 -1
  78. package/dist/types/src/extensions/compute.d.ts.map +1 -1
  79. package/dist/types/src/extensions/compute.stories.d.ts +10 -12
  80. package/dist/types/src/extensions/compute.stories.d.ts.map +1 -1
  81. package/dist/types/src/extensions/editor/index.d.ts +1 -1
  82. package/dist/types/src/extensions/editor/index.d.ts.map +1 -1
  83. package/dist/types/src/extensions/editor/{extension.d.ts → sheet-extension.d.ts} +1 -1
  84. package/dist/types/src/extensions/editor/sheet-extension.d.ts.map +1 -0
  85. package/dist/types/src/extensions/editor/sheet-extension.test.d.ts +2 -0
  86. package/dist/types/src/extensions/editor/sheet-extension.test.d.ts.map +1 -0
  87. package/dist/types/src/model/sheet-model.d.ts +1 -1
  88. package/dist/types/src/model/sheet-model.d.ts.map +1 -1
  89. package/dist/types/src/playwright/sheet-manager.d.ts +1 -1
  90. package/dist/types/src/playwright/sheet-manager.d.ts.map +1 -1
  91. package/dist/types/src/testing/testing.d.ts.map +1 -1
  92. package/dist/types/src/types/types.d.ts +1 -1
  93. package/dist/types/src/types/types.d.ts.map +1 -1
  94. package/dist/types/src/types/util.d.ts.map +1 -1
  95. package/dist/types/tsconfig.tsbuildinfo +1 -1
  96. package/package.json +56 -54
  97. package/src/SheetPlugin.tsx +2 -2
  98. package/src/capabilities/anchor-sort.ts +1 -1
  99. package/src/capabilities/compute-graph-registry.ts +1 -1
  100. package/src/capabilities/intent-resolver.ts +2 -2
  101. package/src/capabilities/markdown.ts +3 -2
  102. package/src/capabilities/react-surface.tsx +2 -1
  103. package/src/components/ComputeGraph/ComputeGraphContextProvider.tsx +1 -1
  104. package/src/components/ComputeGraph/compute-graph.stories.tsx +13 -10
  105. package/src/components/GridSheet/GridSheet.stories.tsx +8 -5
  106. package/src/components/GridSheet/GridSheet.tsx +19 -18
  107. package/src/components/GridSheet/SheetCellEditor.stories.tsx +37 -38
  108. package/src/components/GridSheet/util.ts +6 -6
  109. package/src/components/SheetContainer/SheetContainer.stories.tsx +9 -6
  110. package/src/components/SheetContainer/SheetContainer.tsx +1 -1
  111. package/src/components/SheetContext/SheetContext.tsx +1 -1
  112. package/src/components/SheetToolbar/SheetToolbar.stories.tsx +10 -7
  113. package/src/components/SheetToolbar/SheetToolbar.tsx +16 -15
  114. package/src/components/SheetToolbar/align.ts +4 -3
  115. package/src/components/SheetToolbar/style.ts +2 -2
  116. package/src/extensions/compute.stories.tsx +20 -19
  117. package/src/extensions/compute.ts +2 -3
  118. package/src/extensions/editor/index.ts +1 -1
  119. package/src/extensions/editor/{extension.test.ts → sheet-extension.test.ts} +1 -1
  120. package/src/integrations/thread-ranges.ts +4 -4
  121. package/src/model/sheet-model.test.ts +2 -1
  122. package/src/model/sheet-model.ts +6 -6
  123. package/src/playwright/sheet-manager.ts +1 -1
  124. package/src/playwright/sheet.spec.ts +1 -1
  125. package/src/sanity.test.ts +1 -1
  126. package/src/testing/testing.tsx +1 -1
  127. package/src/types/types.ts +2 -1
  128. package/src/types/util.ts +3 -3
  129. package/dist/lib/browser/SheetContainer-KDGD4AVG.mjs.map +0 -7
  130. package/dist/lib/browser/chunk-7HQX4NQP.mjs.map +0 -7
  131. package/dist/lib/browser/chunk-JUOVL3LE.mjs.map +0 -7
  132. package/dist/lib/browser/chunk-SI4X5GUR.mjs.map +0 -7
  133. package/dist/lib/browser/markdown-VXMIPUQC.mjs.map +0 -7
  134. package/dist/lib/node-esm/SheetContainer-RMG24NZC.mjs.map +0 -7
  135. package/dist/lib/node-esm/chunk-CADTJFAS.mjs.map +0 -7
  136. package/dist/lib/node-esm/chunk-IFMIRCZH.mjs.map +0 -7
  137. package/dist/lib/node-esm/chunk-Q6UYC4G5.mjs.map +0 -7
  138. package/dist/lib/node-esm/markdown-4VPQJZNZ.mjs.map +0 -7
  139. package/dist/types/src/extensions/editor/extension.d.ts.map +0 -1
  140. package/dist/types/src/extensions/editor/extension.test.d.ts +0 -2
  141. package/dist/types/src/extensions/editor/extension.test.d.ts.map +0 -1
  142. /package/src/extensions/editor/{extension.ts → sheet-extension.ts} +0 -0
@@ -6,11 +6,11 @@ import {
6
6
  cellClassNameForRange,
7
7
  rangeFromIndex,
8
8
  useSheetModel
9
- } from "./chunk-SI4X5GUR.mjs";
9
+ } from "./chunk-XSXUU6FO.mjs";
10
10
  import {
11
11
  rangeExtension,
12
12
  sheetExtension
13
- } from "./chunk-7HQX4NQP.mjs";
13
+ } from "./chunk-SSN4HYJL.mjs";
14
14
  import {
15
15
  SHEET_PLUGIN
16
16
  } from "./chunk-6AKBCBL4.mjs";
@@ -105,189 +105,18 @@ import { rangeToA1Notation as rangeToA1Notation2 } from "@dxos/compute";
105
105
  import { defaultColSize, defaultRowSize } from "@dxos/lit-grid";
106
106
  import { DropdownMenu, Icon, useTranslation as useTranslation2 } from "@dxos/react-ui";
107
107
  import { useAttention } from "@dxos/react-ui-attention";
108
- import { closestCell, editorKeys, parseCellIndex, Grid as Grid2, GridCellEditor } from "@dxos/react-ui-grid";
109
-
110
- // src/components/GridSheet/util.ts
111
- import { useEffect, useState } from "react";
112
- import { inRange } from "@dxos/compute";
113
- import { createDocAccessor } from "@dxos/react-client/echo";
114
- import { parseValue, cellClassesForFieldType } from "@dxos/react-ui-form";
115
- import { colToA1Notation, rowToA1Notation, commentedClassName } from "@dxos/react-ui-grid";
116
- import { mx } from "@dxos/react-ui-theme";
117
- var createDxGridColumns = (model) => {
118
- return model.sheet.columns.reduce((acc, columnId, numericIndex) => {
119
- if (model.sheet.columnMeta[columnId] && model.sheet.columnMeta[columnId].size) {
120
- acc.grid[numericIndex] = {
121
- size: model.sheet.columnMeta[columnId].size,
122
- resizeable: true
123
- };
124
- }
125
- return acc;
126
- }, {
127
- grid: {}
128
- });
129
- };
130
- var createDxGridRows = (model) => {
131
- return model.sheet.rows.reduce((acc, rowId, numericIndex) => {
132
- if (model.sheet.rowMeta[rowId] && model.sheet.rowMeta[rowId].size) {
133
- acc.grid[numericIndex] = {
134
- size: model.sheet.rowMeta[rowId].size,
135
- resizeable: true
136
- };
137
- }
138
- return acc;
139
- }, {
140
- grid: {}
141
- });
142
- };
143
- var projectCellProps = (model, col, row) => {
144
- const address = {
145
- col,
146
- row
147
- };
148
- const rawValue = model.getValue(address);
149
- const ranges = model.sheet.ranges?.filter(({ range }) => inRange(rangeFromIndex(model.sheet, range), address));
150
- const threadRefs = void 0;
151
- const description = model.getValueDescription(address);
152
- const type = description?.type;
153
- const format = description?.format;
154
- const classNames = ranges?.map(cellClassNameForRange).reverse();
155
- return {
156
- value: parseValue({
157
- type,
158
- format,
159
- value: rawValue
160
- }),
161
- className: mx(cellClassesForFieldType({
162
- type,
163
- format
164
- }), threadRefs && commentedClassName, classNames),
165
- dataRefs: threadRefs
166
- };
167
- };
168
- var gridCellGetter = (model) => {
169
- const cachedGridCells = {};
170
- return (nextBounds) => {
171
- [
172
- ...Array(nextBounds.end.col - nextBounds.start.col)
173
- ].forEach((_, c0) => {
174
- return [
175
- ...Array(nextBounds.end.row - nextBounds.start.row)
176
- ].forEach((_2, r0) => {
177
- const col = nextBounds.start.col + c0;
178
- const row = nextBounds.start.row + r0;
179
- cachedGridCells[`${col},${row}`] = projectCellProps(model, col, row);
180
- });
181
- });
182
- return cachedGridCells;
183
- };
184
- };
185
- var rowLabelCell = (row) => ({
186
- value: rowToA1Notation(row),
187
- className: "!bg-toolbarSurface text-subdued text-end pie-1",
188
- resizeHandle: "row"
189
- });
190
- var colLabelCell = (col) => ({
191
- value: colToA1Notation(col),
192
- className: "!bg-toolbarSurface text-subdued",
193
- resizeHandle: "col"
194
- });
195
- var cellGetter = (model) => {
196
- const getGridCells = gridCellGetter(model);
197
- return (nextBounds, plane) => {
198
- switch (plane) {
199
- case "grid":
200
- return getGridCells(nextBounds);
201
- case "fixedStartStart": {
202
- return {
203
- "0,0": {
204
- className: "!bg-toolbarSurface"
205
- }
206
- };
207
- }
208
- case "frozenColsStart":
209
- return [
210
- ...Array(nextBounds.end.row - nextBounds.start.row)
211
- ].reduce((acc, _, r0) => {
212
- const r = nextBounds.start.row + r0;
213
- acc[`0,${r}`] = rowLabelCell(r);
214
- return acc;
215
- }, {});
216
- case "frozenRowsStart":
217
- return [
218
- ...Array(nextBounds.end.col - nextBounds.start.col)
219
- ].reduce((acc, _, c0) => {
220
- const c = nextBounds.start.col + c0;
221
- acc[`${c},0`] = colLabelCell(c);
222
- return acc;
223
- }, {});
224
- default:
225
- return {};
226
- }
227
- };
228
- };
229
- var useSheetModelDxGridProps = (dxGrid, model) => {
230
- const [columns, setColumns] = useState(createDxGridColumns(model));
231
- const [rows, setRows] = useState(createDxGridRows(model));
232
- useEffect(() => {
233
- const cellsAccessor = createDocAccessor(model.sheet, [
234
- "cells"
235
- ]);
236
- if (dxGrid) {
237
- dxGrid.getCells = cellGetter(model);
238
- }
239
- const handleCellsUpdate = () => {
240
- dxGrid?.requestUpdate("initialCells");
241
- };
242
- cellsAccessor.handle.addListener("change", handleCellsUpdate);
243
- const unsubscribe = model.graph.update.on(handleCellsUpdate);
244
- return () => {
245
- cellsAccessor.handle.removeListener("change", handleCellsUpdate);
246
- unsubscribe();
247
- };
248
- }, [
249
- model,
250
- dxGrid
251
- ]);
252
- useEffect(() => {
253
- const columnMetaAccessor = createDocAccessor(model.sheet, [
254
- "columnMeta"
255
- ]);
256
- const rowMetaAccessor = createDocAccessor(model.sheet, [
257
- "rowMeta"
258
- ]);
259
- const handleColumnMetaUpdate = () => {
260
- setColumns(createDxGridColumns(model));
261
- };
262
- const handleRowMetaUpdate = () => {
263
- setRows(createDxGridRows(model));
264
- };
265
- columnMetaAccessor.handle.addListener("change", handleColumnMetaUpdate);
266
- rowMetaAccessor.handle.addListener("change", handleRowMetaUpdate);
267
- return () => {
268
- columnMetaAccessor.handle.removeListener("change", handleColumnMetaUpdate);
269
- rowMetaAccessor.handle.removeListener("change", handleRowMetaUpdate);
270
- };
271
- }, [
272
- model,
273
- dxGrid
274
- ]);
275
- return {
276
- columns,
277
- rows
278
- };
279
- };
108
+ import { Grid as Grid2, GridCellEditor, closestCell, editorKeys, parseCellIndex } from "@dxos/react-ui-grid";
280
109
 
281
110
  // src/integrations/thread-ranges.ts
282
111
  import { Schema as Schema2, pipe } from "effect";
283
- import { useCallback as useCallback2, useEffect as useEffect2, useMemo } from "react";
284
- import { createIntent, createResolver, LayoutAction, useIntentResolver, useIntentDispatcher, chain } from "@dxos/app-framework";
112
+ import { useCallback as useCallback2, useEffect, useMemo } from "react";
113
+ import { LayoutAction, chain, createIntent, createResolver, useIntentDispatcher, useIntentResolver } from "@dxos/app-framework";
285
114
  import { debounce } from "@dxos/async";
286
- import { inRange as inRange2 } from "@dxos/compute";
115
+ import { inRange } from "@dxos/compute";
287
116
  import { Obj, Relation } from "@dxos/echo";
288
117
  import { ATTENDABLE_PATH_SEPARATOR, DeckAction } from "@dxos/plugin-deck/types";
289
118
  import { ThreadAction, ThreadType } from "@dxos/plugin-thread/types";
290
- import { Filter, fullyQualifiedId, getSpace, Query, useQuery } from "@dxos/react-client/echo";
119
+ import { Filter, Query, fullyQualifiedId, getSpace, useQuery } from "@dxos/react-client/echo";
291
120
  import { AnchoredTo } from "@dxos/schema";
292
121
  var parseThreadAnchorAsCellRange = (cursor) => {
293
122
  const coords = cursor.split(",");
@@ -345,7 +174,7 @@ var useSelectThreadOnCellFocus = () => {
345
174
  const source = Relation.getSource(anchor);
346
175
  if (anchor.anchor && Obj.instanceOf(ThreadType, source)) {
347
176
  const range = parseThreadAnchorAsCellRange(anchor.anchor);
348
- return range ? inRange2(range, cellAddress) : false;
177
+ return range ? inRange(range, cellAddress) : false;
349
178
  } else {
350
179
  return false;
351
180
  }
@@ -369,7 +198,7 @@ var useSelectThreadOnCellFocus = () => {
369
198
  }, [
370
199
  selectClosestThread
371
200
  ]);
372
- useEffect2(() => {
201
+ useEffect(() => {
373
202
  if (!cursor) {
374
203
  return;
375
204
  }
@@ -382,7 +211,7 @@ var useSelectThreadOnCellFocus = () => {
382
211
 
383
212
  // src/components/SheetContext/SheetContext.tsx
384
213
  import { useSignals as _useSignals3 } from "@preact-signals/safe-react/tracking";
385
- import React3, { createContext as createContext2, useCallback as useCallback3, useContext as useContext2, useState as useState2 } from "react";
214
+ import React3, { createContext as createContext2, useCallback as useCallback3, useContext as useContext2, useState } from "react";
386
215
  import { invariant } from "@dxos/invariant";
387
216
  import { fullyQualifiedId as fullyQualifiedId2 } from "@dxos/react-client/echo";
388
217
  import { Grid, useGridContext } from "@dxos/react-ui-grid";
@@ -405,10 +234,10 @@ var SheetProviderImpl = ({ model, onInfo, ignoreAttention, children, __gridScope
405
234
  var _effect = _useSignals3();
406
235
  try {
407
236
  const { id, editing, setEditing } = useGridContext("SheetProvider", __gridScope);
408
- const [cursor, setCursorInternal] = useState2();
409
- const [range, setRangeInternal] = useState2();
410
- const [cursorFallbackRange, setCursorFallbackRange] = useState2();
411
- const [activeRefs, setActiveRefs] = useState2("");
237
+ const [cursor, setCursorInternal] = useState();
238
+ const [range, setRangeInternal] = useState();
239
+ const [cursorFallbackRange, setCursorFallbackRange] = useState();
240
+ const [activeRefs, setActiveRefs] = useState("");
412
241
  const setCursor = useCallback3((nextCursor) => {
413
242
  setCursorInternal(nextCursor);
414
243
  setCursorFallbackRange(range?.to ? range : nextCursor ? {
@@ -467,6 +296,177 @@ var SheetProvider = ({ children, graph, sheet, readonly, ignoreAttention, onInfo
467
296
  }
468
297
  };
469
298
 
299
+ // src/components/GridSheet/util.ts
300
+ import { useEffect as useEffect2, useState as useState2 } from "react";
301
+ import { inRange as inRange2 } from "@dxos/compute";
302
+ import { createDocAccessor } from "@dxos/react-client/echo";
303
+ import { cellClassesForFieldType, parseValue } from "@dxos/react-ui-form";
304
+ import { colToA1Notation, commentedClassName, rowToA1Notation } from "@dxos/react-ui-grid";
305
+ import { mx } from "@dxos/react-ui-theme";
306
+ var createDxGridColumns = (model) => {
307
+ return model.sheet.columns.reduce((acc, columnId, numericIndex) => {
308
+ if (model.sheet.columnMeta[columnId] && model.sheet.columnMeta[columnId].size) {
309
+ acc.grid[numericIndex] = {
310
+ size: model.sheet.columnMeta[columnId].size,
311
+ resizeable: true
312
+ };
313
+ }
314
+ return acc;
315
+ }, {
316
+ grid: {}
317
+ });
318
+ };
319
+ var createDxGridRows = (model) => {
320
+ return model.sheet.rows.reduce((acc, rowId, numericIndex) => {
321
+ if (model.sheet.rowMeta[rowId] && model.sheet.rowMeta[rowId].size) {
322
+ acc.grid[numericIndex] = {
323
+ size: model.sheet.rowMeta[rowId].size,
324
+ resizeable: true
325
+ };
326
+ }
327
+ return acc;
328
+ }, {
329
+ grid: {}
330
+ });
331
+ };
332
+ var projectCellProps = (model, col, row) => {
333
+ const address = {
334
+ col,
335
+ row
336
+ };
337
+ const rawValue = model.getValue(address);
338
+ const ranges = model.sheet.ranges?.filter(({ range }) => inRange2(rangeFromIndex(model.sheet, range), address));
339
+ const threadRefs = void 0;
340
+ const description = model.getValueDescription(address);
341
+ const type = description?.type;
342
+ const format = description?.format;
343
+ const classNames = ranges?.map(cellClassNameForRange).reverse();
344
+ return {
345
+ value: parseValue({
346
+ type,
347
+ format,
348
+ value: rawValue
349
+ }),
350
+ className: mx(cellClassesForFieldType({
351
+ type,
352
+ format
353
+ }), threadRefs && commentedClassName, classNames),
354
+ dataRefs: threadRefs
355
+ };
356
+ };
357
+ var gridCellGetter = (model) => {
358
+ const cachedGridCells = {};
359
+ return (nextBounds) => {
360
+ [
361
+ ...Array(nextBounds.end.col - nextBounds.start.col)
362
+ ].forEach((_, c0) => {
363
+ return [
364
+ ...Array(nextBounds.end.row - nextBounds.start.row)
365
+ ].forEach((_2, r0) => {
366
+ const col = nextBounds.start.col + c0;
367
+ const row = nextBounds.start.row + r0;
368
+ cachedGridCells[`${col},${row}`] = projectCellProps(model, col, row);
369
+ });
370
+ });
371
+ return cachedGridCells;
372
+ };
373
+ };
374
+ var rowLabelCell = (row) => ({
375
+ value: rowToA1Notation(row),
376
+ className: "!bg-toolbarSurface text-subdued text-end pie-1",
377
+ resizeHandle: "row"
378
+ });
379
+ var colLabelCell = (col) => ({
380
+ value: colToA1Notation(col),
381
+ className: "!bg-toolbarSurface text-subdued",
382
+ resizeHandle: "col"
383
+ });
384
+ var cellGetter = (model) => {
385
+ const getGridCells = gridCellGetter(model);
386
+ return (nextBounds, plane) => {
387
+ switch (plane) {
388
+ case "grid":
389
+ return getGridCells(nextBounds);
390
+ case "fixedStartStart": {
391
+ return {
392
+ "0,0": {
393
+ className: "!bg-toolbarSurface"
394
+ }
395
+ };
396
+ }
397
+ case "frozenColsStart":
398
+ return [
399
+ ...Array(nextBounds.end.row - nextBounds.start.row)
400
+ ].reduce((acc, _, r0) => {
401
+ const r = nextBounds.start.row + r0;
402
+ acc[`0,${r}`] = rowLabelCell(r);
403
+ return acc;
404
+ }, {});
405
+ case "frozenRowsStart":
406
+ return [
407
+ ...Array(nextBounds.end.col - nextBounds.start.col)
408
+ ].reduce((acc, _, c0) => {
409
+ const c = nextBounds.start.col + c0;
410
+ acc[`${c},0`] = colLabelCell(c);
411
+ return acc;
412
+ }, {});
413
+ default:
414
+ return {};
415
+ }
416
+ };
417
+ };
418
+ var useSheetModelDxGridProps = (dxGrid, model) => {
419
+ const [columns, setColumns] = useState2(createDxGridColumns(model));
420
+ const [rows, setRows] = useState2(createDxGridRows(model));
421
+ useEffect2(() => {
422
+ const cellsAccessor = createDocAccessor(model.sheet, [
423
+ "cells"
424
+ ]);
425
+ if (dxGrid) {
426
+ dxGrid.getCells = cellGetter(model);
427
+ }
428
+ const handleCellsUpdate = () => {
429
+ dxGrid?.requestUpdate("initialCells");
430
+ };
431
+ cellsAccessor.handle.addListener("change", handleCellsUpdate);
432
+ const unsubscribe = model.graph.update.on(handleCellsUpdate);
433
+ return () => {
434
+ cellsAccessor.handle.removeListener("change", handleCellsUpdate);
435
+ unsubscribe();
436
+ };
437
+ }, [
438
+ model,
439
+ dxGrid
440
+ ]);
441
+ useEffect2(() => {
442
+ const columnMetaAccessor = createDocAccessor(model.sheet, [
443
+ "columnMeta"
444
+ ]);
445
+ const rowMetaAccessor = createDocAccessor(model.sheet, [
446
+ "rowMeta"
447
+ ]);
448
+ const handleColumnMetaUpdate = () => {
449
+ setColumns(createDxGridColumns(model));
450
+ };
451
+ const handleRowMetaUpdate = () => {
452
+ setRows(createDxGridRows(model));
453
+ };
454
+ columnMetaAccessor.handle.addListener("change", handleColumnMetaUpdate);
455
+ rowMetaAccessor.handle.addListener("change", handleRowMetaUpdate);
456
+ return () => {
457
+ columnMetaAccessor.handle.removeListener("change", handleColumnMetaUpdate);
458
+ rowMetaAccessor.handle.removeListener("change", handleRowMetaUpdate);
459
+ };
460
+ }, [
461
+ model,
462
+ dxGrid
463
+ ]);
464
+ return {
465
+ columns,
466
+ rows
467
+ };
468
+ };
469
+
470
470
  // src/components/GridSheet/GridSheet.tsx
471
471
  var inertPosition = {
472
472
  plane: "grid",
@@ -495,7 +495,8 @@ var frozen = {
495
495
  var sheetColDefault = {
496
496
  frozenColsStart: {
497
497
  size: 48,
498
- readonly: true
498
+ readonly: true,
499
+ focusUnfurl: false
499
500
  },
500
501
  grid: {
501
502
  size: defaultColSize,
@@ -505,7 +506,8 @@ var sheetColDefault = {
505
506
  var sheetRowDefault = {
506
507
  frozenRowsStart: {
507
508
  size: defaultRowSize,
508
- readonly: true
509
+ readonly: true,
510
+ focusUnfurl: false
509
511
  },
510
512
  grid: {
511
513
  size: defaultRowSize,
@@ -575,12 +577,14 @@ var GridSheet = () => {
575
577
  ]);
576
578
  const handleAxisResize = useCallback4(({ axis, size, index: numericIndex }) => {
577
579
  if (axis === "row") {
580
+ var _model_sheet_rowMeta, _rowId;
578
581
  const rowId = model.sheet.rows[parseInt(numericIndex)];
579
- model.sheet.rowMeta[rowId] ??= {};
582
+ (_model_sheet_rowMeta = model.sheet.rowMeta)[_rowId = rowId] ?? (_model_sheet_rowMeta[_rowId] = {});
580
583
  model.sheet.rowMeta[rowId].size = size;
581
584
  } else {
585
+ var _model_sheet_columnMeta, _columnId;
582
586
  const columnId = model.sheet.columns[parseInt(numericIndex)];
583
- model.sheet.columnMeta[columnId] ??= {};
587
+ (_model_sheet_columnMeta = model.sheet.columnMeta)[_columnId = columnId] ?? (_model_sheet_columnMeta[_columnId] = {});
584
588
  model.sheet.columnMeta[columnId].size = size;
585
589
  }
586
590
  }, [
@@ -737,7 +741,7 @@ var GridSheet = () => {
737
741
  dispatch
738
742
  ]);
739
743
  const { columns, rows } = useSheetModelDxGridProps(dxGrid, model);
740
- const extension = useMemo2(() => [
744
+ const extensions = useMemo2(() => [
741
745
  editorKeys({
742
746
  onClose: handleClose,
743
747
  ...editing?.initialContent && {
@@ -774,7 +778,7 @@ var GridSheet = () => {
774
778
  className: "relative min-bs-0 [&_.cm-editor]:!border-lb [&_.cm-editor]:!border-transparent "
775
779
  }, /* @__PURE__ */ React4.createElement(GridCellEditor, {
776
780
  getCellContent,
777
- extension,
781
+ extensions,
778
782
  onBlur: handleBlur
779
783
  }), /* @__PURE__ */ React4.createElement(Grid2.Content, {
780
784
  initialCells,
@@ -833,7 +837,7 @@ var GridSheet = () => {
833
837
  };
834
838
 
835
839
  // src/components/index.ts
836
- var SheetContainer = lazy(() => import("./SheetContainer-KDGD4AVG.mjs"));
840
+ var SheetContainer = lazy(() => import("./SheetContainer-OUN6AARA.mjs"));
837
841
 
838
842
  export {
839
843
  ComputeGraphContextProvider,
@@ -844,4 +848,4 @@ export {
844
848
  RangeList,
845
849
  SheetContainer
846
850
  };
847
- //# sourceMappingURL=chunk-JUOVL3LE.mjs.map
851
+ //# sourceMappingURL=chunk-X4EWLDT3.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/ComputeGraph/ComputeGraphContextProvider.tsx", "../../../src/components/RangeList/RangeList.tsx", "../../../src/components/index.ts", "../../../src/components/GridSheet/GridSheet.tsx", "../../../src/integrations/thread-ranges.ts", "../../../src/components/SheetContext/SheetContext.tsx", "../../../src/components/GridSheet/util.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { type PropsWithChildren, createContext, useContext } from 'react';\n\nimport { type ComputeGraph, type ComputeGraphRegistry } from '@dxos/compute';\nimport { raise } from '@dxos/debug';\nimport { type Space } from '@dxos/react-client/echo';\nimport { useAsyncState } from '@dxos/react-hooks';\n\nexport type ComputeGraphContextType = {\n registry: ComputeGraphRegistry;\n};\n\n/**\n * The compute graph context manages a ComputeGraph for each space.\n */\nexport const ComputeGraphContext = createContext<ComputeGraphContextType | undefined>(undefined);\n\nexport const ComputeGraphContextProvider = ({ registry, children }: PropsWithChildren<ComputeGraphContextType>) => {\n return <ComputeGraphContext.Provider value={{ registry }}>{children}</ComputeGraphContext.Provider>;\n};\n\nexport const useComputeGraph = (space?: Space): ComputeGraph | undefined => {\n const { registry } = useContext(ComputeGraphContext) ?? raise(new Error('Missing ComputeGraphContext'));\n const [graph] = useAsyncState(async () => {\n if (space) {\n const graph = registry.getOrCreateGraph(space);\n await graph.open();\n return graph;\n }\n }, [space, registry]);\n\n return graph;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { Schema } from 'effect';\nimport React, { useCallback } from 'react';\n\nimport { rangeToA1Notation } from '@dxos/compute';\nimport { Callout, useTranslation } from '@dxos/react-ui';\nimport { List } from '@dxos/react-ui-list';\nimport { ghostHover } from '@dxos/react-ui-theme';\n\nimport { SHEET_PLUGIN } from '../../meta';\nimport { rangeFromIndex } from '../../types';\nimport { Range, type SheetType } from '../../types';\n\nexport type RangeListProps = {\n sheet: SheetType;\n};\n\nexport const RangeList = ({ sheet }: RangeListProps) => {\n const { t } = useTranslation(SHEET_PLUGIN);\n // TODO(thure): Implement similar to comments, #8121\n const handleSelectRange = (range: Range) => {};\n const handleDeleteRange = useCallback(\n (range: Range) => {\n const index = sheet.ranges.findIndex((sheetRange) => sheetRange === range);\n sheet.ranges.splice(index, 1);\n },\n [sheet],\n );\n return (\n <>\n <h2 className='mbs-cardSpacingBlock mbe-labelSpacingBlock text-sm font-semibold'>{t('range list heading')}</h2>\n {sheet.ranges.length < 1 ? (\n <Callout.Root>\n <Callout.Title>{t('no ranges message')}</Callout.Title>\n </Callout.Root>\n ) : (\n <List.Root<Range> items={sheet.ranges} isItem={Schema.is(Range)}>\n {({ items: ranges }) =>\n ranges.map((range, i) => (\n <List.Item key={i} item={range} classNames={['p-2', ghostHover]}>\n <List.ItemDragHandle />\n <List.ItemTitle onClick={() => handleSelectRange(range)}>\n {t('range title', {\n position: rangeToA1Notation(rangeFromIndex(sheet, range.range)),\n key: t(`range key ${range.key} label`),\n value: t(`range value ${range.value} label`),\n })}\n </List.ItemTitle>\n <List.ItemDeleteButton onClick={() => handleDeleteRange(range)} />\n </List.Item>\n ))\n }\n </List.Root>\n )}\n </>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { lazy } from 'react';\n\nexport * from './ComputeGraph';\nexport * from './GridSheet';\nexport * from './RangeList';\nexport * from './SheetContext';\n\nexport const SheetContainer = lazy(() => import('./SheetContainer'));\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, {\n type FocusEvent,\n type KeyboardEvent,\n type MouseEvent,\n type WheelEvent,\n useCallback,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport { createIntent, useIntentDispatcher } from '@dxos/app-framework';\nimport { type CellRange, rangeToA1Notation } from '@dxos/compute';\nimport { defaultColSize, defaultRowSize } from '@dxos/lit-grid';\nimport { DropdownMenu, Icon, useTranslation } from '@dxos/react-ui';\nimport { useAttention } from '@dxos/react-ui-attention';\nimport {\n type DxGridCellIndex,\n type DxGridElement,\n type DxGridPosition,\n type EditorBlurHandler,\n type EditorKeyHandler,\n Grid,\n GridCellEditor,\n type GridContentProps,\n closestCell,\n editorKeys,\n parseCellIndex,\n} from '@dxos/react-ui-grid';\n\nimport { type RangeController, rangeExtension, sheetExtension } from '../../extensions';\nimport { useSelectThreadOnCellFocus, useUpdateFocusedCellOnThreadSelection } from '../../integrations';\nimport { SHEET_PLUGIN } from '../../meta';\nimport { DEFAULT_COLS, DEFAULT_ROWS, SheetAction } from '../../types';\nimport { useSheetContext } from '../SheetContext';\n\nimport { colLabelCell, rowLabelCell, useSheetModelDxGridProps } from './util';\n\nconst inertPosition: DxGridPosition = { plane: 'grid', col: 0, row: 0 };\n\nconst initialCells = {\n grid: {},\n frozenColsStart: [...Array(64)].reduce((acc, _, i) => {\n acc[`0,${i}`] = rowLabelCell(i);\n return acc;\n }, {}),\n frozenRowsStart: [...Array(12)].reduce((acc, _, i) => {\n acc[`${i},0`] = colLabelCell(i);\n return acc;\n }, {}),\n};\n\nconst frozen = {\n frozenColsStart: 1,\n frozenRowsStart: 1,\n};\n\nconst sheetColDefault = {\n frozenColsStart: { size: 48, readonly: true, focusUnfurl: false },\n grid: { size: defaultColSize, resizeable: true },\n};\nconst sheetRowDefault = {\n frozenRowsStart: { size: defaultRowSize, readonly: true, focusUnfurl: false },\n grid: { size: defaultRowSize, resizeable: true },\n};\n\nexport const GridSheet = () => {\n const { t } = useTranslation(SHEET_PLUGIN);\n const { id, model, editing, setCursor, setRange, cursor, cursorFallbackRange, activeRefs, ignoreAttention } =\n useSheetContext();\n // NOTE(thure): using `useState` instead of `useRef` works with refs provided by `@lit/react` and gives us\n // a reliable dependency for `useEffect` whereas `useLayoutEffect` does not guarantee the element will be defined.\n const [dxGrid, setDxGrid] = useState<DxGridElement | null>(null);\n const [extraplanarFocus, setExtraplanarFocus] = useState<DxGridPosition | null>(null);\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const rangeController = useRef<RangeController>();\n const { hasAttention } = useAttention(id);\n\n const handleFocus = useCallback(\n (event: FocusEvent) => {\n if (!editing) {\n const cell = closestCell(event.target);\n if (cell) {\n if (cell.plane === 'grid') {\n setCursor({ col: cell.col, row: cell.row });\n setExtraplanarFocus(null);\n } else {\n setExtraplanarFocus(cell);\n }\n } else {\n setExtraplanarFocus(null);\n }\n }\n },\n [editing],\n );\n\n // TODO(burdon): Validate formula before closing: hf.validateFormula();\n const handleClose = useCallback<EditorKeyHandler>(\n (_value, event) => {\n if (event) {\n const { key, shift } = event;\n const axis = ['Enter', 'ArrowUp', 'ArrowDown'].includes(key)\n ? 'row'\n : ['Tab', 'ArrowLeft', 'ArrowRight'].includes(key)\n ? 'col'\n : undefined;\n const delta = key.startsWith('Arrow') ? (['ArrowUp', 'ArrowLeft'].includes(key) ? -1 : 1) : shift ? -1 : 1;\n dxGrid?.refocus(axis, delta);\n }\n },\n [model, editing, dxGrid],\n );\n\n const handleBlur = useCallback<EditorBlurHandler>(\n (value) => {\n if (value !== undefined) {\n model.setValue(parseCellIndex(editing!.index), value);\n }\n },\n [model, editing],\n );\n\n const handleAxisResize = useCallback<NonNullable<GridContentProps['onAxisResize']>>(\n ({ axis, size, index: numericIndex }) => {\n if (axis === 'row') {\n const rowId = model.sheet.rows[parseInt(numericIndex)];\n model.sheet.rowMeta[rowId] ??= {};\n model.sheet.rowMeta[rowId].size = size;\n } else {\n const columnId = model.sheet.columns[parseInt(numericIndex)];\n model.sheet.columnMeta[columnId] ??= {};\n model.sheet.columnMeta[columnId].size = size;\n }\n },\n [model],\n );\n\n const handleSelect = useCallback<NonNullable<GridContentProps['onSelect']>>(\n ({ minCol, maxCol, minRow, maxRow }) => {\n const range: CellRange = { from: { col: minCol, row: minRow } };\n if (minCol !== maxCol || minRow !== maxRow) {\n range.to = { col: maxCol, row: maxRow };\n }\n if (editing) {\n // Update range selection in formula.\n rangeController.current?.setRange(rangeToA1Notation(range));\n } else {\n // Setting range while editing causes focus to move to null, avoid doing so.\n setRange(range.to ? range : undefined);\n }\n },\n [editing],\n );\n\n const handleWheel = useCallback(\n (event: WheelEvent) => {\n if (!ignoreAttention && !hasAttention) {\n event.stopPropagation();\n }\n },\n [hasAttention, ignoreAttention],\n );\n\n const selectEntireAxis = useCallback(\n (pos: DxGridPosition) => {\n switch (pos.plane) {\n case 'frozenRowsStart':\n return dxGrid?.setSelection({\n start: { col: pos.col, row: 0, plane: 'grid' },\n end: { col: pos.col, row: model.sheet.rows.length - 1, plane: 'grid' },\n });\n case 'frozenColsStart':\n return dxGrid?.setSelection({\n start: { row: pos.row, col: 0, plane: 'grid' },\n end: { row: pos.row, col: model.sheet.columns.length - 1, plane: 'grid' },\n });\n }\n },\n [dxGrid, model.sheet],\n );\n\n const handleClick = useCallback(\n (event: MouseEvent) => {\n const cell = closestCell(event.target);\n if (cell) {\n selectEntireAxis(cell);\n }\n },\n [selectEntireAxis],\n );\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent) => {\n switch (event.key) {\n case 'Backspace':\n case 'Delete':\n event.preventDefault();\n return cursorFallbackRange && model.clear(cursorFallbackRange);\n case 'Enter':\n case 'Space':\n if (dxGrid && extraplanarFocus) {\n switch (extraplanarFocus.plane) {\n case 'frozenRowsStart':\n case 'frozenColsStart':\n event.preventDefault();\n return selectEntireAxis(extraplanarFocus);\n }\n }\n }\n if (event.metaKey || event.ctrlKey) {\n switch (event.key) {\n case 'x':\n case 'X':\n event.preventDefault();\n return cursorFallbackRange && model.cut(cursorFallbackRange);\n case 'c':\n case 'C':\n event.preventDefault();\n return cursorFallbackRange && model.copy(cursorFallbackRange);\n case 'v':\n case 'V':\n event.preventDefault();\n return cursor && model.paste(cursor);\n case 'z':\n event.preventDefault();\n return event.shiftKey ? model.redo() : model.undo();\n case 'Z':\n case 'y':\n event.preventDefault();\n return model.redo();\n }\n }\n },\n [cursorFallbackRange, model, cursor, extraplanarFocus, selectEntireAxis],\n );\n\n const contextMenuAnchorRef = useRef<HTMLButtonElement | null>(null);\n const [contextMenuOpen, setContextMenuOpen] = useState<DxGridPosition | null>(null);\n const contextMenuAxis = contextMenuOpen?.plane.startsWith('frozenRows') ? 'col' : 'row';\n\n const handleContextMenu = useCallback((event: MouseEvent) => {\n const cell = closestCell(event.target);\n if (cell && cell.plane.startsWith('frozen')) {\n event.preventDefault();\n contextMenuAnchorRef.current = event.target as HTMLButtonElement;\n setContextMenuOpen(cell);\n }\n }, []);\n\n const handleAxisMenuAction = useCallback(\n (operation: 'insert-before' | 'insert-after' | 'drop') => {\n switch (operation) {\n case 'insert-before':\n case 'insert-after':\n return dispatch(\n createIntent(SheetAction.InsertAxis, {\n model,\n axis: contextMenuAxis,\n index: contextMenuOpen![contextMenuAxis] + (operation === 'insert-before' ? 0 : 1),\n }),\n );\n case 'drop':\n return dispatch(\n createIntent(SheetAction.DropAxis, {\n model,\n axis: contextMenuAxis,\n axisIndex: model.sheet[contextMenuAxis === 'row' ? 'rows' : 'columns'][contextMenuOpen![contextMenuAxis]],\n }),\n );\n }\n },\n [contextMenuAxis, contextMenuOpen, model, dispatch],\n );\n\n const { columns, rows } = useSheetModelDxGridProps(dxGrid, model);\n\n const extensions = useMemo(\n () => [\n editorKeys({ onClose: handleClose, ...(editing?.initialContent && { onNav: handleClose }) }),\n sheetExtension({ functions: model.graph.getFunctions() }),\n rangeExtension({\n onInit: (fn) => (rangeController.current = fn),\n onStateChange: (state) => {\n if (dxGrid) {\n // This can’t dispatch a setState in this component, otherwise the cell editor remounts and loses focus.\n dxGrid.mode = typeof state.activeRange === 'undefined' ? 'edit' : 'edit-select';\n }\n },\n }),\n ],\n [model, handleClose, editing],\n );\n\n const getCellContent = useCallback(\n (index: DxGridCellIndex) => {\n return model.getCellText(parseCellIndex(index));\n },\n [model],\n );\n\n useUpdateFocusedCellOnThreadSelection(dxGrid);\n useSelectThreadOnCellFocus();\n\n return (\n // TODO(thure): Why are Table’s and Sheet’s editor boxes off by 1px?\n <div role='none' className='relative min-bs-0 [&_.cm-editor]:!border-lb [&_.cm-editor]:!border-transparent '>\n <GridCellEditor getCellContent={getCellContent} extensions={extensions} onBlur={handleBlur} />\n <Grid.Content\n initialCells={initialCells}\n limitColumns={DEFAULT_COLS}\n limitRows={DEFAULT_ROWS}\n columns={columns}\n rows={rows}\n // TODO(burdon): `col` vs. `column`?\n columnDefault={sheetColDefault}\n rowDefault={sheetRowDefault}\n frozen={frozen}\n onAxisResize={handleAxisResize}\n onSelect={handleSelect}\n onFocus={handleFocus}\n onWheelCapture={handleWheel}\n onKeyDown={handleKeyDown}\n onContextMenu={handleContextMenu}\n onClick={handleClick}\n overscroll='trap'\n className='[--dx-grid-base:var(--baseSurface)] [&_.dx-grid]:absolute [&_.dx-grid]:inset-0'\n activeRefs={activeRefs}\n ref={setDxGrid}\n />\n <DropdownMenu.Root\n modal={false}\n open={!!contextMenuOpen}\n onOpenChange={(nextOpen) => setContextMenuOpen(nextOpen ? inertPosition : null)}\n >\n <DropdownMenu.VirtualTrigger virtualRef={contextMenuAnchorRef} />\n <DropdownMenu.Content side={contextMenuAxis === 'col' ? 'bottom' : 'right'} sideOffset={4} collisionPadding={8}>\n <DropdownMenu.Viewport>\n <DropdownMenu.Item\n onClick={() => handleAxisMenuAction('insert-before')}\n data-testid={`grid.${contextMenuAxis}.insert-before`}\n >\n <Icon\n size={5}\n icon={contextMenuAxis === 'col' ? 'ph--columns-plus-left--regular' : 'ph--rows-plus-top--regular'}\n />\n <span>{t(`add ${contextMenuAxis} before label`)}</span>\n </DropdownMenu.Item>\n <DropdownMenu.Item\n onClick={() => handleAxisMenuAction('insert-after')}\n data-testid={`grid.${contextMenuAxis}.insert-after`}\n >\n <Icon\n size={5}\n icon={contextMenuAxis === 'col' ? 'ph--columns-plus-right--regular' : 'ph--rows-plus-bottom--regular'}\n />\n <span>{t(`add ${contextMenuAxis} after label`)}</span>\n </DropdownMenu.Item>\n <DropdownMenu.Item\n onClick={() => handleAxisMenuAction('drop')}\n data-testid={`grid.${contextMenuAxis}.drop`}\n >\n <Icon size={5} icon='ph--backspace--regular' />\n <span>{t(`delete ${contextMenuAxis} label`)}</span>\n </DropdownMenu.Item>\n </DropdownMenu.Viewport>\n <DropdownMenu.Arrow />\n </DropdownMenu.Content>\n </DropdownMenu.Root>\n </div>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { Schema, pipe } from 'effect';\nimport { useCallback, useEffect, useMemo } from 'react';\n\nimport {\n LayoutAction,\n chain,\n createIntent,\n createResolver,\n useIntentDispatcher,\n useIntentResolver,\n} from '@dxos/app-framework';\nimport { debounce } from '@dxos/async';\nimport { type CellAddress, type CompleteCellRange, inRange } from '@dxos/compute';\nimport { Obj, Relation } from '@dxos/echo';\nimport { ATTENDABLE_PATH_SEPARATOR, DeckAction } from '@dxos/plugin-deck/types';\nimport { ThreadAction, ThreadType } from '@dxos/plugin-thread/types';\nimport { Filter, Query, fullyQualifiedId, getSpace, useQuery } from '@dxos/react-client/echo';\nimport { type DxGridElement, type GridContentProps } from '@dxos/react-ui-grid';\nimport { AnchoredTo } from '@dxos/schema';\n\nimport { useSheetContext } from '../components';\nimport { SHEET_PLUGIN } from '../meta';\n\nexport const completeCellRangeToThreadCursor = (range: CompleteCellRange): string => {\n return `${range.from.col},${range.from.row},${range.to.col},${range.to.row}`;\n};\n\nexport const parseThreadAnchorAsCellRange = (cursor: string): CompleteCellRange | null => {\n const coords = cursor.split(',');\n if (coords.length !== 4) {\n return null;\n } else {\n const [fromCol, fromRow, toCol, toRow] = coords;\n return {\n from: { col: parseInt(fromCol), row: parseInt(fromRow) },\n to: { col: parseInt(toCol), row: parseInt(toRow) },\n };\n }\n};\n\nexport const useUpdateFocusedCellOnThreadSelection = (grid: DxGridElement | null) => {\n const { model, setActiveRefs } = useSheetContext();\n const scrollIntoViewResolver = useMemo(\n () =>\n createResolver({\n intent: LayoutAction.ScrollIntoView,\n position: 'hoist',\n filter: (\n data,\n ): data is {\n part: 'current';\n subject: string;\n options: { cursor: string; ref: GridContentProps['activeRefs'] };\n } => {\n if (!Schema.is(LayoutAction.ScrollIntoView.fields.input)(data)) {\n return false;\n }\n\n return data.subject === fullyQualifiedId(model.sheet) && !!data.options?.cursor;\n },\n resolve: ({ options: { cursor, ref } }) => {\n setActiveRefs(ref);\n // TODO(Zan): Everywhere we refer to the cursor in a thread context should change to `anchor`.\n const range = parseThreadAnchorAsCellRange(cursor!);\n range && grid?.setFocus({ ...range.to, plane: 'grid' }, true);\n },\n }),\n [model.sheet, setActiveRefs],\n );\n\n useIntentResolver(SHEET_PLUGIN, scrollIntoViewResolver);\n};\n\nexport const useSelectThreadOnCellFocus = () => {\n const { model, cursor } = useSheetContext();\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n\n const space = getSpace(model.sheet);\n const anchors = useQuery(space, Query.select(Filter.ids(model.sheet.id)).targetOf(AnchoredTo));\n\n const selectClosestThread = useCallback(\n (cellAddress: CellAddress) => {\n if (!cellAddress) {\n return;\n }\n\n const closestThread = anchors.find((anchor) => {\n const source = Relation.getSource(anchor);\n if (anchor.anchor && Obj.instanceOf(ThreadType, source)) {\n const range = parseThreadAnchorAsCellRange(anchor.anchor);\n return range ? inRange(range, cellAddress) : false;\n } else {\n return false;\n }\n });\n\n if (closestThread) {\n const primary = fullyQualifiedId(model.sheet);\n const intent = pipe(\n createIntent(ThreadAction.Select, { current: fullyQualifiedId(closestThread) }),\n chain(DeckAction.ChangeCompanion, { primary, companion: `${primary}${ATTENDABLE_PATH_SEPARATOR}comments` }),\n );\n void dispatch(intent);\n }\n },\n [dispatch, anchors],\n );\n\n const debounced = useMemo(() => {\n return debounce((cellCoords: CellAddress) => requestAnimationFrame(() => selectClosestThread(cellCoords)), 50);\n }, [selectClosestThread]);\n\n useEffect(() => {\n if (!cursor) {\n return;\n }\n\n debounced(cursor);\n }, [cursor, debounced]);\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { type PropsWithChildren, createContext, useCallback, useContext, useState } from 'react';\n\nimport { type CellAddress, type CellRange, type CompleteCellRange, type ComputeGraph } from '@dxos/compute';\nimport { invariant } from '@dxos/invariant';\nimport { fullyQualifiedId } from '@dxos/react-client/echo';\nimport {\n Grid,\n type GridContentProps,\n type GridEditing,\n type GridScopedProps,\n useGridContext,\n} from '@dxos/react-ui-grid';\n\nimport { type SheetModel, useSheetModel } from '../../model';\nimport { type SheetType } from '../../types';\n\nexport type SheetContextValue = {\n id: string;\n\n model: SheetModel;\n\n // Cursor state.\n // TODO(burdon): Cursor and range should use indices.\n cursor?: CellAddress;\n setCursor: (cell: CellAddress | undefined) => void;\n range?: CellRange;\n setRange: (range: CellRange | undefined) => void;\n cursorFallbackRange?: CompleteCellRange;\n\n // Editing state (undefined if not editing).\n editing: GridEditing;\n setEditing: (editing: GridEditing) => void;\n\n // Active refs\n activeRefs: GridContentProps['activeRefs'];\n setActiveRefs: (activeRefs: GridContentProps['activeRefs']) => void;\n\n // Events.\n // TODO(burdon): Generalize.\n onInfo?: () => void;\n\n // Flags\n ignoreAttention?: boolean;\n};\n\nconst SheetContext = createContext<SheetContextValue | undefined>(undefined);\n\nexport const useSheetContext = (): SheetContextValue => {\n const context = useContext(SheetContext);\n invariant(context);\n return context;\n};\n\nconst SheetProviderImpl = ({\n model,\n onInfo,\n ignoreAttention,\n children,\n __gridScope,\n}: GridScopedProps<PropsWithChildren<Pick<SheetContextValue, 'onInfo' | 'model' | 'ignoreAttention'>>>) => {\n const { id, editing, setEditing } = useGridContext('SheetProvider', __gridScope);\n\n const [cursor, setCursorInternal] = useState<CellAddress>();\n const [range, setRangeInternal] = useState<CellRange>();\n const [cursorFallbackRange, setCursorFallbackRange] = useState<CompleteCellRange>();\n const [activeRefs, setActiveRefs] = useState<GridContentProps['activeRefs']>('');\n\n const setCursor = useCallback(\n (nextCursor?: CellAddress) => {\n setCursorInternal(nextCursor);\n setCursorFallbackRange(\n range?.to ? (range as CompleteCellRange) : nextCursor ? { from: nextCursor!, to: nextCursor! } : undefined,\n );\n },\n [range],\n );\n const setRange = useCallback(\n (nextRange?: CellRange) => {\n setRangeInternal(nextRange);\n setCursorFallbackRange(\n nextRange?.to ? (nextRange as CompleteCellRange) : cursor ? { from: cursor!, to: cursor! } : undefined,\n );\n },\n [cursor],\n );\n\n return (\n <SheetContext.Provider\n value={{\n id,\n model,\n editing,\n setEditing,\n cursor,\n setCursor,\n range,\n setRange,\n cursorFallbackRange,\n activeRefs,\n setActiveRefs,\n // TODO(burdon): Change to event.\n onInfo,\n ignoreAttention,\n }}\n >\n {children}\n </SheetContext.Provider>\n );\n};\n\nexport type SheetProviderProps = {\n graph: ComputeGraph;\n sheet: SheetType;\n readonly?: boolean;\n ignoreAttention?: boolean;\n} & Pick<SheetContextValue, 'onInfo'>;\n\nexport const SheetProvider = ({\n children,\n graph,\n sheet,\n readonly,\n ignoreAttention,\n onInfo,\n}: PropsWithChildren<SheetProviderProps>) => {\n const model = useSheetModel(graph, sheet, { readonly });\n\n return !model ? null : (\n <Grid.Root id={fullyQualifiedId(sheet)}>\n <SheetProviderImpl model={model} onInfo={onInfo} ignoreAttention={ignoreAttention}>\n {children}\n </SheetProviderImpl>\n </Grid.Root>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { useEffect, useState } from 'react';\n\nimport { inRange } from '@dxos/compute';\nimport { createDocAccessor } from '@dxos/react-client/echo';\nimport { cellClassesForFieldType, parseValue } from '@dxos/react-ui-form';\nimport {\n type DxGridAxisMeta,\n type DxGridCellValue,\n type DxGridElement,\n type DxGridPlane,\n type DxGridPlaneCells,\n type DxGridPlaneRange,\n type GridContentProps,\n colToA1Notation,\n commentedClassName,\n rowToA1Notation,\n} from '@dxos/react-ui-grid';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { type SheetModel } from '../../model';\nimport { cellClassNameForRange, rangeFromIndex } from '../../types';\n\nconst createDxGridColumns = (model: SheetModel): DxGridAxisMeta => {\n return model.sheet.columns.reduce(\n (acc: DxGridAxisMeta, columnId, numericIndex) => {\n if (model.sheet.columnMeta[columnId] && model.sheet.columnMeta[columnId].size) {\n acc.grid[numericIndex] = { size: model.sheet.columnMeta[columnId].size, resizeable: true };\n }\n return acc;\n },\n { grid: {} },\n );\n};\n\nconst createDxGridRows = (model: SheetModel): DxGridAxisMeta => {\n return model.sheet.rows.reduce(\n (acc: DxGridAxisMeta, rowId, numericIndex) => {\n if (model.sheet.rowMeta[rowId] && model.sheet.rowMeta[rowId].size) {\n acc.grid[numericIndex] = { size: model.sheet.rowMeta[rowId].size, resizeable: true };\n }\n return acc;\n },\n { grid: {} },\n );\n};\n\nconst projectCellProps = (model: SheetModel, col: number, row: number): DxGridCellValue => {\n const address = { col, row };\n const rawValue = model.getValue(address);\n const ranges = model.sheet.ranges?.filter(({ range }) => inRange(rangeFromIndex(model.sheet, range), address));\n const threadRefs = undefined;\n // TODO(wittjosiah): Update this to get threads via relations.\n // model.sheet.threads\n // ?.filter((thread) => {\n // const range = thread.target?.anchor && parseThreadAnchorAsCellRange(thread.target!.anchor);\n // return thread && range ? inRange(range, address) : false;\n // })\n // .map((thread) => fullyQualifiedId(thread!))\n // .join(' ');\n\n const description = model.getValueDescription(address);\n const type = description?.type;\n const format = description?.format;\n const classNames = ranges?.map(cellClassNameForRange).reverse();\n\n return {\n value: parseValue({ type, format, value: rawValue }),\n className: mx(cellClassesForFieldType({ type, format }), threadRefs && commentedClassName, classNames),\n dataRefs: threadRefs,\n };\n};\nconst gridCellGetter = (model: SheetModel) => {\n // TODO(thure): Actually use the cache.\n const cachedGridCells: DxGridPlaneCells = {};\n return (nextBounds: DxGridPlaneRange): DxGridPlaneCells => {\n [...Array(nextBounds.end.col - nextBounds.start.col)].forEach((_, c0) => {\n return [...Array(nextBounds.end.row - nextBounds.start.row)].forEach((_, r0) => {\n const col = nextBounds.start.col + c0;\n const row = nextBounds.start.row + r0;\n cachedGridCells[`${col},${row}`] = projectCellProps(model, col, row);\n });\n });\n return cachedGridCells;\n };\n};\n\nexport const rowLabelCell = (row: number) => ({\n value: rowToA1Notation(row),\n className: '!bg-toolbarSurface text-subdued text-end pie-1',\n resizeHandle: 'row',\n});\n\nexport const colLabelCell = (col: number) => ({\n value: colToA1Notation(col),\n className: '!bg-toolbarSurface text-subdued',\n resizeHandle: 'col',\n});\n\nconst cellGetter = (model: SheetModel) => {\n const getGridCells = gridCellGetter(model);\n return (nextBounds: DxGridPlaneRange, plane: DxGridPlane): DxGridPlaneCells => {\n switch (plane) {\n case 'grid':\n return getGridCells(nextBounds);\n case 'fixedStartStart': {\n return {\n '0,0': { className: '!bg-toolbarSurface' },\n };\n }\n case 'frozenColsStart':\n return [...Array(nextBounds.end.row - nextBounds.start.row)].reduce((acc, _, r0) => {\n const r = nextBounds.start.row + r0;\n acc[`0,${r}`] = rowLabelCell(r);\n return acc;\n }, {});\n case 'frozenRowsStart':\n return [...Array(nextBounds.end.col - nextBounds.start.col)].reduce((acc, _, c0) => {\n const c = nextBounds.start.col + c0;\n acc[`${c},0`] = colLabelCell(c);\n return acc;\n }, {});\n default:\n return {};\n }\n };\n};\n\nexport const useSheetModelDxGridProps = (\n dxGrid: DxGridElement | null,\n model: SheetModel,\n): Pick<GridContentProps, 'columns' | 'rows'> => {\n const [columns, setColumns] = useState<DxGridAxisMeta>(createDxGridColumns(model));\n const [rows, setRows] = useState<DxGridAxisMeta>(createDxGridRows(model));\n\n useEffect(() => {\n const cellsAccessor = createDocAccessor(model.sheet, ['cells']);\n if (dxGrid) {\n dxGrid.getCells = cellGetter(model);\n }\n const handleCellsUpdate = () => {\n dxGrid?.requestUpdate('initialCells');\n };\n cellsAccessor.handle.addListener('change', handleCellsUpdate);\n const unsubscribe = model.graph.update.on(handleCellsUpdate);\n return () => {\n cellsAccessor.handle.removeListener('change', handleCellsUpdate);\n unsubscribe();\n };\n }, [model, dxGrid]);\n\n useEffect(() => {\n const columnMetaAccessor = createDocAccessor(model.sheet, ['columnMeta']);\n const rowMetaAccessor = createDocAccessor(model.sheet, ['rowMeta']);\n const handleColumnMetaUpdate = () => {\n setColumns(createDxGridColumns(model));\n };\n const handleRowMetaUpdate = () => {\n setRows(createDxGridRows(model));\n };\n columnMetaAccessor.handle.addListener('change', handleColumnMetaUpdate);\n rowMetaAccessor.handle.addListener('change', handleRowMetaUpdate);\n return () => {\n columnMetaAccessor.handle.removeListener('change', handleColumnMetaUpdate);\n rowMetaAccessor.handle.removeListener('change', handleRowMetaUpdate);\n };\n }, [model, dxGrid]);\n\n return { columns, rows };\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["React", "createContext", "useContext", "raise", "useAsyncState", "ComputeGraphContext", "createContext", "undefined", "ComputeGraphContextProvider", "registry", "children", "Provider", "value", "useComputeGraph", "space", "useContext", "raise", "Error", "graph", "useAsyncState", "getOrCreateGraph", "open", "Schema", "React", "useCallback", "rangeToA1Notation", "Callout", "useTranslation", "List", "ghostHover", "RangeList", "sheet", "t", "useTranslation", "SHEET_PLUGIN", "handleSelectRange", "range", "handleDeleteRange", "useCallback", "index", "ranges", "findIndex", "sheetRange", "splice", "React", "h2", "className", "length", "Callout", "Root", "Title", "List", "items", "isItem", "Schema", "is", "Range", "map", "i", "Item", "key", "item", "classNames", "ghostHover", "ItemDragHandle", "ItemTitle", "onClick", "position", "rangeToA1Notation", "rangeFromIndex", "value", "ItemDeleteButton", "lazy", "React", "useCallback", "useMemo", "useRef", "useState", "createIntent", "useIntentDispatcher", "rangeToA1Notation", "defaultColSize", "defaultRowSize", "DropdownMenu", "Icon", "useTranslation", "useAttention", "Grid", "GridCellEditor", "closestCell", "editorKeys", "parseCellIndex", "Schema", "pipe", "useCallback", "useEffect", "useMemo", "LayoutAction", "chain", "createIntent", "createResolver", "useIntentDispatcher", "useIntentResolver", "debounce", "inRange", "Obj", "Relation", "ATTENDABLE_PATH_SEPARATOR", "DeckAction", "ThreadAction", "ThreadType", "Filter", "Query", "fullyQualifiedId", "getSpace", "useQuery", "AnchoredTo", "parseThreadAnchorAsCellRange", "cursor", "coords", "split", "length", "fromCol", "fromRow", "toCol", "toRow", "from", "col", "parseInt", "row", "to", "useUpdateFocusedCellOnThreadSelection", "grid", "model", "setActiveRefs", "useSheetContext", "scrollIntoViewResolver", "useMemo", "createResolver", "intent", "LayoutAction", "ScrollIntoView", "position", "filter", "data", "Schema", "is", "fields", "input", "subject", "fullyQualifiedId", "sheet", "options", "resolve", "ref", "range", "setFocus", "plane", "useIntentResolver", "SHEET_PLUGIN", "useSelectThreadOnCellFocus", "dispatchPromise", "dispatch", "useIntentDispatcher", "space", "getSpace", "anchors", "useQuery", "Query", "select", "Filter", "ids", "id", "targetOf", "AnchoredTo", "selectClosestThread", "useCallback", "cellAddress", "closestThread", "find", "anchor", "source", "Relation", "getSource", "Obj", "instanceOf", "ThreadType", "inRange", "primary", "pipe", "createIntent", "ThreadAction", "Select", "current", "chain", "DeckAction", "ChangeCompanion", "companion", "ATTENDABLE_PATH_SEPARATOR", "debounced", "debounce", "cellCoords", "requestAnimationFrame", "useEffect", "React", "createContext", "useCallback", "useContext", "useState", "invariant", "fullyQualifiedId", "Grid", "useGridContext", "SheetContext", "createContext", "undefined", "useSheetContext", "context", "useContext", "invariant", "SheetProviderImpl", "model", "onInfo", "ignoreAttention", "children", "__gridScope", "id", "editing", "setEditing", "useGridContext", "cursor", "setCursorInternal", "useState", "range", "setRangeInternal", "cursorFallbackRange", "setCursorFallbackRange", "activeRefs", "setActiveRefs", "setCursor", "useCallback", "nextCursor", "to", "from", "setRange", "nextRange", "React", "Provider", "value", "SheetProvider", "graph", "sheet", "readonly", "useSheetModel", "Grid", "Root", "fullyQualifiedId", "useEffect", "useState", "inRange", "createDocAccessor", "cellClassesForFieldType", "parseValue", "colToA1Notation", "commentedClassName", "rowToA1Notation", "mx", "createDxGridColumns", "model", "sheet", "columns", "reduce", "acc", "columnId", "numericIndex", "columnMeta", "size", "grid", "resizeable", "createDxGridRows", "rows", "rowId", "rowMeta", "projectCellProps", "col", "row", "address", "rawValue", "getValue", "ranges", "filter", "range", "inRange", "rangeFromIndex", "threadRefs", "undefined", "description", "getValueDescription", "type", "format", "classNames", "map", "cellClassNameForRange", "reverse", "value", "parseValue", "className", "mx", "cellClassesForFieldType", "commentedClassName", "dataRefs", "gridCellGetter", "cachedGridCells", "nextBounds", "Array", "end", "start", "forEach", "_", "c0", "r0", "rowLabelCell", "rowToA1Notation", "resizeHandle", "colLabelCell", "colToA1Notation", "cellGetter", "getGridCells", "plane", "r", "c", "useSheetModelDxGridProps", "dxGrid", "setColumns", "useState", "setRows", "useEffect", "cellsAccessor", "createDocAccessor", "getCells", "handleCellsUpdate", "requestUpdate", "handle", "addListener", "unsubscribe", "graph", "update", "on", "removeListener", "columnMetaAccessor", "rowMetaAccessor", "handleColumnMetaUpdate", "handleRowMetaUpdate", "inertPosition", "plane", "col", "row", "initialCells", "grid", "frozenColsStart", "Array", "reduce", "acc", "_", "i", "rowLabelCell", "frozenRowsStart", "colLabelCell", "frozen", "sheetColDefault", "size", "readonly", "focusUnfurl", "defaultColSize", "resizeable", "sheetRowDefault", "defaultRowSize", "GridSheet", "t", "useTranslation", "SHEET_PLUGIN", "id", "model", "editing", "setCursor", "setRange", "cursor", "cursorFallbackRange", "activeRefs", "ignoreAttention", "useSheetContext", "dxGrid", "setDxGrid", "useState", "extraplanarFocus", "setExtraplanarFocus", "dispatchPromise", "dispatch", "useIntentDispatcher", "rangeController", "useRef", "hasAttention", "useAttention", "handleFocus", "useCallback", "event", "cell", "closestCell", "target", "handleClose", "_value", "key", "shift", "axis", "includes", "undefined", "delta", "startsWith", "refocus", "handleBlur", "value", "setValue", "parseCellIndex", "index", "handleAxisResize", "numericIndex", "rowId", "sheet", "rows", "parseInt", "rowMeta", "columnId", "columns", "columnMeta", "handleSelect", "minCol", "maxCol", "minRow", "maxRow", "range", "from", "to", "current", "rangeToA1Notation", "handleWheel", "stopPropagation", "selectEntireAxis", "pos", "setSelection", "start", "end", "length", "handleClick", "handleKeyDown", "preventDefault", "clear", "metaKey", "ctrlKey", "cut", "copy", "paste", "shiftKey", "redo", "undo", "contextMenuAnchorRef", "contextMenuOpen", "setContextMenuOpen", "contextMenuAxis", "handleContextMenu", "handleAxisMenuAction", "operation", "createIntent", "SheetAction", "InsertAxis", "DropAxis", "axisIndex", "useSheetModelDxGridProps", "extensions", "useMemo", "editorKeys", "onClose", "initialContent", "onNav", "sheetExtension", "functions", "graph", "getFunctions", "rangeExtension", "onInit", "fn", "onStateChange", "state", "mode", "activeRange", "getCellContent", "getCellText", "useUpdateFocusedCellOnThreadSelection", "useSelectThreadOnCellFocus", "React", "div", "role", "className", "GridCellEditor", "onBlur", "Grid", "Content", "limitColumns", "DEFAULT_COLS", "limitRows", "DEFAULT_ROWS", "columnDefault", "rowDefault", "onAxisResize", "onSelect", "onFocus", "onWheelCapture", "onKeyDown", "onContextMenu", "onClick", "overscroll", "ref", "DropdownMenu", "Root", "modal", "open", "onOpenChange", "nextOpen", "VirtualTrigger", "virtualRef", "side", "sideOffset", "collisionPadding", "Viewport", "Item", "data-testid", "Icon", "icon", "span", "Arrow", "SheetContainer", "lazy"]
7
+ }