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

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 (121) hide show
  1. package/dist/lib/browser/{SheetContainer-BDZXBB5U.mjs → SheetContainer-KDGD4AVG.mjs} +14 -14
  2. package/dist/lib/browser/{anchor-sort-NYYZLRAA.mjs → anchor-sort-VHURGBOY.mjs} +4 -4
  3. package/dist/lib/browser/{chunk-D3G4UGEK.mjs → chunk-6AKBCBL4.mjs} +2 -2
  4. package/dist/lib/browser/{chunk-FJRLDX7Z.mjs → chunk-7HQX4NQP.mjs} +3 -3
  5. package/dist/lib/browser/{chunk-5TA43LO4.mjs → chunk-JUOVL3LE.mjs} +15 -15
  6. package/dist/lib/browser/{chunk-5TA43LO4.mjs.map → chunk-JUOVL3LE.mjs.map} +2 -2
  7. package/dist/lib/browser/{chunk-IR42IS3F.mjs → chunk-KJWZUQVA.mjs} +3 -3
  8. package/dist/lib/browser/{chunk-I7FZ4TWJ.mjs → chunk-SI4X5GUR.mjs} +11 -11
  9. package/dist/lib/browser/chunk-SI4X5GUR.mjs.map +7 -0
  10. package/dist/lib/browser/{compute-graph-registry-IXGGJJBU.mjs → compute-graph-registry-VG7VP7IV.mjs} +4 -4
  11. package/dist/lib/browser/index.mjs +20 -19
  12. package/dist/lib/browser/index.mjs.map +3 -3
  13. package/dist/lib/browser/{intent-resolver-IBBI6B74.mjs → intent-resolver-WOJGZMSV.mjs} +4 -4
  14. package/dist/lib/browser/{markdown-T4TUP4BF.mjs → markdown-VXMIPUQC.mjs} +5 -5
  15. package/dist/lib/browser/meta.json +1 -1
  16. package/dist/lib/browser/{react-surface-UI46P43F.mjs → react-surface-SE4HGAEH.mjs} +7 -7
  17. package/dist/lib/browser/types/index.mjs +2 -2
  18. package/dist/lib/node-esm/{SheetContainer-V632Q4HA.mjs → SheetContainer-RMG24NZC.mjs} +14 -14
  19. package/dist/lib/node-esm/{anchor-sort-JTNZOE67.mjs → anchor-sort-CTJGOPET.mjs} +4 -4
  20. package/dist/lib/node-esm/{chunk-Y6ND5HWX.mjs → chunk-3K5VNYOF.mjs} +2 -2
  21. package/dist/lib/node-esm/{chunk-IQ76YE6M.mjs → chunk-6SK5LJ5S.mjs} +3 -3
  22. package/dist/lib/node-esm/{chunk-C4IKYVTV.mjs → chunk-CADTJFAS.mjs} +11 -11
  23. package/dist/lib/node-esm/chunk-CADTJFAS.mjs.map +7 -0
  24. package/dist/lib/node-esm/{chunk-SOC52B67.mjs → chunk-IFMIRCZH.mjs} +15 -15
  25. package/dist/lib/node-esm/{chunk-SOC52B67.mjs.map → chunk-IFMIRCZH.mjs.map} +2 -2
  26. package/dist/lib/node-esm/{chunk-NMCVJWDT.mjs → chunk-Q6UYC4G5.mjs} +3 -3
  27. package/dist/lib/node-esm/{compute-graph-registry-7PDWXMHF.mjs → compute-graph-registry-3K3Q2A5T.mjs} +4 -4
  28. package/dist/lib/node-esm/index.mjs +20 -19
  29. package/dist/lib/node-esm/index.mjs.map +3 -3
  30. package/dist/lib/node-esm/{intent-resolver-M2HNR7PJ.mjs → intent-resolver-PZRXBNIJ.mjs} +4 -4
  31. package/dist/lib/node-esm/{markdown-WWUJ3E5F.mjs → markdown-4VPQJZNZ.mjs} +5 -5
  32. package/dist/lib/node-esm/meta.json +1 -1
  33. package/dist/lib/node-esm/{react-surface-OLXO2MVB.mjs → react-surface-LAU23XBH.mjs} +7 -7
  34. package/dist/lib/node-esm/types/index.mjs +2 -2
  35. package/dist/types/src/components/ComputeGraph/compute-graph.stories.d.ts +1 -1
  36. package/dist/types/src/components/ComputeGraph/compute-graph.stories.d.ts.map +1 -1
  37. package/dist/types/src/components/GridSheet/GridSheet.stories.d.ts +1 -1
  38. package/dist/types/src/components/GridSheet/GridSheet.stories.d.ts.map +1 -1
  39. package/dist/types/src/components/GridSheet/SheetCellEditor.stories.d.ts +1 -1
  40. package/dist/types/src/components/GridSheet/SheetCellEditor.stories.d.ts.map +1 -1
  41. package/dist/types/src/components/SheetContainer/SheetContainer.stories.d.ts +1 -1
  42. package/dist/types/src/components/SheetContainer/SheetContainer.stories.d.ts.map +1 -1
  43. package/dist/types/src/components/SheetToolbar/SheetToolbar.stories.d.ts +1 -1
  44. package/dist/types/src/components/SheetToolbar/SheetToolbar.stories.d.ts.map +1 -1
  45. package/dist/types/src/extensions/compute.stories.d.ts +1 -1
  46. package/dist/types/src/extensions/compute.stories.d.ts.map +1 -1
  47. package/dist/types/src/integrations/thread-ranges.d.ts.map +1 -1
  48. package/dist/types/src/playwright/playwright.config.d.ts +3 -0
  49. package/dist/types/src/playwright/playwright.config.d.ts.map +1 -0
  50. package/dist/types/src/playwright/sheet-manager.d.ts.map +1 -0
  51. package/dist/types/src/playwright/sheet.spec.d.ts.map +1 -0
  52. package/dist/types/src/translations.d.ts +7 -62
  53. package/dist/types/src/translations.d.ts.map +1 -1
  54. package/dist/types/src/types/schema.d.ts.map +1 -1
  55. package/dist/types/tsconfig.tsbuildinfo +1 -1
  56. package/package.json +52 -52
  57. package/src/SheetPlugin.tsx +1 -1
  58. package/src/components/ComputeGraph/compute-graph.stories.tsx +1 -1
  59. package/src/components/GridSheet/GridSheet.stories.tsx +2 -2
  60. package/src/components/GridSheet/SheetCellEditor.stories.tsx +1 -1
  61. package/src/components/SheetContainer/SheetContainer.stories.tsx +2 -2
  62. package/src/components/SheetToolbar/SheetToolbar.stories.tsx +2 -2
  63. package/src/extensions/compute.stories.tsx +1 -1
  64. package/src/integrations/thread-ranges.ts +3 -2
  65. package/src/playwright/playwright.config.ts +17 -0
  66. package/src/{testing/playwright → playwright}/sheet.spec.ts +1 -1
  67. package/src/translations.ts +8 -6
  68. package/src/types/schema.ts +1 -0
  69. package/dist/lib/browser/chunk-I7FZ4TWJ.mjs.map +0 -7
  70. package/dist/lib/node/SheetContainer-VWPM3HYJ.cjs +0 -351
  71. package/dist/lib/node/SheetContainer-VWPM3HYJ.cjs.map +0 -7
  72. package/dist/lib/node/anchor-sort-A7NABMJM.cjs +0 -39
  73. package/dist/lib/node/anchor-sort-A7NABMJM.cjs.map +0 -7
  74. package/dist/lib/node/chunk-FIM6EZ6M.cjs +0 -256
  75. package/dist/lib/node/chunk-FIM6EZ6M.cjs.map +0 -7
  76. package/dist/lib/node/chunk-JSIDCZHB.cjs +0 -41
  77. package/dist/lib/node/chunk-JSIDCZHB.cjs.map +0 -7
  78. package/dist/lib/node/chunk-LJWWS53Z.cjs +0 -34
  79. package/dist/lib/node/chunk-LJWWS53Z.cjs.map +0 -7
  80. package/dist/lib/node/chunk-N7FSEUIN.cjs +0 -927
  81. package/dist/lib/node/chunk-N7FSEUIN.cjs.map +0 -7
  82. package/dist/lib/node/chunk-ST3WA73J.cjs +0 -855
  83. package/dist/lib/node/chunk-ST3WA73J.cjs.map +0 -7
  84. package/dist/lib/node/compute-graph-registry-ARLDHPFW.cjs +0 -56
  85. package/dist/lib/node/compute-graph-registry-ARLDHPFW.cjs.map +0 -7
  86. package/dist/lib/node/index.cjs +0 -173
  87. package/dist/lib/node/index.cjs.map +0 -7
  88. package/dist/lib/node/intent-resolver-2657YDOU.cjs +0 -69
  89. package/dist/lib/node/intent-resolver-2657YDOU.cjs.map +0 -7
  90. package/dist/lib/node/markdown-DBPOAYI7.cjs +0 -40
  91. package/dist/lib/node/markdown-DBPOAYI7.cjs.map +0 -7
  92. package/dist/lib/node/meta.json +0 -1
  93. package/dist/lib/node/react-surface-XQEIRKWU.cjs +0 -71
  94. package/dist/lib/node/react-surface-XQEIRKWU.cjs.map +0 -7
  95. package/dist/lib/node/types/index.cjs +0 -84
  96. package/dist/lib/node/types/index.cjs.map +0 -7
  97. package/dist/lib/node-esm/chunk-C4IKYVTV.mjs.map +0 -7
  98. package/dist/types/src/testing/playwright/sheet-manager.d.ts.map +0 -1
  99. package/dist/types/src/testing/playwright/sheet.spec.d.ts.map +0 -1
  100. package/src/testing/playwright/playwright.config.cts +0 -18
  101. /package/dist/lib/browser/{SheetContainer-BDZXBB5U.mjs.map → SheetContainer-KDGD4AVG.mjs.map} +0 -0
  102. /package/dist/lib/browser/{anchor-sort-NYYZLRAA.mjs.map → anchor-sort-VHURGBOY.mjs.map} +0 -0
  103. /package/dist/lib/browser/{chunk-D3G4UGEK.mjs.map → chunk-6AKBCBL4.mjs.map} +0 -0
  104. /package/dist/lib/browser/{chunk-FJRLDX7Z.mjs.map → chunk-7HQX4NQP.mjs.map} +0 -0
  105. /package/dist/lib/browser/{chunk-IR42IS3F.mjs.map → chunk-KJWZUQVA.mjs.map} +0 -0
  106. /package/dist/lib/browser/{compute-graph-registry-IXGGJJBU.mjs.map → compute-graph-registry-VG7VP7IV.mjs.map} +0 -0
  107. /package/dist/lib/browser/{intent-resolver-IBBI6B74.mjs.map → intent-resolver-WOJGZMSV.mjs.map} +0 -0
  108. /package/dist/lib/browser/{markdown-T4TUP4BF.mjs.map → markdown-VXMIPUQC.mjs.map} +0 -0
  109. /package/dist/lib/browser/{react-surface-UI46P43F.mjs.map → react-surface-SE4HGAEH.mjs.map} +0 -0
  110. /package/dist/lib/node-esm/{SheetContainer-V632Q4HA.mjs.map → SheetContainer-RMG24NZC.mjs.map} +0 -0
  111. /package/dist/lib/node-esm/{anchor-sort-JTNZOE67.mjs.map → anchor-sort-CTJGOPET.mjs.map} +0 -0
  112. /package/dist/lib/node-esm/{chunk-Y6ND5HWX.mjs.map → chunk-3K5VNYOF.mjs.map} +0 -0
  113. /package/dist/lib/node-esm/{chunk-IQ76YE6M.mjs.map → chunk-6SK5LJ5S.mjs.map} +0 -0
  114. /package/dist/lib/node-esm/{chunk-NMCVJWDT.mjs.map → chunk-Q6UYC4G5.mjs.map} +0 -0
  115. /package/dist/lib/node-esm/{compute-graph-registry-7PDWXMHF.mjs.map → compute-graph-registry-3K3Q2A5T.mjs.map} +0 -0
  116. /package/dist/lib/node-esm/{intent-resolver-M2HNR7PJ.mjs.map → intent-resolver-PZRXBNIJ.mjs.map} +0 -0
  117. /package/dist/lib/node-esm/{markdown-WWUJ3E5F.mjs.map → markdown-4VPQJZNZ.mjs.map} +0 -0
  118. /package/dist/lib/node-esm/{react-surface-OLXO2MVB.mjs.map → react-surface-LAU23XBH.mjs.map} +0 -0
  119. /package/dist/types/src/{testing/playwright → playwright}/sheet-manager.d.ts +0 -0
  120. /package/dist/types/src/{testing/playwright → playwright}/sheet.spec.d.ts +0 -0
  121. /package/src/{testing/playwright → playwright}/sheet-manager.ts +0 -0
@@ -3,25 +3,25 @@ import {
3
3
  SheetProvider,
4
4
  useComputeGraph,
5
5
  useSheetContext
6
- } from "./chunk-5TA43LO4.mjs";
6
+ } from "./chunk-JUOVL3LE.mjs";
7
7
  import {
8
8
  alignKey,
9
9
  mapFormulaIndicesToRefs,
10
10
  rangeFromIndex,
11
11
  rangeToIndex
12
- } from "./chunk-I7FZ4TWJ.mjs";
13
- import "./chunk-FJRLDX7Z.mjs";
12
+ } from "./chunk-SI4X5GUR.mjs";
13
+ import "./chunk-7HQX4NQP.mjs";
14
14
  import {
15
15
  SHEET_PLUGIN
16
- } from "./chunk-D3G4UGEK.mjs";
16
+ } from "./chunk-6AKBCBL4.mjs";
17
17
 
18
- // packages/plugins/plugin-sheet/src/components/SheetContainer/SheetContainer.tsx
18
+ // src/components/SheetContainer/SheetContainer.tsx
19
19
  import { useSignals as _useSignals4 } from "@preact-signals/safe-react/tracking";
20
20
  import React3 from "react";
21
21
  import { fullyQualifiedId } from "@dxos/react-client/echo";
22
22
  import { StackItem } from "@dxos/react-ui-stack";
23
23
 
24
- // packages/plugins/plugin-sheet/src/components/FunctionEditor/FunctionEditor.tsx
24
+ // src/components/FunctionEditor/FunctionEditor.tsx
25
25
  import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
26
26
  import React from "react";
27
27
  import { addressToA1Notation, isFormula, rangeToA1Notation } from "@dxos/compute";
@@ -63,14 +63,14 @@ var FunctionEditor = () => {
63
63
  }
64
64
  };
65
65
 
66
- // packages/plugins/plugin-sheet/src/components/SheetToolbar/SheetToolbar.tsx
66
+ // src/components/SheetToolbar/SheetToolbar.tsx
67
67
  import { useSignals as _useSignals3 } from "@preact-signals/safe-react/tracking";
68
68
  import { Rx } from "@effect-rx/rx-react";
69
69
  import React2, { useMemo as useMemo2 } from "react";
70
70
  import { useAppGraph } from "@dxos/app-framework";
71
71
  import { createGapSeparator, MenuProvider, rxFromSignal, ToolbarMenu, useMenuActions } from "@dxos/react-ui-menu";
72
72
 
73
- // packages/plugins/plugin-sheet/src/components/SheetToolbar/align.ts
73
+ // src/components/SheetToolbar/align.ts
74
74
  import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
75
75
  import { useEffect } from "react";
76
76
  import { inRange } from "@dxos/compute";
@@ -161,7 +161,7 @@ var createAlign = (model, state, cursorFallbackRange) => {
161
161
  };
162
162
  };
163
163
 
164
- // packages/plugins/plugin-sheet/src/components/SheetToolbar/style.ts
164
+ // src/components/SheetToolbar/style.ts
165
165
  import { useEffect as useEffect2 } from "react";
166
166
  import { inRange as inRange2 } from "@dxos/compute";
167
167
  import { createMenuAction as createMenuAction2, createMenuItemGroup as createMenuItemGroup2 } from "@dxos/react-ui-menu";
@@ -245,14 +245,14 @@ var createStyle = (model, state, cursorFallbackRange) => {
245
245
  };
246
246
  };
247
247
 
248
- // packages/plugins/plugin-sheet/src/components/SheetToolbar/useToolbarState.ts
248
+ // src/components/SheetToolbar/useToolbarState.ts
249
249
  import { useMemo } from "react";
250
250
  import { live } from "@dxos/live-object";
251
251
  var useToolbarState = (initialState = {}) => {
252
252
  return useMemo(() => live(initialState), []);
253
253
  };
254
254
 
255
- // packages/plugins/plugin-sheet/src/components/SheetToolbar/SheetToolbar.tsx
255
+ // src/components/SheetToolbar/SheetToolbar.tsx
256
256
  var createToolbarActions = (model, state, cursorFallbackRange, customActions) => {
257
257
  return Rx.make((get) => {
258
258
  const align = get(rxFromSignal(() => createAlign(model, state, cursorFallbackRange)));
@@ -320,7 +320,7 @@ var SheetToolbar = ({ id, classNames }) => {
320
320
  }
321
321
  };
322
322
 
323
- // packages/plugins/plugin-sheet/src/components/SheetContainer/SheetContainer.tsx
323
+ // src/components/SheetContainer/SheetContainer.tsx
324
324
  var SheetContainer = ({ space, sheet, role, ignoreAttention }) => {
325
325
  var _effect = _useSignals4();
326
326
  try {
@@ -343,9 +343,9 @@ var SheetContainer = ({ space, sheet, role, ignoreAttention }) => {
343
343
  }
344
344
  };
345
345
 
346
- // packages/plugins/plugin-sheet/src/components/SheetContainer/index.ts
346
+ // src/components/SheetContainer/index.ts
347
347
  var SheetContainer_default = SheetContainer;
348
348
  export {
349
349
  SheetContainer_default as default
350
350
  };
351
- //# sourceMappingURL=SheetContainer-BDZXBB5U.mjs.map
351
+ //# sourceMappingURL=SheetContainer-KDGD4AVG.mjs.map
@@ -1,10 +1,10 @@
1
1
  import {
2
2
  SheetType,
3
3
  compareIndexPositions
4
- } from "./chunk-I7FZ4TWJ.mjs";
5
- import "./chunk-D3G4UGEK.mjs";
4
+ } from "./chunk-SI4X5GUR.mjs";
5
+ import "./chunk-6AKBCBL4.mjs";
6
6
 
7
- // packages/plugins/plugin-sheet/src/capabilities/anchor-sort.ts
7
+ // src/capabilities/anchor-sort.ts
8
8
  import { Capabilities, contributes } from "@dxos/app-framework";
9
9
  import { Type } from "@dxos/echo";
10
10
  import { getTarget } from "@dxos/react-client/echo";
@@ -21,4 +21,4 @@ var anchor_sort_default = () => contributes(Capabilities.AnchorSort, {
21
21
  export {
22
22
  anchor_sort_default as default
23
23
  };
24
- //# sourceMappingURL=anchor-sort-NYYZLRAA.mjs.map
24
+ //# sourceMappingURL=anchor-sort-VHURGBOY.mjs.map
@@ -1,4 +1,4 @@
1
- // packages/plugins/plugin-sheet/src/meta.ts
1
+ // src/meta.ts
2
2
  var SHEET_PLUGIN = "dxos.org/plugin/sheet";
3
3
  var meta = {
4
4
  id: SHEET_PLUGIN,
@@ -15,4 +15,4 @@ export {
15
15
  SHEET_PLUGIN,
16
16
  meta
17
17
  };
18
- //# sourceMappingURL=chunk-D3G4UGEK.mjs.map
18
+ //# sourceMappingURL=chunk-6AKBCBL4.mjs.map
@@ -1,4 +1,4 @@
1
- // packages/plugins/plugin-sheet/src/extensions/compute.ts
1
+ // src/extensions/compute.ts
2
2
  import { syntaxTree } from "@codemirror/language";
3
3
  import { RangeSetBuilder, StateEffect, StateField } from "@codemirror/state";
4
4
  import { Decoration, EditorView, ViewPlugin, WidgetType } from "@codemirror/view";
@@ -9,7 +9,7 @@ import { documentId, singleValueFacet } from "@dxos/react-ui-editor";
9
9
  var updateAllDecorations = StateEffect.define();
10
10
  var computeGraphFacet = singleValueFacet();
11
11
 
12
- // packages/plugins/plugin-sheet/src/extensions/editor/extension.ts
12
+ // src/extensions/editor/extension.ts
13
13
  import { acceptCompletion, autocompletion, completionStatus, startCompletion } from "@codemirror/autocomplete";
14
14
  import { HighlightStyle, syntaxHighlighting } from "@codemirror/language";
15
15
  import { ViewPlugin as ViewPlugin2, keymap } from "@codemirror/view";
@@ -231,4 +231,4 @@ export {
231
231
  sheetExtension,
232
232
  rangeExtension
233
233
  };
234
- //# sourceMappingURL=chunk-FJRLDX7Z.mjs.map
234
+ //# sourceMappingURL=chunk-7HQX4NQP.mjs.map
@@ -6,16 +6,16 @@ import {
6
6
  cellClassNameForRange,
7
7
  rangeFromIndex,
8
8
  useSheetModel
9
- } from "./chunk-I7FZ4TWJ.mjs";
9
+ } from "./chunk-SI4X5GUR.mjs";
10
10
  import {
11
11
  rangeExtension,
12
12
  sheetExtension
13
- } from "./chunk-FJRLDX7Z.mjs";
13
+ } from "./chunk-7HQX4NQP.mjs";
14
14
  import {
15
15
  SHEET_PLUGIN
16
- } from "./chunk-D3G4UGEK.mjs";
16
+ } from "./chunk-6AKBCBL4.mjs";
17
17
 
18
- // packages/plugins/plugin-sheet/src/components/ComputeGraph/ComputeGraphContextProvider.tsx
18
+ // src/components/ComputeGraph/ComputeGraphContextProvider.tsx
19
19
  import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
20
20
  import React, { createContext, useContext } from "react";
21
21
  import { raise } from "@dxos/debug";
@@ -48,7 +48,7 @@ var useComputeGraph = (space) => {
48
48
  return graph;
49
49
  };
50
50
 
51
- // packages/plugins/plugin-sheet/src/components/RangeList/RangeList.tsx
51
+ // src/components/RangeList/RangeList.tsx
52
52
  import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
53
53
  import { Schema } from "effect";
54
54
  import React2, { useCallback } from "react";
@@ -94,10 +94,10 @@ var RangeList = ({ sheet }) => {
94
94
  }
95
95
  };
96
96
 
97
- // packages/plugins/plugin-sheet/src/components/index.ts
97
+ // src/components/index.ts
98
98
  import { lazy } from "react";
99
99
 
100
- // packages/plugins/plugin-sheet/src/components/GridSheet/GridSheet.tsx
100
+ // src/components/GridSheet/GridSheet.tsx
101
101
  import { useSignals as _useSignals4 } from "@preact-signals/safe-react/tracking";
102
102
  import React4, { useCallback as useCallback4, useMemo as useMemo2, useRef, useState as useState3 } from "react";
103
103
  import { createIntent as createIntent2, useIntentDispatcher as useIntentDispatcher2 } from "@dxos/app-framework";
@@ -107,7 +107,7 @@ import { DropdownMenu, Icon, useTranslation as useTranslation2 } from "@dxos/rea
107
107
  import { useAttention } from "@dxos/react-ui-attention";
108
108
  import { closestCell, editorKeys, parseCellIndex, Grid as Grid2, GridCellEditor } from "@dxos/react-ui-grid";
109
109
 
110
- // packages/plugins/plugin-sheet/src/components/GridSheet/util.ts
110
+ // src/components/GridSheet/util.ts
111
111
  import { useEffect, useState } from "react";
112
112
  import { inRange } from "@dxos/compute";
113
113
  import { createDocAccessor } from "@dxos/react-client/echo";
@@ -278,7 +278,7 @@ var useSheetModelDxGridProps = (dxGrid, model) => {
278
278
  };
279
279
  };
280
280
 
281
- // packages/plugins/plugin-sheet/src/integrations/thread-ranges.ts
281
+ // src/integrations/thread-ranges.ts
282
282
  import { Schema as Schema2, pipe } from "effect";
283
283
  import { useCallback as useCallback2, useEffect as useEffect2, useMemo } from "react";
284
284
  import { createIntent, createResolver, LayoutAction, useIntentResolver, useIntentDispatcher, chain } from "@dxos/app-framework";
@@ -380,13 +380,13 @@ var useSelectThreadOnCellFocus = () => {
380
380
  ]);
381
381
  };
382
382
 
383
- // packages/plugins/plugin-sheet/src/components/SheetContext/SheetContext.tsx
383
+ // src/components/SheetContext/SheetContext.tsx
384
384
  import { useSignals as _useSignals3 } from "@preact-signals/safe-react/tracking";
385
385
  import React3, { createContext as createContext2, useCallback as useCallback3, useContext as useContext2, useState as useState2 } from "react";
386
386
  import { invariant } from "@dxos/invariant";
387
387
  import { fullyQualifiedId as fullyQualifiedId2 } from "@dxos/react-client/echo";
388
388
  import { Grid, useGridContext } from "@dxos/react-ui-grid";
389
- var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/plugin-sheet/src/components/SheetContext/SheetContext.tsx";
389
+ var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-sheet/src/components/SheetContext/SheetContext.tsx";
390
390
  var SheetContext = /* @__PURE__ */ createContext2(void 0);
391
391
  var useSheetContext = () => {
392
392
  const context = useContext2(SheetContext);
@@ -467,7 +467,7 @@ var SheetProvider = ({ children, graph, sheet, readonly, ignoreAttention, onInfo
467
467
  }
468
468
  };
469
469
 
470
- // packages/plugins/plugin-sheet/src/components/GridSheet/GridSheet.tsx
470
+ // src/components/GridSheet/GridSheet.tsx
471
471
  var inertPosition = {
472
472
  plane: "grid",
473
473
  col: 0,
@@ -832,8 +832,8 @@ var GridSheet = () => {
832
832
  }
833
833
  };
834
834
 
835
- // packages/plugins/plugin-sheet/src/components/index.ts
836
- var SheetContainer = lazy(() => import("./SheetContainer-BDZXBB5U.mjs"));
835
+ // src/components/index.ts
836
+ var SheetContainer = lazy(() => import("./SheetContainer-KDGD4AVG.mjs"));
837
837
 
838
838
  export {
839
839
  ComputeGraphContextProvider,
@@ -844,4 +844,4 @@ export {
844
844
  RangeList,
845
845
  SheetContainer
846
846
  };
847
- //# sourceMappingURL=chunk-5TA43LO4.mjs.map
847
+ //# sourceMappingURL=chunk-JUOVL3LE.mjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/components/ComputeGraph/ComputeGraphContextProvider.tsx", "../../../src/components/RangeList/RangeList.tsx", "../../../src/components/index.ts", "../../../src/components/GridSheet/GridSheet.tsx", "../../../src/components/GridSheet/util.ts", "../../../src/integrations/thread-ranges.ts", "../../../src/components/SheetContext/SheetContext.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { createContext, type PropsWithChildren, 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 useCallback,\n useMemo,\n useRef,\n useState,\n type FocusEvent,\n type KeyboardEvent,\n type WheelEvent,\n type MouseEvent,\n} from 'react';\n\nimport { createIntent, useIntentDispatcher } from '@dxos/app-framework';\nimport { rangeToA1Notation, type CellRange } 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 closestCell,\n editorKeys,\n parseCellIndex,\n Grid,\n GridCellEditor,\n type DxGridElement,\n type DxGridPosition,\n type DxGridCellIndex,\n type EditorKeyHandler,\n type EditorBlurHandler,\n type GridContentProps,\n} from '@dxos/react-ui-grid';\n\nimport { colLabelCell, rowLabelCell, useSheetModelDxGridProps } from './util';\nimport { rangeExtension, sheetExtension, type RangeController } 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\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 },\n grid: { size: defaultColSize, resizeable: true },\n};\nconst sheetRowDefault = {\n frozenRowsStart: { size: defaultRowSize, readonly: true },\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 extension = 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} extension={extension} 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 { useEffect, useState } from 'react';\n\nimport { inRange } from '@dxos/compute';\nimport { createDocAccessor } from '@dxos/react-client/echo';\nimport { parseValue, cellClassesForFieldType } from '@dxos/react-ui-form';\nimport {\n type GridContentProps,\n type DxGridElement,\n type DxGridAxisMeta,\n type DxGridPlane,\n type DxGridPlaneRange,\n type DxGridPlaneCells,\n type DxGridCellValue,\n colToA1Notation,\n rowToA1Notation,\n commentedClassName,\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", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { Schema, pipe } from 'effect';\nimport { useCallback, useEffect, useMemo } from 'react';\n\nimport {\n createIntent,\n createResolver,\n LayoutAction,\n useIntentResolver,\n useIntentDispatcher,\n chain,\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, fullyQualifiedId, getSpace, Query, useQuery } from '@dxos/react-client/echo';\nimport { type DxGridElement, type DxGridPosition, 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: DxGridPosition) => requestAnimationFrame(() => selectClosestThread(cellCoords)), 50);\n }, [selectClosestThread]);\n\n useEffect(() => {\n if (!cursor) {\n return;\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 ComputeGraph, type CellAddress, type CellRange, type CompleteCellRange } 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"],
5
- "mappings": "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",
4
+ "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { createContext, type PropsWithChildren, 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 useCallback,\n useMemo,\n useRef,\n useState,\n type FocusEvent,\n type KeyboardEvent,\n type WheelEvent,\n type MouseEvent,\n} from 'react';\n\nimport { createIntent, useIntentDispatcher } from '@dxos/app-framework';\nimport { rangeToA1Notation, type CellRange } 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 closestCell,\n editorKeys,\n parseCellIndex,\n Grid,\n GridCellEditor,\n type DxGridElement,\n type DxGridPosition,\n type DxGridCellIndex,\n type EditorKeyHandler,\n type EditorBlurHandler,\n type GridContentProps,\n} from '@dxos/react-ui-grid';\n\nimport { colLabelCell, rowLabelCell, useSheetModelDxGridProps } from './util';\nimport { rangeExtension, sheetExtension, type RangeController } 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\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 },\n grid: { size: defaultColSize, resizeable: true },\n};\nconst sheetRowDefault = {\n frozenRowsStart: { size: defaultRowSize, readonly: true },\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 extension = 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} extension={extension} 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 { useEffect, useState } from 'react';\n\nimport { inRange } from '@dxos/compute';\nimport { createDocAccessor } from '@dxos/react-client/echo';\nimport { parseValue, cellClassesForFieldType } from '@dxos/react-ui-form';\nimport {\n type GridContentProps,\n type DxGridElement,\n type DxGridAxisMeta,\n type DxGridPlane,\n type DxGridPlaneRange,\n type DxGridPlaneCells,\n type DxGridCellValue,\n colToA1Notation,\n rowToA1Notation,\n commentedClassName,\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", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { Schema, pipe } from 'effect';\nimport { useCallback, useEffect, useMemo } from 'react';\n\nimport {\n createIntent,\n createResolver,\n LayoutAction,\n useIntentResolver,\n useIntentDispatcher,\n chain,\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, fullyQualifiedId, getSpace, Query, 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 ComputeGraph, type CellAddress, type CellRange, type CompleteCellRange } 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"],
5
+ "mappings": "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",
6
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", "closestCell", "editorKeys", "parseCellIndex", "Grid", "GridCellEditor", "useEffect", "useState", "inRange", "createDocAccessor", "parseValue", "cellClassesForFieldType", "colToA1Notation", "rowToA1Notation", "commentedClassName", "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", "Schema", "pipe", "useCallback", "useEffect", "useMemo", "createIntent", "createResolver", "LayoutAction", "useIntentResolver", "useIntentDispatcher", "chain", "debounce", "inRange", "Obj", "Relation", "ATTENDABLE_PATH_SEPARATOR", "DeckAction", "ThreadAction", "ThreadType", "Filter", "fullyQualifiedId", "getSpace", "Query", "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", "inertPosition", "plane", "col", "row", "initialCells", "grid", "frozenColsStart", "Array", "reduce", "acc", "_", "i", "rowLabelCell", "frozenRowsStart", "colLabelCell", "frozen", "sheetColDefault", "size", "readonly", "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", "extension", "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
7
  }
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  SHEET_PLUGIN
3
- } from "./chunk-D3G4UGEK.mjs";
3
+ } from "./chunk-6AKBCBL4.mjs";
4
4
 
5
- // packages/plugins/plugin-sheet/src/capabilities/capabilities.ts
5
+ // src/capabilities/capabilities.ts
6
6
  import { defineCapability } from "@dxos/app-framework";
7
7
  (function(SheetCapabilities2) {
8
8
  SheetCapabilities2.ComputeGraphRegistry = defineCapability(`${SHEET_PLUGIN}/capability/compute-graph-registry`);
@@ -12,4 +12,4 @@ var SheetCapabilities;
12
12
  export {
13
13
  SheetCapabilities
14
14
  };
15
- //# sourceMappingURL=chunk-IR42IS3F.mjs.map
15
+ //# sourceMappingURL=chunk-KJWZUQVA.mjs.map
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  SHEET_PLUGIN
3
- } from "./chunk-D3G4UGEK.mjs";
3
+ } from "./chunk-6AKBCBL4.mjs";
4
4
 
5
- // packages/plugins/plugin-sheet/src/types/schema.ts
5
+ // src/types/schema.ts
6
6
  import { Schema } from "effect";
7
7
  import { Type } from "@dxos/echo";
8
8
  var CellValue = Schema.Struct({
@@ -47,7 +47,7 @@ var SheetType = Schema.Struct({
47
47
  version: "0.1.0"
48
48
  }));
49
49
 
50
- // packages/plugins/plugin-sheet/src/types/sheet-range-types.ts
50
+ // src/types/sheet-range-types.ts
51
51
  var alignKey = "alignment";
52
52
  var commentKey = "comment";
53
53
  var styleKey = "style";
@@ -80,10 +80,10 @@ var cellClassNameForRange = ({ key, value }) => {
80
80
  }
81
81
  };
82
82
 
83
- // packages/plugins/plugin-sheet/src/types/types.ts
83
+ // src/types/types.ts
84
84
  import { Schema as Schema2 } from "effect";
85
85
 
86
- // packages/plugins/plugin-sheet/src/model/sheet-model.ts
86
+ // src/model/sheet-model.ts
87
87
  import { Event } from "@dxos/async";
88
88
  import { addressFromA1Notation, addressToA1Notation, createSheetName, isFormula, DetailedCellError, ExportedCellChange } from "@dxos/compute";
89
89
  import { Resource } from "@dxos/context";
@@ -92,7 +92,7 @@ import { FormatEnum, TypeEnum } from "@dxos/echo-schema";
92
92
  import { invariant } from "@dxos/invariant";
93
93
  import { PublicKey } from "@dxos/keys";
94
94
  import { log } from "@dxos/log";
95
- var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/plugin-sheet/src/model/sheet-model.ts";
95
+ var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-sheet/src/model/sheet-model.ts";
96
96
  var typeMap = {
97
97
  BOOLEAN: {
98
98
  type: TypeEnum.Boolean
@@ -653,7 +653,7 @@ var SheetModel = class extends Resource {
653
653
  }
654
654
  };
655
655
 
656
- // packages/plugins/plugin-sheet/src/model/useSheetModel.ts
656
+ // src/model/useSheetModel.ts
657
657
  import { useEffect, useState } from "react";
658
658
  var useSheetModel = (graph, sheet, { readonly } = {}) => {
659
659
  const [model, setModel] = useState();
@@ -681,7 +681,7 @@ var useSheetModel = (graph, sheet, { readonly } = {}) => {
681
681
  return model;
682
682
  };
683
683
 
684
- // packages/plugins/plugin-sheet/src/types/types.ts
684
+ // src/types/types.ts
685
685
  (function(SheetAction2) {
686
686
  const SHEET_ACTION = `${SHEET_PLUGIN}/action`;
687
687
  class Create extends Schema2.TaggedClass()(`${SHEET_ACTION}/create`, {
@@ -729,12 +729,12 @@ var useSheetModel = (graph, sheet, { readonly } = {}) => {
729
729
  })(SheetAction || (SheetAction = {}));
730
730
  var SheetAction;
731
731
 
732
- // packages/plugins/plugin-sheet/src/types/util.ts
732
+ // src/types/util.ts
733
733
  import { addressFromA1Notation as addressFromA1Notation2, addressToA1Notation as addressToA1Notation2, isFormula as isFormula2 } from "@dxos/compute";
734
734
  import { randomBytes } from "@dxos/crypto";
735
735
  import { Obj as Obj2 } from "@dxos/echo";
736
736
  import { invariant as invariant2 } from "@dxos/invariant";
737
- var __dxlog_file2 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-sheet/src/types/util.ts";
737
+ var __dxlog_file2 = "/__w/dxos/dxos/packages/plugins/plugin-sheet/src/types/util.ts";
738
738
  var MAX_ROWS = 500;
739
739
  var MAX_COLS = 676;
740
740
  var DEFAULT_ROWS = 50;
@@ -889,4 +889,4 @@ export {
889
889
  mapFormulaRefsToIndices,
890
890
  mapFormulaIndicesToRefs
891
891
  };
892
- //# sourceMappingURL=chunk-I7FZ4TWJ.mjs.map
892
+ //# sourceMappingURL=chunk-SI4X5GUR.mjs.map