@dxos/plugin-sheet 0.8.2-main.fbd8ed0 → 0.8.2-staging.42af850

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 (136) hide show
  1. package/dist/lib/browser/{SheetContainer-UV7RMPXS.mjs → SheetContainer-GXPG3ZDN.mjs} +141 -162
  2. package/dist/lib/browser/SheetContainer-GXPG3ZDN.mjs.map +7 -0
  3. package/dist/lib/browser/anchor-sort-CUTFYIT4.mjs +24 -0
  4. package/dist/lib/browser/anchor-sort-CUTFYIT4.mjs.map +7 -0
  5. package/dist/lib/browser/{chunk-N2FOQHUH.mjs → chunk-5FLX3UGU.mjs} +8 -17
  6. package/dist/lib/browser/chunk-5FLX3UGU.mjs.map +7 -0
  7. package/dist/lib/browser/chunk-AYMJXZFS.mjs +847 -0
  8. package/dist/lib/browser/chunk-AYMJXZFS.mjs.map +7 -0
  9. package/dist/lib/browser/{chunk-AT5ZK6JD.mjs → chunk-FJRLDX7Z.mjs} +1 -1
  10. package/dist/lib/browser/chunk-FJRLDX7Z.mjs.map +7 -0
  11. package/dist/lib/browser/{chunk-EMSCNWEK.mjs → chunk-IR42IS3F.mjs} +2 -2
  12. package/dist/lib/{node-esm/chunk-76T5X4VP.mjs.map → browser/chunk-IR42IS3F.mjs.map} +1 -1
  13. package/dist/lib/browser/{compute-graph-registry-MBJKPAHX.mjs → compute-graph-registry-IXGGJJBU.mjs} +2 -2
  14. package/dist/lib/browser/index.mjs +15 -14
  15. package/dist/lib/browser/index.mjs.map +3 -3
  16. package/dist/lib/browser/{intent-resolver-DN7JXDAV.mjs → intent-resolver-UI4DHURQ.mjs} +2 -2
  17. package/dist/lib/browser/{markdown-57MKY5WB.mjs → markdown-T4TUP4BF.mjs} +3 -3
  18. package/dist/lib/browser/meta.json +1 -1
  19. package/dist/lib/browser/{react-surface-NQU63B63.mjs → react-surface-KI6T5M2X.mjs} +5 -5
  20. package/dist/lib/browser/types/index.mjs +1 -1
  21. package/dist/lib/node/SheetContainer-UUDOHLZR.cjs +351 -0
  22. package/dist/lib/node/SheetContainer-UUDOHLZR.cjs.map +7 -0
  23. package/dist/lib/node/{thread-E7YPGR5T.cjs → anchor-sort-LTLYUTUP.cjs} +17 -10
  24. package/dist/lib/node/anchor-sort-LTLYUTUP.cjs.map +7 -0
  25. package/dist/lib/node/{chunk-HLSQVT3C.cjs → chunk-76NESQLB.cjs} +10 -19
  26. package/dist/lib/node/chunk-76NESQLB.cjs.map +7 -0
  27. package/dist/lib/node/chunk-BXBNSNDK.cjs +855 -0
  28. package/dist/lib/node/chunk-BXBNSNDK.cjs.map +7 -0
  29. package/dist/lib/node/{chunk-LEV7OSTK.cjs → chunk-FIM6EZ6M.cjs} +4 -4
  30. package/dist/lib/node/chunk-FIM6EZ6M.cjs.map +7 -0
  31. package/dist/lib/node/{chunk-O2FOEUYB.cjs → chunk-LJWWS53Z.cjs} +5 -5
  32. package/dist/lib/node/{chunk-O2FOEUYB.cjs.map → chunk-LJWWS53Z.cjs.map} +1 -1
  33. package/dist/lib/node/{compute-graph-registry-EBBDN6ZX.cjs → compute-graph-registry-ARLDHPFW.cjs} +6 -6
  34. package/dist/lib/node/index.cjs +21 -20
  35. package/dist/lib/node/index.cjs.map +3 -3
  36. package/dist/lib/node/{intent-resolver-OPF56TAL.cjs → intent-resolver-EVLGL7VZ.cjs} +9 -9
  37. package/dist/lib/node/{markdown-Q3RXYPHQ.cjs → markdown-DBPOAYI7.cjs} +8 -8
  38. package/dist/lib/node/meta.json +1 -1
  39. package/dist/lib/node/{react-surface-7SAA5DX3.cjs → react-surface-QHAPOAR2.cjs} +14 -14
  40. package/dist/lib/node/types/index.cjs +29 -29
  41. package/dist/lib/node/types/index.cjs.map +1 -1
  42. package/dist/lib/node-esm/{SheetContainer-XW7B2AJI.mjs → SheetContainer-44KHKMPI.mjs} +141 -162
  43. package/dist/lib/node-esm/SheetContainer-44KHKMPI.mjs.map +7 -0
  44. package/dist/lib/node-esm/anchor-sort-3E2VGLO6.mjs +25 -0
  45. package/dist/lib/node-esm/anchor-sort-3E2VGLO6.mjs.map +7 -0
  46. package/dist/lib/node-esm/{chunk-LYZV4Q4C.mjs → chunk-DIF3IOAB.mjs} +8 -17
  47. package/dist/lib/node-esm/chunk-DIF3IOAB.mjs.map +7 -0
  48. package/dist/lib/node-esm/chunk-GCCM7R45.mjs +848 -0
  49. package/dist/lib/node-esm/chunk-GCCM7R45.mjs.map +7 -0
  50. package/dist/lib/node-esm/{chunk-76T5X4VP.mjs → chunk-IQ76YE6M.mjs} +2 -2
  51. package/dist/lib/{browser/chunk-EMSCNWEK.mjs.map → node-esm/chunk-IQ76YE6M.mjs.map} +1 -1
  52. package/dist/lib/node-esm/{chunk-HXBUY5ET.mjs → chunk-NMCVJWDT.mjs} +1 -1
  53. package/dist/lib/node-esm/chunk-NMCVJWDT.mjs.map +7 -0
  54. package/dist/lib/node-esm/{compute-graph-registry-TVG6RN2J.mjs → compute-graph-registry-7PDWXMHF.mjs} +2 -2
  55. package/dist/lib/node-esm/index.mjs +15 -14
  56. package/dist/lib/node-esm/index.mjs.map +3 -3
  57. package/dist/lib/node-esm/{intent-resolver-7AN5CN4R.mjs → intent-resolver-TPOH5JM5.mjs} +2 -2
  58. package/dist/lib/node-esm/{markdown-ACHAWUOE.mjs → markdown-WWUJ3E5F.mjs} +3 -3
  59. package/dist/lib/node-esm/meta.json +1 -1
  60. package/dist/lib/node-esm/{react-surface-BPNN7RSE.mjs → react-surface-XT2J3S67.mjs} +5 -5
  61. package/dist/lib/node-esm/types/index.mjs +1 -1
  62. package/dist/types/src/SheetPlugin.d.ts.map +1 -1
  63. package/dist/types/src/capabilities/anchor-sort.d.ts +6 -0
  64. package/dist/types/src/capabilities/anchor-sort.d.ts.map +1 -0
  65. package/dist/types/src/capabilities/index.d.ts +4 -4
  66. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  67. package/dist/types/src/components/GridSheet/util.d.ts.map +1 -1
  68. package/dist/types/src/components/SheetContainer/SheetContainer.stories.d.ts.map +1 -1
  69. package/dist/types/src/components/SheetToolbar/SheetToolbar.d.ts +2 -2
  70. package/dist/types/src/components/SheetToolbar/SheetToolbar.d.ts.map +1 -1
  71. package/dist/types/src/components/SheetToolbar/useToolbarState.d.ts +2 -3
  72. package/dist/types/src/components/SheetToolbar/useToolbarState.d.ts.map +1 -1
  73. package/dist/types/src/integrations/thread-ranges.d.ts.map +1 -1
  74. package/dist/types/src/model/sheet-model.d.ts.map +1 -1
  75. package/dist/types/src/serializer.d.ts.map +1 -1
  76. package/dist/types/src/testing/playwright/sheet-manager.d.ts.map +1 -1
  77. package/dist/types/src/types/schema.d.ts +0 -207
  78. package/dist/types/src/types/schema.d.ts.map +1 -1
  79. package/dist/types/src/types/util.d.ts.map +1 -1
  80. package/package.json +49 -48
  81. package/src/SheetPlugin.tsx +7 -5
  82. package/src/capabilities/anchor-sort.ts +22 -0
  83. package/src/capabilities/index.ts +1 -1
  84. package/src/components/FunctionEditor/FunctionEditor.tsx +1 -1
  85. package/src/components/GridSheet/util.ts +10 -9
  86. package/src/components/SheetContainer/SheetContainer.stories.tsx +2 -1
  87. package/src/components/SheetContainer/SheetContainer.tsx +1 -1
  88. package/src/components/SheetToolbar/SheetToolbar.stories.tsx +1 -1
  89. package/src/components/SheetToolbar/SheetToolbar.tsx +44 -33
  90. package/src/components/SheetToolbar/useToolbarState.ts +1 -2
  91. package/src/extensions/compute.ts +1 -1
  92. package/src/integrations/thread-ranges.ts +12 -14
  93. package/src/model/sheet-model.ts +17 -17
  94. package/src/serializer.ts +1 -2
  95. package/src/testing/playwright/sheet-manager.ts +9 -9
  96. package/src/types/schema.ts +1 -5
  97. package/src/types/util.ts +0 -1
  98. package/dist/lib/browser/SheetContainer-UV7RMPXS.mjs.map +0 -7
  99. package/dist/lib/browser/chunk-AT5ZK6JD.mjs.map +0 -7
  100. package/dist/lib/browser/chunk-N2FOQHUH.mjs.map +0 -7
  101. package/dist/lib/browser/chunk-TN7LTDHU.mjs +0 -826
  102. package/dist/lib/browser/chunk-TN7LTDHU.mjs.map +0 -7
  103. package/dist/lib/browser/thread-WU64QL2A.mjs +0 -17
  104. package/dist/lib/browser/thread-WU64QL2A.mjs.map +0 -7
  105. package/dist/lib/node/SheetContainer-GR2KDOAE.cjs +0 -368
  106. package/dist/lib/node/SheetContainer-GR2KDOAE.cjs.map +0 -7
  107. package/dist/lib/node/chunk-CN7OBGYV.cjs +0 -833
  108. package/dist/lib/node/chunk-CN7OBGYV.cjs.map +0 -7
  109. package/dist/lib/node/chunk-HLSQVT3C.cjs.map +0 -7
  110. package/dist/lib/node/chunk-LEV7OSTK.cjs.map +0 -7
  111. package/dist/lib/node/thread-E7YPGR5T.cjs.map +0 -7
  112. package/dist/lib/node-esm/SheetContainer-XW7B2AJI.mjs.map +0 -7
  113. package/dist/lib/node-esm/chunk-3JJ7ETTJ.mjs +0 -827
  114. package/dist/lib/node-esm/chunk-3JJ7ETTJ.mjs.map +0 -7
  115. package/dist/lib/node-esm/chunk-HXBUY5ET.mjs.map +0 -7
  116. package/dist/lib/node-esm/chunk-LYZV4Q4C.mjs.map +0 -7
  117. package/dist/lib/node-esm/thread-ULESW6IX.mjs +0 -18
  118. package/dist/lib/node-esm/thread-ULESW6IX.mjs.map +0 -7
  119. package/dist/types/src/capabilities/thread.d.ts +0 -6
  120. package/dist/types/src/capabilities/thread.d.ts.map +0 -1
  121. package/dist/types/src/components/SheetToolbar/comment.d.ts +0 -25
  122. package/dist/types/src/components/SheetToolbar/comment.d.ts.map +0 -1
  123. package/src/capabilities/thread.ts +0 -14
  124. package/src/components/SheetToolbar/comment.ts +0 -84
  125. /package/dist/lib/browser/{compute-graph-registry-MBJKPAHX.mjs.map → compute-graph-registry-IXGGJJBU.mjs.map} +0 -0
  126. /package/dist/lib/browser/{intent-resolver-DN7JXDAV.mjs.map → intent-resolver-UI4DHURQ.mjs.map} +0 -0
  127. /package/dist/lib/browser/{markdown-57MKY5WB.mjs.map → markdown-T4TUP4BF.mjs.map} +0 -0
  128. /package/dist/lib/browser/{react-surface-NQU63B63.mjs.map → react-surface-KI6T5M2X.mjs.map} +0 -0
  129. /package/dist/lib/node/{compute-graph-registry-EBBDN6ZX.cjs.map → compute-graph-registry-ARLDHPFW.cjs.map} +0 -0
  130. /package/dist/lib/node/{intent-resolver-OPF56TAL.cjs.map → intent-resolver-EVLGL7VZ.cjs.map} +0 -0
  131. /package/dist/lib/node/{markdown-Q3RXYPHQ.cjs.map → markdown-DBPOAYI7.cjs.map} +0 -0
  132. /package/dist/lib/node/{react-surface-7SAA5DX3.cjs.map → react-surface-QHAPOAR2.cjs.map} +0 -0
  133. /package/dist/lib/node-esm/{compute-graph-registry-TVG6RN2J.mjs.map → compute-graph-registry-7PDWXMHF.mjs.map} +0 -0
  134. /package/dist/lib/node-esm/{intent-resolver-7AN5CN4R.mjs.map → intent-resolver-TPOH5JM5.mjs.map} +0 -0
  135. /package/dist/lib/node-esm/{markdown-ACHAWUOE.mjs.map → markdown-WWUJ3E5F.mjs.map} +0 -0
  136. /package/dist/lib/node-esm/{react-surface-BPNN7RSE.mjs.map → react-surface-XT2J3S67.mjs.map} +0 -0
@@ -1,833 +0,0 @@
1
- "use strict";
2
- var __create = Object.create;
3
- var __defProp = Object.defineProperty;
4
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
- var __getOwnPropNames = Object.getOwnPropertyNames;
6
- var __getProtoOf = Object.getPrototypeOf;
7
- var __hasOwnProp = Object.prototype.hasOwnProperty;
8
- var __export = (target, all) => {
9
- for (var name in all)
10
- __defProp(target, name, { get: all[name], enumerable: true });
11
- };
12
- var __copyProps = (to, from, except, desc) => {
13
- if (from && typeof from === "object" || typeof from === "function") {
14
- for (let key of __getOwnPropNames(from))
15
- if (!__hasOwnProp.call(to, key) && key !== except)
16
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
- }
18
- return to;
19
- };
20
- var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
- // If the importer is in node compatibility mode or this is not an ESM
22
- // file that has been converted to a CommonJS file using a Babel-
23
- // compatible transform (i.e. "__esModule" has not been set), then set
24
- // "default" to the CommonJS "module.exports" for node compatibility.
25
- isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
- mod
27
- ));
28
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
- var chunk_CN7OBGYV_exports = {};
30
- __export(chunk_CN7OBGYV_exports, {
31
- ComputeGraphContextProvider: () => ComputeGraphContextProvider,
32
- GridSheet: () => GridSheet,
33
- RangeList: () => RangeList,
34
- SheetContainer: () => SheetContainer,
35
- SheetProvider: () => SheetProvider,
36
- completeCellRangeToThreadCursor: () => completeCellRangeToThreadCursor,
37
- useComputeGraph: () => useComputeGraph,
38
- useSheetContext: () => useSheetContext
39
- });
40
- module.exports = __toCommonJS(chunk_CN7OBGYV_exports);
41
- var import_chunk_LEV7OSTK = require("./chunk-LEV7OSTK.cjs");
42
- var import_chunk_HLSQVT3C = require("./chunk-HLSQVT3C.cjs");
43
- var import_chunk_JSIDCZHB = require("./chunk-JSIDCZHB.cjs");
44
- var import_react = __toESM(require("react"));
45
- var import_debug = require("@dxos/debug");
46
- var import_react_hooks = require("@dxos/react-hooks");
47
- var import_effect = require("effect");
48
- var import_react2 = __toESM(require("react"));
49
- var import_compute = require("@dxos/compute");
50
- var import_react_ui = require("@dxos/react-ui");
51
- var import_react_ui_list = require("@dxos/react-ui-list");
52
- var import_react_ui_theme = require("@dxos/react-ui-theme");
53
- var import_react3 = require("react");
54
- var import_react4 = __toESM(require("react"));
55
- var import_app_framework = require("@dxos/app-framework");
56
- var import_compute2 = require("@dxos/compute");
57
- var import_lit_grid = require("@dxos/lit-grid");
58
- var import_react_ui2 = require("@dxos/react-ui");
59
- var import_react_ui_attention = require("@dxos/react-ui-attention");
60
- var import_react_ui_grid = require("@dxos/react-ui-grid");
61
- var import_react5 = require("react");
62
- var import_compute3 = require("@dxos/compute");
63
- var import_echo = require("@dxos/react-client/echo");
64
- var import_react_ui_form = require("@dxos/react-ui-form");
65
- var import_react_ui_grid2 = require("@dxos/react-ui-grid");
66
- var import_react_ui_theme2 = require("@dxos/react-ui-theme");
67
- var import_effect2 = require("effect");
68
- var import_react6 = require("react");
69
- var import_app_framework2 = require("@dxos/app-framework");
70
- var import_async = require("@dxos/async");
71
- var import_compute4 = require("@dxos/compute");
72
- var import_types = require("@dxos/plugin-deck/types");
73
- var import_types2 = require("@dxos/plugin-thread/types");
74
- var import_echo2 = require("@dxos/react-client/echo");
75
- var import_react7 = __toESM(require("react"));
76
- var import_invariant = require("@dxos/invariant");
77
- var import_echo3 = require("@dxos/react-client/echo");
78
- var import_react_ui_grid3 = require("@dxos/react-ui-grid");
79
- var ComputeGraphContext = /* @__PURE__ */ (0, import_react.createContext)(void 0);
80
- var ComputeGraphContextProvider = ({ registry, children }) => {
81
- return /* @__PURE__ */ import_react.default.createElement(ComputeGraphContext.Provider, {
82
- value: {
83
- registry
84
- }
85
- }, children);
86
- };
87
- var useComputeGraph = (space) => {
88
- const { registry } = (0, import_react.useContext)(ComputeGraphContext) ?? (0, import_debug.raise)(new Error("Missing ComputeGraphContext"));
89
- const [graph] = (0, import_react_hooks.useAsyncState)(async () => {
90
- if (space) {
91
- const graph2 = registry.getOrCreateGraph(space);
92
- await graph2.open();
93
- return graph2;
94
- }
95
- }, [
96
- space,
97
- registry
98
- ]);
99
- return graph;
100
- };
101
- var RangeList = ({ sheet }) => {
102
- const { t } = (0, import_react_ui.useTranslation)(import_chunk_JSIDCZHB.SHEET_PLUGIN);
103
- const handleSelectRange = (range) => {
104
- };
105
- const handleDeleteRange = (0, import_react2.useCallback)((range) => {
106
- const index = sheet.ranges.findIndex((sheetRange) => sheetRange === range);
107
- sheet.ranges.splice(index, 1);
108
- }, [
109
- sheet
110
- ]);
111
- return /* @__PURE__ */ import_react2.default.createElement(import_react2.default.Fragment, null, /* @__PURE__ */ import_react2.default.createElement("h2", {
112
- className: "p-2 text-sm font-semibold"
113
- }, t("range list heading")), /* @__PURE__ */ import_react2.default.createElement(import_react_ui_list.List.Root, {
114
- items: sheet.ranges,
115
- isItem: import_effect.Schema.is(import_chunk_HLSQVT3C.Range)
116
- }, ({ items: ranges }) => ranges.map((range, i) => /* @__PURE__ */ import_react2.default.createElement(import_react_ui_list.List.Item, {
117
- key: i,
118
- item: range,
119
- classNames: [
120
- "p-2",
121
- import_react_ui_theme.ghostHover
122
- ]
123
- }, /* @__PURE__ */ import_react2.default.createElement(import_react_ui_list.List.ItemDragHandle, null), /* @__PURE__ */ import_react2.default.createElement(import_react_ui_list.List.ItemTitle, {
124
- onClick: () => handleSelectRange(range)
125
- }, t("range title", {
126
- position: (0, import_compute.rangeToA1Notation)((0, import_chunk_HLSQVT3C.rangeFromIndex)(sheet, range.range)),
127
- key: t(`range key ${range.key} label`),
128
- value: t(`range value ${range.value} label`)
129
- })), /* @__PURE__ */ import_react2.default.createElement(import_react_ui_list.List.ItemDeleteButton, {
130
- onClick: () => handleDeleteRange(range)
131
- })))));
132
- };
133
- var completeCellRangeToThreadCursor = (range) => {
134
- return `${range.from.col},${range.from.row},${range.to.col},${range.to.row}`;
135
- };
136
- var parseThreadAnchorAsCellRange = (cursor) => {
137
- const coords = cursor.split(",");
138
- if (coords.length !== 4) {
139
- return null;
140
- } else {
141
- const [fromCol, fromRow, toCol, toRow] = coords;
142
- return {
143
- from: {
144
- col: parseInt(fromCol),
145
- row: parseInt(fromRow)
146
- },
147
- to: {
148
- col: parseInt(toCol),
149
- row: parseInt(toRow)
150
- }
151
- };
152
- }
153
- };
154
- var useUpdateFocusedCellOnThreadSelection = (grid) => {
155
- const { model, setActiveRefs } = useSheetContext();
156
- const scrollIntoViewResolver = (0, import_react6.useMemo)(() => (0, import_app_framework2.createResolver)({
157
- intent: import_app_framework2.LayoutAction.ScrollIntoView,
158
- position: "hoist",
159
- filter: (data) => {
160
- if (!import_effect2.Schema.is(import_app_framework2.LayoutAction.ScrollIntoView.fields.input)(data)) {
161
- return false;
162
- }
163
- return data.subject === (0, import_echo2.fullyQualifiedId)(model.sheet) && !!data.options?.cursor;
164
- },
165
- resolve: ({ options: { cursor, ref } }) => {
166
- setActiveRefs(ref);
167
- const range = parseThreadAnchorAsCellRange(cursor);
168
- range && grid?.setFocus({
169
- ...range.to,
170
- plane: "grid"
171
- }, true);
172
- }
173
- }), [
174
- model.sheet,
175
- setActiveRefs
176
- ]);
177
- (0, import_app_framework2.useIntentResolver)(import_chunk_JSIDCZHB.SHEET_PLUGIN, scrollIntoViewResolver);
178
- };
179
- var useSelectThreadOnCellFocus = () => {
180
- const { model, cursor } = useSheetContext();
181
- const { dispatchPromise: dispatch } = (0, import_app_framework2.useIntentDispatcher)();
182
- const threads = (0, import_react6.useMemo)(() => model.sheet.threads?.filter((thread) => !!thread) ?? [], [
183
- // TODO(thure): Surely we can find a better dependency for this…
184
- JSON.stringify(model.sheet.threads)
185
- ]);
186
- const selectClosestThread = (0, import_react6.useCallback)((cellAddress) => {
187
- if (!cellAddress || !threads) {
188
- return;
189
- }
190
- const closestThread = threads?.find((ref) => {
191
- if (ref.target?.anchor) {
192
- const range = parseThreadAnchorAsCellRange(ref.target.anchor);
193
- return range ? (0, import_compute4.inRange)(range, cellAddress) : false;
194
- } else {
195
- return false;
196
- }
197
- });
198
- if (closestThread) {
199
- const primary = (0, import_echo2.fullyQualifiedId)(model.sheet);
200
- const intent = (0, import_effect2.pipe)((0, import_app_framework2.createIntent)(import_types2.ThreadAction.Select, {
201
- current: (0, import_echo2.fullyQualifiedId)(closestThread)
202
- }), (0, import_app_framework2.chain)(import_types.DeckAction.ChangeCompanion, {
203
- primary,
204
- companion: `${primary}${import_types.ATTENDABLE_PATH_SEPARATOR}comments`
205
- }));
206
- void dispatch(intent);
207
- }
208
- }, [
209
- dispatch,
210
- threads
211
- ]);
212
- const debounced = (0, import_react6.useMemo)(() => {
213
- return (0, import_async.debounce)((cellCoords) => requestAnimationFrame(() => selectClosestThread(cellCoords)), 50);
214
- }, [
215
- selectClosestThread
216
- ]);
217
- (0, import_react6.useEffect)(() => {
218
- if (!cursor) {
219
- return;
220
- }
221
- debounced(cursor);
222
- }, [
223
- cursor,
224
- debounced
225
- ]);
226
- };
227
- var createDxGridColumns = (model) => {
228
- return model.sheet.columns.reduce((acc, columnId, numericIndex) => {
229
- if (model.sheet.columnMeta[columnId] && model.sheet.columnMeta[columnId].size) {
230
- acc.grid[numericIndex] = {
231
- size: model.sheet.columnMeta[columnId].size,
232
- resizeable: true
233
- };
234
- }
235
- return acc;
236
- }, {
237
- grid: {}
238
- });
239
- };
240
- var createDxGridRows = (model) => {
241
- return model.sheet.rows.reduce((acc, rowId, numericIndex) => {
242
- if (model.sheet.rowMeta[rowId] && model.sheet.rowMeta[rowId].size) {
243
- acc.grid[numericIndex] = {
244
- size: model.sheet.rowMeta[rowId].size,
245
- resizeable: true
246
- };
247
- }
248
- return acc;
249
- }, {
250
- grid: {}
251
- });
252
- };
253
- var projectCellProps = (model, col, row) => {
254
- const address = {
255
- col,
256
- row
257
- };
258
- const rawValue = model.getValue(address);
259
- const ranges = model.sheet.ranges?.filter(({ range }) => (0, import_compute3.inRange)((0, import_chunk_HLSQVT3C.rangeFromIndex)(model.sheet, range), address));
260
- const threadRefs = model.sheet.threads?.filter((thread) => {
261
- const range = thread.target?.anchor && parseThreadAnchorAsCellRange(thread.target.anchor);
262
- return thread && range ? (0, import_compute3.inRange)(range, address) : false;
263
- }).map((thread) => (0, import_echo.fullyQualifiedId)(thread)).join(" ");
264
- const description = model.getValueDescription(address);
265
- const type = description?.type;
266
- const format = description?.format;
267
- const classNames = ranges?.map(import_chunk_HLSQVT3C.cellClassNameForRange).reverse();
268
- return {
269
- value: (0, import_react_ui_form.parseValue)({
270
- type,
271
- format,
272
- value: rawValue
273
- }),
274
- className: (0, import_react_ui_theme2.mx)((0, import_react_ui_form.cellClassesForFieldType)({
275
- type,
276
- format
277
- }), threadRefs && import_react_ui_grid2.commentedClassName, classNames),
278
- dataRefs: threadRefs
279
- };
280
- };
281
- var gridCellGetter = (model) => {
282
- const cachedGridCells = {};
283
- return (nextBounds) => {
284
- [
285
- ...Array(nextBounds.end.col - nextBounds.start.col)
286
- ].forEach((_, c0) => {
287
- return [
288
- ...Array(nextBounds.end.row - nextBounds.start.row)
289
- ].forEach((_2, r0) => {
290
- const col = nextBounds.start.col + c0;
291
- const row = nextBounds.start.row + r0;
292
- cachedGridCells[`${col},${row}`] = projectCellProps(model, col, row);
293
- });
294
- });
295
- return cachedGridCells;
296
- };
297
- };
298
- var rowLabelCell = (row) => ({
299
- value: (0, import_react_ui_grid2.rowToA1Notation)(row),
300
- className: "!bg-toolbarSurface text-subdued text-end pie-1",
301
- resizeHandle: "row"
302
- });
303
- var colLabelCell = (col) => ({
304
- value: (0, import_react_ui_grid2.colToA1Notation)(col),
305
- className: "!bg-toolbarSurface text-subdued",
306
- resizeHandle: "col"
307
- });
308
- var cellGetter = (model) => {
309
- const getGridCells = gridCellGetter(model);
310
- return (nextBounds, plane) => {
311
- switch (plane) {
312
- case "grid":
313
- return getGridCells(nextBounds);
314
- case "fixedStartStart": {
315
- return {
316
- "0,0": {
317
- className: "!bg-toolbarSurface"
318
- }
319
- };
320
- }
321
- case "frozenColsStart":
322
- return [
323
- ...Array(nextBounds.end.row - nextBounds.start.row)
324
- ].reduce((acc, _, r0) => {
325
- const r = nextBounds.start.row + r0;
326
- acc[`0,${r}`] = rowLabelCell(r);
327
- return acc;
328
- }, {});
329
- case "frozenRowsStart":
330
- return [
331
- ...Array(nextBounds.end.col - nextBounds.start.col)
332
- ].reduce((acc, _, c0) => {
333
- const c = nextBounds.start.col + c0;
334
- acc[`${c},0`] = colLabelCell(c);
335
- return acc;
336
- }, {});
337
- default:
338
- return {};
339
- }
340
- };
341
- };
342
- var useSheetModelDxGridProps = (dxGrid, model) => {
343
- const [columns, setColumns] = (0, import_react5.useState)(createDxGridColumns(model));
344
- const [rows, setRows] = (0, import_react5.useState)(createDxGridRows(model));
345
- (0, import_react5.useEffect)(() => {
346
- const cellsAccessor = (0, import_echo.createDocAccessor)(model.sheet, [
347
- "cells"
348
- ]);
349
- if (dxGrid) {
350
- dxGrid.getCells = cellGetter(model);
351
- }
352
- const handleCellsUpdate = () => {
353
- dxGrid?.requestUpdate("initialCells");
354
- };
355
- cellsAccessor.handle.addListener("change", handleCellsUpdate);
356
- const unsubscribe = model.graph.update.on(handleCellsUpdate);
357
- return () => {
358
- cellsAccessor.handle.removeListener("change", handleCellsUpdate);
359
- unsubscribe();
360
- };
361
- }, [
362
- model,
363
- dxGrid
364
- ]);
365
- (0, import_react5.useEffect)(() => {
366
- const columnMetaAccessor = (0, import_echo.createDocAccessor)(model.sheet, [
367
- "columnMeta"
368
- ]);
369
- const rowMetaAccessor = (0, import_echo.createDocAccessor)(model.sheet, [
370
- "rowMeta"
371
- ]);
372
- const handleColumnMetaUpdate = () => {
373
- setColumns(createDxGridColumns(model));
374
- };
375
- const handleRowMetaUpdate = () => {
376
- setRows(createDxGridRows(model));
377
- };
378
- columnMetaAccessor.handle.addListener("change", handleColumnMetaUpdate);
379
- rowMetaAccessor.handle.addListener("change", handleRowMetaUpdate);
380
- return () => {
381
- columnMetaAccessor.handle.removeListener("change", handleColumnMetaUpdate);
382
- rowMetaAccessor.handle.removeListener("change", handleRowMetaUpdate);
383
- };
384
- }, [
385
- model,
386
- dxGrid
387
- ]);
388
- return {
389
- columns,
390
- rows
391
- };
392
- };
393
- var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/plugin-sheet/src/components/SheetContext/SheetContext.tsx";
394
- var SheetContext = /* @__PURE__ */ (0, import_react7.createContext)(void 0);
395
- var useSheetContext = () => {
396
- const context = (0, import_react7.useContext)(SheetContext);
397
- (0, import_invariant.invariant)(context, void 0, {
398
- F: __dxlog_file,
399
- L: 54,
400
- S: void 0,
401
- A: [
402
- "context",
403
- ""
404
- ]
405
- });
406
- return context;
407
- };
408
- var SheetProviderImpl = ({ model, onInfo, ignoreAttention, children, __gridScope }) => {
409
- const { id, editing, setEditing } = (0, import_react_ui_grid3.useGridContext)("SheetProvider", __gridScope);
410
- const [cursor, setCursorInternal] = (0, import_react7.useState)();
411
- const [range, setRangeInternal] = (0, import_react7.useState)();
412
- const [cursorFallbackRange, setCursorFallbackRange] = (0, import_react7.useState)();
413
- const [activeRefs, setActiveRefs] = (0, import_react7.useState)("");
414
- const setCursor = (0, import_react7.useCallback)((nextCursor) => {
415
- setCursorInternal(nextCursor);
416
- setCursorFallbackRange(range?.to ? range : nextCursor ? {
417
- from: nextCursor,
418
- to: nextCursor
419
- } : void 0);
420
- }, [
421
- range
422
- ]);
423
- const setRange = (0, import_react7.useCallback)((nextRange) => {
424
- setRangeInternal(nextRange);
425
- setCursorFallbackRange(nextRange?.to ? nextRange : cursor ? {
426
- from: cursor,
427
- to: cursor
428
- } : void 0);
429
- }, [
430
- cursor
431
- ]);
432
- return /* @__PURE__ */ import_react7.default.createElement(SheetContext.Provider, {
433
- value: {
434
- id,
435
- model,
436
- editing,
437
- setEditing,
438
- cursor,
439
- setCursor,
440
- range,
441
- setRange,
442
- cursorFallbackRange,
443
- activeRefs,
444
- setActiveRefs,
445
- // TODO(burdon): Change to event.
446
- onInfo,
447
- ignoreAttention
448
- }
449
- }, children);
450
- };
451
- var SheetProvider = ({ children, graph, sheet, readonly, ignoreAttention, onInfo }) => {
452
- const model = (0, import_chunk_HLSQVT3C.useSheetModel)(graph, sheet, {
453
- readonly
454
- });
455
- return !model ? null : /* @__PURE__ */ import_react7.default.createElement(import_react_ui_grid3.Grid.Root, {
456
- id: (0, import_echo3.fullyQualifiedId)(sheet)
457
- }, /* @__PURE__ */ import_react7.default.createElement(SheetProviderImpl, {
458
- model,
459
- onInfo,
460
- ignoreAttention
461
- }, children));
462
- };
463
- var inertPosition = {
464
- plane: "grid",
465
- col: 0,
466
- row: 0
467
- };
468
- var initialCells = {
469
- grid: {},
470
- frozenColsStart: [
471
- ...Array(64)
472
- ].reduce((acc, _, i) => {
473
- acc[`0,${i}`] = rowLabelCell(i);
474
- return acc;
475
- }, {}),
476
- frozenRowsStart: [
477
- ...Array(12)
478
- ].reduce((acc, _, i) => {
479
- acc[`${i},0`] = colLabelCell(i);
480
- return acc;
481
- }, {})
482
- };
483
- var frozen = {
484
- frozenColsStart: 1,
485
- frozenRowsStart: 1
486
- };
487
- var sheetColDefault = {
488
- frozenColsStart: {
489
- size: 48,
490
- readonly: true
491
- },
492
- grid: {
493
- size: import_lit_grid.defaultColSize,
494
- resizeable: true
495
- }
496
- };
497
- var sheetRowDefault = {
498
- frozenRowsStart: {
499
- size: import_lit_grid.defaultRowSize,
500
- readonly: true
501
- },
502
- grid: {
503
- size: import_lit_grid.defaultRowSize,
504
- resizeable: true
505
- }
506
- };
507
- var GridSheet = () => {
508
- const { t } = (0, import_react_ui2.useTranslation)(import_chunk_JSIDCZHB.SHEET_PLUGIN);
509
- const { id, model, editing, setCursor, setRange, cursor, cursorFallbackRange, activeRefs, ignoreAttention } = useSheetContext();
510
- const [dxGrid, setDxGrid] = (0, import_react4.useState)(null);
511
- const [extraplanarFocus, setExtraplanarFocus] = (0, import_react4.useState)(null);
512
- const { dispatchPromise: dispatch } = (0, import_app_framework.useIntentDispatcher)();
513
- const rangeController = (0, import_react4.useRef)();
514
- const { hasAttention } = (0, import_react_ui_attention.useAttention)(id);
515
- const handleFocus = (0, import_react4.useCallback)((event) => {
516
- if (!editing) {
517
- const cell = (0, import_react_ui_grid.closestCell)(event.target);
518
- if (cell) {
519
- if (cell.plane === "grid") {
520
- setCursor({
521
- col: cell.col,
522
- row: cell.row
523
- });
524
- setExtraplanarFocus(null);
525
- } else {
526
- setExtraplanarFocus(cell);
527
- }
528
- } else {
529
- setExtraplanarFocus(null);
530
- }
531
- }
532
- }, [
533
- editing
534
- ]);
535
- const handleClose = (0, import_react4.useCallback)((_value, event) => {
536
- if (event) {
537
- const { key, shift } = event;
538
- const axis = [
539
- "Enter",
540
- "ArrowUp",
541
- "ArrowDown"
542
- ].includes(key) ? "row" : [
543
- "Tab",
544
- "ArrowLeft",
545
- "ArrowRight"
546
- ].includes(key) ? "col" : void 0;
547
- const delta = key.startsWith("Arrow") ? [
548
- "ArrowUp",
549
- "ArrowLeft"
550
- ].includes(key) ? -1 : 1 : shift ? -1 : 1;
551
- dxGrid?.refocus(axis, delta);
552
- }
553
- }, [
554
- model,
555
- editing,
556
- dxGrid
557
- ]);
558
- const handleBlur = (0, import_react4.useCallback)((value) => {
559
- if (value !== void 0) {
560
- model.setValue((0, import_react_ui_grid.parseCellIndex)(editing.index), value);
561
- }
562
- }, [
563
- model,
564
- editing
565
- ]);
566
- const handleAxisResize = (0, import_react4.useCallback)(({ axis, size, index: numericIndex }) => {
567
- if (axis === "row") {
568
- const rowId = model.sheet.rows[parseInt(numericIndex)];
569
- model.sheet.rowMeta[rowId] ??= {};
570
- model.sheet.rowMeta[rowId].size = size;
571
- } else {
572
- const columnId = model.sheet.columns[parseInt(numericIndex)];
573
- model.sheet.columnMeta[columnId] ??= {};
574
- model.sheet.columnMeta[columnId].size = size;
575
- }
576
- }, [
577
- model
578
- ]);
579
- const handleSelect = (0, import_react4.useCallback)(({ minCol, maxCol, minRow, maxRow }) => {
580
- const range = {
581
- from: {
582
- col: minCol,
583
- row: minRow
584
- }
585
- };
586
- if (minCol !== maxCol || minRow !== maxRow) {
587
- range.to = {
588
- col: maxCol,
589
- row: maxRow
590
- };
591
- }
592
- if (editing) {
593
- rangeController.current?.setRange((0, import_compute2.rangeToA1Notation)(range));
594
- } else {
595
- setRange(range.to ? range : void 0);
596
- }
597
- }, [
598
- editing
599
- ]);
600
- const handleWheel = (0, import_react4.useCallback)((event) => {
601
- if (!ignoreAttention && !hasAttention) {
602
- event.stopPropagation();
603
- }
604
- }, [
605
- hasAttention,
606
- ignoreAttention
607
- ]);
608
- const selectEntireAxis = (0, import_react4.useCallback)((pos) => {
609
- switch (pos.plane) {
610
- case "frozenRowsStart":
611
- return dxGrid?.setSelection({
612
- start: {
613
- col: pos.col,
614
- row: 0,
615
- plane: "grid"
616
- },
617
- end: {
618
- col: pos.col,
619
- row: model.sheet.rows.length - 1,
620
- plane: "grid"
621
- }
622
- });
623
- case "frozenColsStart":
624
- return dxGrid?.setSelection({
625
- start: {
626
- row: pos.row,
627
- col: 0,
628
- plane: "grid"
629
- },
630
- end: {
631
- row: pos.row,
632
- col: model.sheet.columns.length - 1,
633
- plane: "grid"
634
- }
635
- });
636
- }
637
- }, [
638
- dxGrid,
639
- model.sheet
640
- ]);
641
- const handleClick = (0, import_react4.useCallback)((event) => {
642
- const cell = (0, import_react_ui_grid.closestCell)(event.target);
643
- if (cell) {
644
- selectEntireAxis(cell);
645
- }
646
- }, [
647
- selectEntireAxis
648
- ]);
649
- const handleKeyDown = (0, import_react4.useCallback)((event) => {
650
- switch (event.key) {
651
- case "Backspace":
652
- case "Delete":
653
- event.preventDefault();
654
- return cursorFallbackRange && model.clear(cursorFallbackRange);
655
- case "Enter":
656
- case "Space":
657
- if (dxGrid && extraplanarFocus) {
658
- switch (extraplanarFocus.plane) {
659
- case "frozenRowsStart":
660
- case "frozenColsStart":
661
- event.preventDefault();
662
- return selectEntireAxis(extraplanarFocus);
663
- }
664
- }
665
- }
666
- if (event.metaKey || event.ctrlKey) {
667
- switch (event.key) {
668
- case "x":
669
- case "X":
670
- event.preventDefault();
671
- return cursorFallbackRange && model.cut(cursorFallbackRange);
672
- case "c":
673
- case "C":
674
- event.preventDefault();
675
- return cursorFallbackRange && model.copy(cursorFallbackRange);
676
- case "v":
677
- case "V":
678
- event.preventDefault();
679
- return cursor && model.paste(cursor);
680
- case "z":
681
- event.preventDefault();
682
- return event.shiftKey ? model.redo() : model.undo();
683
- case "Z":
684
- case "y":
685
- event.preventDefault();
686
- return model.redo();
687
- }
688
- }
689
- }, [
690
- cursorFallbackRange,
691
- model,
692
- cursor,
693
- extraplanarFocus,
694
- selectEntireAxis
695
- ]);
696
- const contextMenuAnchorRef = (0, import_react4.useRef)(null);
697
- const [contextMenuOpen, setContextMenuOpen] = (0, import_react4.useState)(null);
698
- const contextMenuAxis = contextMenuOpen?.plane.startsWith("frozenRows") ? "col" : "row";
699
- const handleContextMenu = (0, import_react4.useCallback)((event) => {
700
- const cell = (0, import_react_ui_grid.closestCell)(event.target);
701
- if (cell && cell.plane.startsWith("frozen")) {
702
- event.preventDefault();
703
- contextMenuAnchorRef.current = event.target;
704
- setContextMenuOpen(cell);
705
- }
706
- }, []);
707
- const handleAxisMenuAction = (0, import_react4.useCallback)((operation) => {
708
- switch (operation) {
709
- case "insert-before":
710
- case "insert-after":
711
- return dispatch((0, import_app_framework.createIntent)(import_chunk_HLSQVT3C.SheetAction.InsertAxis, {
712
- model,
713
- axis: contextMenuAxis,
714
- index: contextMenuOpen[contextMenuAxis] + (operation === "insert-before" ? 0 : 1)
715
- }));
716
- case "drop":
717
- return dispatch((0, import_app_framework.createIntent)(import_chunk_HLSQVT3C.SheetAction.DropAxis, {
718
- model,
719
- axis: contextMenuAxis,
720
- axisIndex: model.sheet[contextMenuAxis === "row" ? "rows" : "columns"][contextMenuOpen[contextMenuAxis]]
721
- }));
722
- }
723
- }, [
724
- contextMenuAxis,
725
- contextMenuOpen,
726
- model,
727
- dispatch
728
- ]);
729
- const { columns, rows } = useSheetModelDxGridProps(dxGrid, model);
730
- const extension = (0, import_react4.useMemo)(() => [
731
- (0, import_react_ui_grid.editorKeys)({
732
- onClose: handleClose,
733
- ...editing?.initialContent && {
734
- onNav: handleClose
735
- }
736
- }),
737
- (0, import_chunk_LEV7OSTK.sheetExtension)({
738
- functions: model.graph.getFunctions()
739
- }),
740
- (0, import_chunk_LEV7OSTK.rangeExtension)({
741
- onInit: (fn) => rangeController.current = fn,
742
- onStateChange: (state) => {
743
- if (dxGrid) {
744
- dxGrid.mode = typeof state.activeRange === "undefined" ? "edit" : "edit-select";
745
- }
746
- }
747
- })
748
- ], [
749
- model,
750
- handleClose,
751
- editing
752
- ]);
753
- const getCellContent = (0, import_react4.useCallback)((index) => {
754
- return model.getCellText((0, import_react_ui_grid.parseCellIndex)(index));
755
- }, [
756
- model
757
- ]);
758
- useUpdateFocusedCellOnThreadSelection(dxGrid);
759
- useSelectThreadOnCellFocus();
760
- return (
761
- // TODO(thure): Why are Table’s and Sheet’s editor boxes off by 1px?
762
- /* @__PURE__ */ import_react4.default.createElement("div", {
763
- role: "none",
764
- className: "relative min-bs-0 [&_.cm-editor]:!border-lb [&_.cm-editor]:!border-transparent "
765
- }, /* @__PURE__ */ import_react4.default.createElement(import_react_ui_grid.GridCellEditor, {
766
- getCellContent,
767
- extension,
768
- onBlur: handleBlur
769
- }), /* @__PURE__ */ import_react4.default.createElement(import_react_ui_grid.Grid.Content, {
770
- initialCells,
771
- limitColumns: import_chunk_HLSQVT3C.DEFAULT_COLS,
772
- limitRows: import_chunk_HLSQVT3C.DEFAULT_ROWS,
773
- columns,
774
- rows,
775
- // TODO(burdon): `col` vs. `column`?
776
- columnDefault: sheetColDefault,
777
- rowDefault: sheetRowDefault,
778
- frozen,
779
- onAxisResize: handleAxisResize,
780
- onSelect: handleSelect,
781
- onFocus: handleFocus,
782
- onWheelCapture: handleWheel,
783
- onKeyDown: handleKeyDown,
784
- onContextMenu: handleContextMenu,
785
- onClick: handleClick,
786
- overscroll: "trap",
787
- className: "[--dx-grid-base:var(--baseSurface)] [&_.dx-grid]:border-bs [&_.dx-grid]:border-be [&_.dx-grid]:absolute [&_.dx-grid]:inset-0 [&_.dx-grid]:border-separator",
788
- activeRefs,
789
- ref: setDxGrid
790
- }), /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.DropdownMenu.Root, {
791
- modal: false,
792
- open: !!contextMenuOpen,
793
- onOpenChange: (nextOpen) => setContextMenuOpen(nextOpen ? inertPosition : null)
794
- }, /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.DropdownMenu.VirtualTrigger, {
795
- virtualRef: contextMenuAnchorRef
796
- }), /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.DropdownMenu.Content, {
797
- side: contextMenuAxis === "col" ? "bottom" : "right",
798
- sideOffset: 4,
799
- collisionPadding: 8
800
- }, /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.DropdownMenu.Viewport, null, /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.DropdownMenu.Item, {
801
- onClick: () => handleAxisMenuAction("insert-before"),
802
- "data-testid": `grid.${contextMenuAxis}.insert-before`
803
- }, /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.Icon, {
804
- size: 5,
805
- icon: contextMenuAxis === "col" ? "ph--columns-plus-left--regular" : "ph--rows-plus-top--regular"
806
- }), /* @__PURE__ */ import_react4.default.createElement("span", null, t(`add ${contextMenuAxis} before label`))), /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.DropdownMenu.Item, {
807
- onClick: () => handleAxisMenuAction("insert-after"),
808
- "data-testid": `grid.${contextMenuAxis}.insert-after`
809
- }, /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.Icon, {
810
- size: 5,
811
- icon: contextMenuAxis === "col" ? "ph--columns-plus-right--regular" : "ph--rows-plus-bottom--regular"
812
- }), /* @__PURE__ */ import_react4.default.createElement("span", null, t(`add ${contextMenuAxis} after label`))), /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.DropdownMenu.Item, {
813
- onClick: () => handleAxisMenuAction("drop"),
814
- "data-testid": `grid.${contextMenuAxis}.drop`
815
- }, /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.Icon, {
816
- size: 5,
817
- icon: "ph--backspace--regular"
818
- }), /* @__PURE__ */ import_react4.default.createElement("span", null, t(`delete ${contextMenuAxis} label`)))), /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.DropdownMenu.Arrow, null))))
819
- );
820
- };
821
- var SheetContainer = (0, import_react3.lazy)(() => import("./SheetContainer-GR2KDOAE.cjs"));
822
- // Annotate the CommonJS export names for ESM import in node:
823
- 0 && (module.exports = {
824
- ComputeGraphContextProvider,
825
- GridSheet,
826
- RangeList,
827
- SheetContainer,
828
- SheetProvider,
829
- completeCellRangeToThreadCursor,
830
- useComputeGraph,
831
- useSheetContext
832
- });
833
- //# sourceMappingURL=chunk-CN7OBGYV.cjs.map