@dxos/plugin-sheet 0.8.2-main.fbd8ed0 → 0.8.2-staging.7ac8446
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.
- package/dist/lib/browser/{SheetContainer-UV7RMPXS.mjs → SheetContainer-B3A5443Z.mjs} +88 -90
- package/dist/lib/browser/SheetContainer-B3A5443Z.mjs.map +7 -0
- package/dist/lib/browser/{chunk-TN7LTDHU.mjs → chunk-CHMPICA6.mjs} +75 -86
- package/dist/lib/browser/chunk-CHMPICA6.mjs.map +7 -0
- package/dist/lib/browser/{chunk-N2FOQHUH.mjs → chunk-ZOKEQL2K.mjs} +50 -51
- package/dist/lib/browser/chunk-ZOKEQL2K.mjs.map +7 -0
- package/dist/lib/browser/{compute-graph-registry-MBJKPAHX.mjs → compute-graph-registry-WEJLJJ6T.mjs} +2 -2
- package/dist/lib/browser/compute-graph-registry-WEJLJJ6T.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +8 -8
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/{intent-resolver-DN7JXDAV.mjs → intent-resolver-6OUEM3IG.mjs} +2 -2
- package/dist/lib/browser/{markdown-57MKY5WB.mjs → markdown-DR4RDEEY.mjs} +2 -2
- package/dist/lib/browser/markdown-DR4RDEEY.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{react-surface-NQU63B63.mjs → react-surface-ECKBP3UZ.mjs} +3 -3
- package/dist/lib/browser/{thread-WU64QL2A.mjs → thread-76MK2FMV.mjs} +2 -2
- package/dist/lib/browser/types/index.mjs +1 -1
- package/dist/lib/node/{SheetContainer-GR2KDOAE.cjs → SheetContainer-LGRD3TTQ.cjs} +102 -106
- package/dist/lib/node/SheetContainer-LGRD3TTQ.cjs.map +7 -0
- package/dist/lib/node/{chunk-CN7OBGYV.cjs → chunk-AEH3L5QZ.cjs} +84 -95
- package/dist/lib/node/chunk-AEH3L5QZ.cjs.map +7 -0
- package/dist/lib/node/{chunk-HLSQVT3C.cjs → chunk-D4MOMCEU.cjs} +65 -66
- package/dist/lib/node/chunk-D4MOMCEU.cjs.map +7 -0
- package/dist/lib/node/{compute-graph-registry-EBBDN6ZX.cjs → compute-graph-registry-VVSRJUGS.cjs} +5 -5
- package/dist/lib/node/compute-graph-registry-VVSRJUGS.cjs.map +7 -0
- package/dist/lib/node/index.cjs +12 -12
- package/dist/lib/node/index.cjs.map +3 -3
- package/dist/lib/node/{intent-resolver-OPF56TAL.cjs → intent-resolver-ICHNDL6F.cjs} +9 -9
- package/dist/lib/node/{markdown-Q3RXYPHQ.cjs → markdown-E7OUIMZO.cjs} +5 -5
- package/dist/lib/node/markdown-E7OUIMZO.cjs.map +7 -0
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/{react-surface-7SAA5DX3.cjs → react-surface-6PBWE75L.cjs} +11 -11
- package/dist/lib/node/{thread-E7YPGR5T.cjs → thread-WP43BC4N.cjs} +7 -7
- package/dist/lib/node/types/index.cjs +29 -29
- package/dist/lib/node/types/index.cjs.map +1 -1
- package/dist/lib/node-esm/{SheetContainer-XW7B2AJI.mjs → SheetContainer-4FNTLG5R.mjs} +88 -90
- package/dist/lib/node-esm/SheetContainer-4FNTLG5R.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-LYZV4Q4C.mjs → chunk-6NB67Y6X.mjs} +50 -51
- package/dist/lib/node-esm/chunk-6NB67Y6X.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-3JJ7ETTJ.mjs → chunk-WQHYR4WD.mjs} +75 -86
- package/dist/lib/node-esm/chunk-WQHYR4WD.mjs.map +7 -0
- package/dist/lib/node-esm/{compute-graph-registry-TVG6RN2J.mjs → compute-graph-registry-PBQ52KH6.mjs} +2 -2
- package/dist/lib/node-esm/compute-graph-registry-PBQ52KH6.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +8 -8
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/{intent-resolver-7AN5CN4R.mjs → intent-resolver-2JNQCFCI.mjs} +2 -2
- package/dist/lib/node-esm/{markdown-ACHAWUOE.mjs → markdown-BPKS2TNG.mjs} +2 -2
- package/dist/lib/node-esm/markdown-BPKS2TNG.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/{react-surface-BPNN7RSE.mjs → react-surface-UM2Y3ZWZ.mjs} +3 -3
- package/dist/lib/node-esm/{thread-ULESW6IX.mjs → thread-4NCPE5FK.mjs} +2 -2
- package/dist/lib/node-esm/types/index.mjs +1 -1
- package/dist/types/src/capabilities/compute-graph-registry.d.ts +2 -2
- package/dist/types/src/capabilities/compute-graph-registry.d.ts.map +1 -1
- package/dist/types/src/capabilities/index.d.ts +2 -2
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/markdown.d.ts +2 -2
- package/dist/types/src/capabilities/markdown.d.ts.map +1 -1
- package/dist/types/src/components/ComputeGraph/ComputeGraphContextProvider.d.ts.map +1 -1
- package/dist/types/src/components/GridSheet/GridSheet.d.ts.map +1 -1
- package/dist/types/src/components/GridSheet/GridSheet.stories.d.ts.map +1 -1
- package/dist/types/src/components/GridSheet/util.d.ts.map +1 -1
- package/dist/types/src/components/RangeList/RangeList.d.ts.map +1 -1
- package/dist/types/src/components/SheetContainer/SheetContainer.d.ts +2 -3
- package/dist/types/src/components/SheetContainer/SheetContainer.d.ts.map +1 -1
- package/dist/types/src/components/SheetContainer/SheetContainer.stories.d.ts.map +1 -1
- package/dist/types/src/components/SheetContext/SheetContext.d.ts.map +1 -1
- package/dist/types/src/components/SheetToolbar/SheetToolbar.d.ts.map +1 -1
- package/dist/types/src/components/SheetToolbar/align.d.ts +1 -4
- package/dist/types/src/components/SheetToolbar/align.d.ts.map +1 -1
- package/dist/types/src/components/SheetToolbar/comment.d.ts +1 -3
- package/dist/types/src/components/SheetToolbar/comment.d.ts.map +1 -1
- package/dist/types/src/components/SheetToolbar/style.d.ts +1 -3
- package/dist/types/src/components/SheetToolbar/style.d.ts.map +1 -1
- package/dist/types/src/components/SheetToolbar/useToolbarAction.d.ts +8 -0
- package/dist/types/src/components/SheetToolbar/useToolbarAction.d.ts.map +1 -0
- package/dist/types/src/components/SheetToolbar/useToolbarState.d.ts +1 -1
- package/dist/types/src/components/SheetToolbar/useToolbarState.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +6 -1
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/extensions/compute.d.ts.map +1 -1
- package/dist/types/src/extensions/editor/extension.d.ts.map +1 -1
- package/dist/types/src/integrations/thread-ranges.d.ts.map +1 -1
- package/dist/types/src/model/testing.d.ts.map +1 -1
- package/dist/types/src/model/useSheetModel.d.ts.map +1 -1
- package/dist/types/src/testing/data.d.ts.map +1 -1
- package/dist/types/src/testing/testing.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +54 -2
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/schema.d.ts +144 -239
- package/dist/types/src/types/schema.d.ts.map +1 -1
- package/dist/types/src/types/sheet-range-types.d.ts.map +1 -1
- package/dist/types/src/types/types.d.ts +36 -36
- package/dist/types/src/types/types.d.ts.map +1 -1
- package/dist/types/src/types/util.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +47 -53
- package/src/capabilities/compute-graph-registry.ts +3 -3
- package/src/capabilities/markdown.ts +3 -3
- package/src/components/ComputeGraph/compute-graph.stories.tsx +4 -4
- package/src/components/FunctionEditor/FunctionEditor.tsx +1 -1
- package/src/components/GridSheet/GridSheet.stories.tsx +2 -5
- package/src/components/GridSheet/GridSheet.tsx +12 -18
- package/src/components/GridSheet/SheetCellEditor.stories.tsx +2 -2
- package/src/components/GridSheet/util.ts +2 -7
- package/src/components/RangeList/RangeList.tsx +2 -2
- package/src/components/SheetContainer/SheetContainer.stories.tsx +5 -1
- package/src/components/SheetContainer/SheetContainer.tsx +7 -4
- package/src/components/SheetToolbar/SheetToolbar.stories.tsx +1 -1
- package/src/components/SheetToolbar/SheetToolbar.tsx +8 -33
- package/src/components/SheetToolbar/align.ts +14 -44
- package/src/components/SheetToolbar/comment.ts +11 -39
- package/src/components/SheetToolbar/style.ts +12 -48
- package/src/components/SheetToolbar/useToolbarAction.ts +87 -0
- package/src/components/SheetToolbar/useToolbarState.ts +2 -2
- package/src/integrations/thread-ranges.ts +3 -2
- package/src/model/sheet-model.test.ts +1 -1
- package/src/sanity.test.ts +3 -3
- package/src/serializer.ts +2 -2
- package/src/types/schema.ts +19 -21
- package/src/types/types.ts +25 -25
- package/src/types/util.ts +2 -2
- package/dist/lib/browser/SheetContainer-UV7RMPXS.mjs.map +0 -7
- package/dist/lib/browser/chunk-N2FOQHUH.mjs.map +0 -7
- package/dist/lib/browser/chunk-TN7LTDHU.mjs.map +0 -7
- package/dist/lib/browser/compute-graph-registry-MBJKPAHX.mjs.map +0 -7
- package/dist/lib/browser/markdown-57MKY5WB.mjs.map +0 -7
- package/dist/lib/node/SheetContainer-GR2KDOAE.cjs.map +0 -7
- package/dist/lib/node/chunk-CN7OBGYV.cjs.map +0 -7
- package/dist/lib/node/chunk-HLSQVT3C.cjs.map +0 -7
- package/dist/lib/node/compute-graph-registry-EBBDN6ZX.cjs.map +0 -7
- package/dist/lib/node/markdown-Q3RXYPHQ.cjs.map +0 -7
- package/dist/lib/node-esm/SheetContainer-XW7B2AJI.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-3JJ7ETTJ.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-LYZV4Q4C.mjs.map +0 -7
- package/dist/lib/node-esm/compute-graph-registry-TVG6RN2J.mjs.map +0 -7
- package/dist/lib/node-esm/markdown-ACHAWUOE.mjs.map +0 -7
- /package/dist/lib/browser/{intent-resolver-DN7JXDAV.mjs.map → intent-resolver-6OUEM3IG.mjs.map} +0 -0
- /package/dist/lib/browser/{react-surface-NQU63B63.mjs.map → react-surface-ECKBP3UZ.mjs.map} +0 -0
- /package/dist/lib/browser/{thread-WU64QL2A.mjs.map → thread-76MK2FMV.mjs.map} +0 -0
- /package/dist/lib/node/{intent-resolver-OPF56TAL.cjs.map → intent-resolver-ICHNDL6F.cjs.map} +0 -0
- /package/dist/lib/node/{react-surface-7SAA5DX3.cjs.map → react-surface-6PBWE75L.cjs.map} +0 -0
- /package/dist/lib/node/{thread-E7YPGR5T.cjs.map → thread-WP43BC4N.cjs.map} +0 -0
- /package/dist/lib/node-esm/{intent-resolver-7AN5CN4R.mjs.map → intent-resolver-2JNQCFCI.mjs.map} +0 -0
- /package/dist/lib/node-esm/{react-surface-BPNN7RSE.mjs.map → react-surface-UM2Y3ZWZ.mjs.map} +0 -0
- /package/dist/lib/node-esm/{thread-ULESW6IX.mjs.map → thread-4NCPE5FK.mjs.map} +0 -0
|
@@ -26,8 +26,8 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
26
26
|
mod
|
|
27
27
|
));
|
|
28
28
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
-
var
|
|
30
|
-
__export(
|
|
29
|
+
var chunk_AEH3L5QZ_exports = {};
|
|
30
|
+
__export(chunk_AEH3L5QZ_exports, {
|
|
31
31
|
ComputeGraphContextProvider: () => ComputeGraphContextProvider,
|
|
32
32
|
GridSheet: () => GridSheet,
|
|
33
33
|
RangeList: () => RangeList,
|
|
@@ -37,16 +37,16 @@ __export(chunk_CN7OBGYV_exports, {
|
|
|
37
37
|
useComputeGraph: () => useComputeGraph,
|
|
38
38
|
useSheetContext: () => useSheetContext
|
|
39
39
|
});
|
|
40
|
-
module.exports = __toCommonJS(
|
|
40
|
+
module.exports = __toCommonJS(chunk_AEH3L5QZ_exports);
|
|
41
41
|
var import_chunk_LEV7OSTK = require("./chunk-LEV7OSTK.cjs");
|
|
42
|
-
var
|
|
42
|
+
var import_chunk_D4MOMCEU = require("./chunk-D4MOMCEU.cjs");
|
|
43
43
|
var import_chunk_JSIDCZHB = require("./chunk-JSIDCZHB.cjs");
|
|
44
44
|
var import_react = __toESM(require("react"));
|
|
45
45
|
var import_debug = require("@dxos/debug");
|
|
46
46
|
var import_react_hooks = require("@dxos/react-hooks");
|
|
47
|
-
var import_effect = require("effect");
|
|
48
47
|
var import_react2 = __toESM(require("react"));
|
|
49
48
|
var import_compute = require("@dxos/compute");
|
|
49
|
+
var import_echo_schema = require("@dxos/echo-schema");
|
|
50
50
|
var import_react_ui = require("@dxos/react-ui");
|
|
51
51
|
var import_react_ui_list = require("@dxos/react-ui-list");
|
|
52
52
|
var import_react_ui_theme = require("@dxos/react-ui-theme");
|
|
@@ -54,7 +54,6 @@ var import_react3 = require("react");
|
|
|
54
54
|
var import_react4 = __toESM(require("react"));
|
|
55
55
|
var import_app_framework = require("@dxos/app-framework");
|
|
56
56
|
var import_compute2 = require("@dxos/compute");
|
|
57
|
-
var import_lit_grid = require("@dxos/lit-grid");
|
|
58
57
|
var import_react_ui2 = require("@dxos/react-ui");
|
|
59
58
|
var import_react_ui_attention = require("@dxos/react-ui-attention");
|
|
60
59
|
var import_react_ui_grid = require("@dxos/react-ui-grid");
|
|
@@ -64,11 +63,12 @@ var import_echo = require("@dxos/react-client/echo");
|
|
|
64
63
|
var import_react_ui_form = require("@dxos/react-ui-form");
|
|
65
64
|
var import_react_ui_grid2 = require("@dxos/react-ui-grid");
|
|
66
65
|
var import_react_ui_theme2 = require("@dxos/react-ui-theme");
|
|
67
|
-
var
|
|
66
|
+
var import_effect = require("effect");
|
|
68
67
|
var import_react6 = require("react");
|
|
69
68
|
var import_app_framework2 = require("@dxos/app-framework");
|
|
70
69
|
var import_async = require("@dxos/async");
|
|
71
70
|
var import_compute4 = require("@dxos/compute");
|
|
71
|
+
var import_echo_schema2 = require("@dxos/echo-schema");
|
|
72
72
|
var import_types = require("@dxos/plugin-deck/types");
|
|
73
73
|
var import_types2 = require("@dxos/plugin-thread/types");
|
|
74
74
|
var import_echo2 = require("@dxos/react-client/echo");
|
|
@@ -112,7 +112,7 @@ var RangeList = ({ sheet }) => {
|
|
|
112
112
|
className: "p-2 text-sm font-semibold"
|
|
113
113
|
}, t("range list heading")), /* @__PURE__ */ import_react2.default.createElement(import_react_ui_list.List.Root, {
|
|
114
114
|
items: sheet.ranges,
|
|
115
|
-
isItem:
|
|
115
|
+
isItem: import_echo_schema.S.is(import_chunk_D4MOMCEU.Range)
|
|
116
116
|
}, ({ items: ranges }) => ranges.map((range, i) => /* @__PURE__ */ import_react2.default.createElement(import_react_ui_list.List.Item, {
|
|
117
117
|
key: i,
|
|
118
118
|
item: range,
|
|
@@ -123,7 +123,7 @@ var RangeList = ({ sheet }) => {
|
|
|
123
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
124
|
onClick: () => handleSelectRange(range)
|
|
125
125
|
}, t("range title", {
|
|
126
|
-
position: (0, import_compute.rangeToA1Notation)((0,
|
|
126
|
+
position: (0, import_compute.rangeToA1Notation)((0, import_chunk_D4MOMCEU.rangeFromIndex)(sheet, range.range)),
|
|
127
127
|
key: t(`range key ${range.key} label`),
|
|
128
128
|
value: t(`range value ${range.value} label`)
|
|
129
129
|
})), /* @__PURE__ */ import_react2.default.createElement(import_react_ui_list.List.ItemDeleteButton, {
|
|
@@ -157,7 +157,7 @@ var useUpdateFocusedCellOnThreadSelection = (grid) => {
|
|
|
157
157
|
intent: import_app_framework2.LayoutAction.ScrollIntoView,
|
|
158
158
|
position: "hoist",
|
|
159
159
|
filter: (data) => {
|
|
160
|
-
if (!
|
|
160
|
+
if (!import_echo_schema2.S.is(import_app_framework2.LayoutAction.ScrollIntoView.fields.input)(data)) {
|
|
161
161
|
return false;
|
|
162
162
|
}
|
|
163
163
|
return data.subject === (0, import_echo2.fullyQualifiedId)(model.sheet) && !!data.options?.cursor;
|
|
@@ -197,7 +197,7 @@ var useSelectThreadOnCellFocus = () => {
|
|
|
197
197
|
});
|
|
198
198
|
if (closestThread) {
|
|
199
199
|
const primary = (0, import_echo2.fullyQualifiedId)(model.sheet);
|
|
200
|
-
const intent = (0,
|
|
200
|
+
const intent = (0, import_effect.pipe)((0, import_app_framework2.createIntent)(import_types2.ThreadAction.Select, {
|
|
201
201
|
current: (0, import_echo2.fullyQualifiedId)(closestThread)
|
|
202
202
|
}), (0, import_app_framework2.chain)(import_types.DeckAction.ChangeCompanion, {
|
|
203
203
|
primary,
|
|
@@ -256,7 +256,7 @@ var projectCellProps = (model, col, row) => {
|
|
|
256
256
|
row
|
|
257
257
|
};
|
|
258
258
|
const rawValue = model.getValue(address);
|
|
259
|
-
const ranges = model.sheet.ranges?.filter(({ range }) => (0, import_compute3.inRange)((0,
|
|
259
|
+
const ranges = model.sheet.ranges?.filter(({ range }) => (0, import_compute3.inRange)((0, import_chunk_D4MOMCEU.rangeFromIndex)(model.sheet, range), address));
|
|
260
260
|
const threadRefs = model.sheet.threads?.filter((thread) => {
|
|
261
261
|
const range = thread.target?.anchor && parseThreadAnchorAsCellRange(thread.target.anchor);
|
|
262
262
|
return thread && range ? (0, import_compute3.inRange)(range, address) : false;
|
|
@@ -264,7 +264,7 @@ var projectCellProps = (model, col, row) => {
|
|
|
264
264
|
const description = model.getValueDescription(address);
|
|
265
265
|
const type = description?.type;
|
|
266
266
|
const format = description?.format;
|
|
267
|
-
const classNames = ranges?.map(
|
|
267
|
+
const classNames = ranges?.map(import_chunk_D4MOMCEU.cellClassNameForRange).reverse();
|
|
268
268
|
return {
|
|
269
269
|
value: (0, import_react_ui_form.parseValue)({
|
|
270
270
|
type,
|
|
@@ -297,12 +297,12 @@ var gridCellGetter = (model) => {
|
|
|
297
297
|
};
|
|
298
298
|
var rowLabelCell = (row) => ({
|
|
299
299
|
value: (0, import_react_ui_grid2.rowToA1Notation)(row),
|
|
300
|
-
className: "
|
|
300
|
+
className: "text-end pie-1 text-subdued",
|
|
301
301
|
resizeHandle: "row"
|
|
302
302
|
});
|
|
303
303
|
var colLabelCell = (col) => ({
|
|
304
304
|
value: (0, import_react_ui_grid2.colToA1Notation)(col),
|
|
305
|
-
className: "
|
|
305
|
+
className: "text-subdued",
|
|
306
306
|
resizeHandle: "col"
|
|
307
307
|
});
|
|
308
308
|
var cellGetter = (model) => {
|
|
@@ -311,13 +311,6 @@ var cellGetter = (model) => {
|
|
|
311
311
|
switch (plane) {
|
|
312
312
|
case "grid":
|
|
313
313
|
return getGridCells(nextBounds);
|
|
314
|
-
case "fixedStartStart": {
|
|
315
|
-
return {
|
|
316
|
-
"0,0": {
|
|
317
|
-
className: "!bg-toolbarSurface"
|
|
318
|
-
}
|
|
319
|
-
};
|
|
320
|
-
}
|
|
321
314
|
case "frozenColsStart":
|
|
322
315
|
return [
|
|
323
316
|
...Array(nextBounds.end.row - nextBounds.start.row)
|
|
@@ -449,7 +442,7 @@ var SheetProviderImpl = ({ model, onInfo, ignoreAttention, children, __gridScope
|
|
|
449
442
|
}, children);
|
|
450
443
|
};
|
|
451
444
|
var SheetProvider = ({ children, graph, sheet, readonly, ignoreAttention, onInfo }) => {
|
|
452
|
-
const model = (0,
|
|
445
|
+
const model = (0, import_chunk_D4MOMCEU.useSheetModel)(graph, sheet, {
|
|
453
446
|
readonly
|
|
454
447
|
});
|
|
455
448
|
return !model ? null : /* @__PURE__ */ import_react7.default.createElement(import_react_ui_grid3.Grid.Root, {
|
|
@@ -484,23 +477,23 @@ var frozen = {
|
|
|
484
477
|
frozenColsStart: 1,
|
|
485
478
|
frozenRowsStart: 1
|
|
486
479
|
};
|
|
487
|
-
var
|
|
488
|
-
|
|
489
|
-
size:
|
|
480
|
+
var sheetRowDefault = {
|
|
481
|
+
frozenRowsStart: {
|
|
482
|
+
size: import_react_ui_grid.defaultSizeRow,
|
|
490
483
|
readonly: true
|
|
491
484
|
},
|
|
492
485
|
grid: {
|
|
493
|
-
size:
|
|
486
|
+
size: import_react_ui_grid.defaultSizeRow,
|
|
494
487
|
resizeable: true
|
|
495
488
|
}
|
|
496
489
|
};
|
|
497
|
-
var
|
|
498
|
-
|
|
499
|
-
size:
|
|
490
|
+
var sheetColDefault = {
|
|
491
|
+
frozenColsStart: {
|
|
492
|
+
size: 48,
|
|
500
493
|
readonly: true
|
|
501
494
|
},
|
|
502
495
|
grid: {
|
|
503
|
-
size:
|
|
496
|
+
size: 180,
|
|
504
497
|
resizeable: true
|
|
505
498
|
}
|
|
506
499
|
};
|
|
@@ -708,13 +701,13 @@ var GridSheet = () => {
|
|
|
708
701
|
switch (operation) {
|
|
709
702
|
case "insert-before":
|
|
710
703
|
case "insert-after":
|
|
711
|
-
return dispatch((0, import_app_framework.createIntent)(
|
|
704
|
+
return dispatch((0, import_app_framework.createIntent)(import_chunk_D4MOMCEU.SheetAction.InsertAxis, {
|
|
712
705
|
model,
|
|
713
706
|
axis: contextMenuAxis,
|
|
714
707
|
index: contextMenuOpen[contextMenuAxis] + (operation === "insert-before" ? 0 : 1)
|
|
715
708
|
}));
|
|
716
709
|
case "drop":
|
|
717
|
-
return dispatch((0, import_app_framework.createIntent)(
|
|
710
|
+
return dispatch((0, import_app_framework.createIntent)(import_chunk_D4MOMCEU.SheetAction.DropAxis, {
|
|
718
711
|
model,
|
|
719
712
|
axis: contextMenuAxis,
|
|
720
713
|
axisIndex: model.sheet[contextMenuAxis === "row" ? "rows" : "columns"][contextMenuOpen[contextMenuAxis]]
|
|
@@ -757,68 +750,64 @@ var GridSheet = () => {
|
|
|
757
750
|
]);
|
|
758
751
|
useUpdateFocusedCellOnThreadSelection(dxGrid);
|
|
759
752
|
useSelectThreadOnCellFocus();
|
|
760
|
-
return (
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
808
|
-
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
813
|
-
|
|
814
|
-
|
|
815
|
-
|
|
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
|
-
);
|
|
753
|
+
return /* @__PURE__ */ import_react4.default.createElement("div", {
|
|
754
|
+
role: "none",
|
|
755
|
+
className: "relative min-bs-0"
|
|
756
|
+
}, /* @__PURE__ */ import_react4.default.createElement(import_react_ui_grid.GridCellEditor, {
|
|
757
|
+
getCellContent,
|
|
758
|
+
extension,
|
|
759
|
+
onBlur: handleBlur
|
|
760
|
+
}), /* @__PURE__ */ import_react4.default.createElement(import_react_ui_grid.Grid.Content, {
|
|
761
|
+
initialCells,
|
|
762
|
+
limitColumns: import_chunk_D4MOMCEU.DEFAULT_COLS,
|
|
763
|
+
limitRows: import_chunk_D4MOMCEU.DEFAULT_ROWS,
|
|
764
|
+
columns,
|
|
765
|
+
rows,
|
|
766
|
+
onAxisResize: handleAxisResize,
|
|
767
|
+
onSelect: handleSelect,
|
|
768
|
+
rowDefault: sheetRowDefault,
|
|
769
|
+
columnDefault: sheetColDefault,
|
|
770
|
+
frozen,
|
|
771
|
+
onFocus: handleFocus,
|
|
772
|
+
onWheelCapture: handleWheel,
|
|
773
|
+
onKeyDown: handleKeyDown,
|
|
774
|
+
onContextMenu: handleContextMenu,
|
|
775
|
+
onClick: handleClick,
|
|
776
|
+
overscroll: "trap",
|
|
777
|
+
className: "[--dx-grid-base:var(--surface-bg)] [&_.dx-grid]:border-bs [&_.dx-grid]:absolute [&_.dx-grid]:inset-0 [&_.dx-grid]:border-separator",
|
|
778
|
+
activeRefs,
|
|
779
|
+
ref: setDxGrid
|
|
780
|
+
}), /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.DropdownMenu.Root, {
|
|
781
|
+
modal: false,
|
|
782
|
+
open: !!contextMenuOpen,
|
|
783
|
+
onOpenChange: (nextOpen) => setContextMenuOpen(nextOpen ? inertPosition : null)
|
|
784
|
+
}, /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.DropdownMenu.VirtualTrigger, {
|
|
785
|
+
virtualRef: contextMenuAnchorRef
|
|
786
|
+
}), /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.DropdownMenu.Content, {
|
|
787
|
+
side: contextMenuAxis === "col" ? "bottom" : "right",
|
|
788
|
+
sideOffset: 4,
|
|
789
|
+
collisionPadding: 8
|
|
790
|
+
}, /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.DropdownMenu.Viewport, null, /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.DropdownMenu.Item, {
|
|
791
|
+
onClick: () => handleAxisMenuAction("insert-before"),
|
|
792
|
+
"data-testid": `grid.${contextMenuAxis}.insert-before`
|
|
793
|
+
}, /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.Icon, {
|
|
794
|
+
size: 5,
|
|
795
|
+
icon: contextMenuAxis === "col" ? "ph--columns-plus-left--regular" : "ph--rows-plus-top--regular"
|
|
796
|
+
}), /* @__PURE__ */ import_react4.default.createElement("span", null, t(`add ${contextMenuAxis} before label`))), /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.DropdownMenu.Item, {
|
|
797
|
+
onClick: () => handleAxisMenuAction("insert-after"),
|
|
798
|
+
"data-testid": `grid.${contextMenuAxis}.insert-after`
|
|
799
|
+
}, /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.Icon, {
|
|
800
|
+
size: 5,
|
|
801
|
+
icon: contextMenuAxis === "col" ? "ph--columns-plus-right--regular" : "ph--rows-plus-bottom--regular"
|
|
802
|
+
}), /* @__PURE__ */ import_react4.default.createElement("span", null, t(`add ${contextMenuAxis} after label`))), /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.DropdownMenu.Item, {
|
|
803
|
+
onClick: () => handleAxisMenuAction("drop"),
|
|
804
|
+
"data-testid": `grid.${contextMenuAxis}.drop`
|
|
805
|
+
}, /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.Icon, {
|
|
806
|
+
size: 5,
|
|
807
|
+
icon: "ph--backspace--regular"
|
|
808
|
+
}), /* @__PURE__ */ import_react4.default.createElement("span", null, t(`delete ${contextMenuAxis} label`)))), /* @__PURE__ */ import_react4.default.createElement(import_react_ui2.DropdownMenu.Arrow, null))));
|
|
820
809
|
};
|
|
821
|
-
var SheetContainer = (0, import_react3.lazy)(() => import("./SheetContainer-
|
|
810
|
+
var SheetContainer = (0, import_react3.lazy)(() => import("./SheetContainer-LGRD3TTQ.cjs"));
|
|
822
811
|
// Annotate the CommonJS export names for ESM import in node:
|
|
823
812
|
0 && (module.exports = {
|
|
824
813
|
ComputeGraphContextProvider,
|
|
@@ -830,4 +819,4 @@ var SheetContainer = (0, import_react3.lazy)(() => import("./SheetContainer-GR2K
|
|
|
830
819
|
useComputeGraph,
|
|
831
820
|
useSheetContext
|
|
832
821
|
});
|
|
833
|
-
//# sourceMappingURL=chunk-
|
|
822
|
+
//# sourceMappingURL=chunk-AEH3L5QZ.cjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/components/ComputeGraph/ComputeGraphContextProvider.tsx", "../../../src/components/RangeList/RangeList.tsx", "../../../src/components/index.ts", "../../../src/components/GridSheet/GridSheet.tsx", "../../../src/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 React, { useCallback } from 'react';\n\nimport { rangeToA1Notation } from '@dxos/compute';\nimport { S } from '@dxos/echo-schema';\nimport { 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='p-2 text-sm font-semibold'>{t('range list heading')}</h2>\n <List.Root<Range> items={sheet.ranges} isItem={S.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// 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 type FocusEvent,\n type KeyboardEvent,\n type WheelEvent,\n type MouseEvent,\n useState,\n} from 'react';\n\nimport { createIntent, useIntentDispatcher } from '@dxos/app-framework';\nimport { rangeToA1Notation, type CellRange } from '@dxos/compute';\nimport { DropdownMenu, Icon, useTranslation } from '@dxos/react-ui';\nimport { useAttention } from '@dxos/react-ui-attention';\nimport {\n closestCell,\n defaultSizeRow,\n editorKeys,\n Grid,\n GridCellEditor,\n type DxGridElement,\n type DxGridPosition,\n type DxGridCellIndex,\n type EditorKeyHandler,\n type EditorBlurHandler,\n type GridContentProps,\n parseCellIndex,\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 sheetRowDefault = {\n frozenRowsStart: { size: defaultSizeRow, readonly: true },\n grid: { size: defaultSizeRow, resizeable: true },\n};\nconst sheetColDefault = { frozenColsStart: { size: 48, readonly: true }, grid: { size: 180, resizeable: true } };\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 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 <div role='none' className='relative min-bs-0'>\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 onAxisResize={handleAxisResize}\n onSelect={handleSelect}\n rowDefault={sheetRowDefault}\n columnDefault={sheetColDefault}\n frozen={frozen}\n onFocus={handleFocus}\n onWheelCapture={handleWheel}\n onKeyDown={handleKeyDown}\n onContextMenu={handleContextMenu}\n onClick={handleClick}\n overscroll='trap'\n className='[--dx-grid-base:var(--surface-bg)] [&_.dx-grid]:border-bs [&_.dx-grid]:absolute [&_.dx-grid]:inset-0 [&_.dx-grid]:border-separator'\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, fullyQualifiedId } 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 { parseThreadAnchorAsCellRange } from '../../integrations';\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 = 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: 'text-end pie-1 text-subdued',\n resizeHandle: 'row',\n});\n\nexport const colLabelCell = (col: number) => ({\n value: colToA1Notation(col),\n className: '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 '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 { 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 { S } from '@dxos/echo-schema';\nimport { ATTENDABLE_PATH_SEPARATOR, DeckAction } from '@dxos/plugin-deck/types';\nimport { ThreadAction } from '@dxos/plugin-thread/types';\nimport { fullyQualifiedId } from '@dxos/react-client/echo';\nimport { type DxGridElement, type DxGridPosition, type GridContentProps } from '@dxos/react-ui-grid';\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 (!S.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 threads = useMemo(\n () => model.sheet.threads?.filter((thread): thread is NonNullable<typeof thread> => !!thread) ?? [],\n [\n // TODO(thure): Surely we can find a better dependency for this…\n JSON.stringify(model.sheet.threads),\n ],\n );\n\n const selectClosestThread = useCallback(\n (cellAddress: CellAddress) => {\n if (!cellAddress || !threads) {\n return;\n }\n\n const closestThread = threads?.find((ref) => {\n if (ref.target?.anchor) {\n const range = parseThreadAnchorAsCellRange(ref.target!.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, threads],\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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",
|
|
6
|
+
"names": ["import_react", "import_compute", "import_react_ui", "import_react_ui_grid", "import_react_ui_theme", "import_app_framework", "import_echo_schema", "import_types", "import_echo", "ComputeGraphContext", "createContext", "undefined", "ComputeGraphContextProvider", "registry", "children", "React", "Provider", "value", "useComputeGraph", "space", "useContext", "raise", "Error", "graph", "useAsyncState", "getOrCreateGraph", "open", "RangeList", "sheet", "t", "useTranslation", "SHEET_PLUGIN", "handleSelectRange", "range", "handleDeleteRange", "useCallback", "index", "ranges", "findIndex", "sheetRange", "splice", "h2", "className", "List", "Root", "items", "isItem", "S", "is", "Range", "map", "i", "Item", "key", "item", "classNames", "ghostHover", "ItemDragHandle", "ItemTitle", "onClick", "position", "rangeToA1Notation", "rangeFromIndex", "ItemDeleteButton", "completeCellRangeToThreadCursor", "from", "col", "row", "to", "parseThreadAnchorAsCellRange", "cursor", "coords", "split", "length", "fromCol", "fromRow", "toCol", "toRow", "parseInt", "useUpdateFocusedCellOnThreadSelection", "grid", "model", "setActiveRefs", "useSheetContext", "scrollIntoViewResolver", "useMemo", "createResolver", "intent", "LayoutAction", "ScrollIntoView", "filter", "data", "fields", "input", "subject", "fullyQualifiedId", "options", "resolve", "ref", "setFocus", "plane", "useIntentResolver", "useSelectThreadOnCellFocus", "dispatchPromise", "dispatch", "useIntentDispatcher", "threads", "thread", "JSON", "stringify", "selectClosestThread", "cellAddress", "closestThread", "find", "target", "anchor", "inRange", "primary", "pipe", "createIntent", "ThreadAction", "Select", "current", "chain", "DeckAction", "ChangeCompanion", "companion", "ATTENDABLE_PATH_SEPARATOR", "debounced", "debounce", "cellCoords", "requestAnimationFrame", "useEffect", "createDxGridColumns", "columns", "reduce", "acc", "columnId", "numericIndex", "columnMeta", "size", "resizeable", "createDxGridRows", "rows", "rowId", "rowMeta", "projectCellProps", "address", "rawValue", "getValue", "threadRefs", "join", "description", "getValueDescription", "type", "format", "cellClassNameForRange", "reverse", "parseValue", "mx", "cellClassesForFieldType", "commentedClassName", "dataRefs", "gridCellGetter", "cachedGridCells", "nextBounds", "Array", "end", "start", "forEach", "_", "c0", "r0", "rowLabelCell", "rowToA1Notation", "resizeHandle", "colLabelCell", "colToA1Notation", "cellGetter", "getGridCells", "r", "c", "useSheetModelDxGridProps", "dxGrid", "setColumns", "useState", "setRows", "cellsAccessor", "createDocAccessor", "getCells", "handleCellsUpdate", "requestUpdate", "handle", "addListener", "unsubscribe", "update", "on", "removeListener", "columnMetaAccessor", "rowMetaAccessor", "handleColumnMetaUpdate", "handleRowMetaUpdate", "SheetContext", "context", "invariant", "SheetProviderImpl", "onInfo", "ignoreAttention", "__gridScope", "id", "editing", "setEditing", "useGridContext", "setCursorInternal", "setRangeInternal", "cursorFallbackRange", "setCursorFallbackRange", "activeRefs", "setCursor", "nextCursor", "setRange", "nextRange", "SheetProvider", "readonly", "useSheetModel", "Grid", "inertPosition", "initialCells", "frozenColsStart", "frozenRowsStart", "frozen", "sheetRowDefault", "defaultSizeRow", "sheetColDefault", "GridSheet", "setDxGrid", "extraplanarFocus", "setExtraplanarFocus", "rangeController", "useRef", "hasAttention", "useAttention", "handleFocus", "event", "cell", "closestCell", "handleClose", "_value", "shift", "axis", "includes", "delta", "startsWith", "refocus", "handleBlur", "setValue", "parseCellIndex", "handleAxisResize", "handleSelect", "minCol", "maxCol", "minRow", "maxRow", "handleWheel", "stopPropagation", "selectEntireAxis", "pos", "setSelection", "handleClick", "handleKeyDown", "preventDefault", "clear", "metaKey", "ctrlKey", "cut", "copy", "paste", "shiftKey", "redo", "undo", "contextMenuAnchorRef", "contextMenuOpen", "setContextMenuOpen", "contextMenuAxis", "handleContextMenu", "handleAxisMenuAction", "operation", "SheetAction", "InsertAxis", "DropAxis", "axisIndex", "extension", "editorKeys", "onClose", "initialContent", "onNav", "sheetExtension", "functions", "getFunctions", "rangeExtension", "onInit", "fn", "onStateChange", "state", "mode", "activeRange", "getCellContent", "getCellText", "div", "role", "GridCellEditor", "onBlur", "Content", "limitColumns", "DEFAULT_COLS", "limitRows", "DEFAULT_ROWS", "onAxisResize", "onSelect", "rowDefault", "columnDefault", "onFocus", "onWheelCapture", "onKeyDown", "onContextMenu", "overscroll", "DropdownMenu", "modal", "onOpenChange", "nextOpen", "VirtualTrigger", "virtualRef", "side", "sideOffset", "collisionPadding", "Viewport", "data-testid", "Icon", "icon", "span", "Arrow", "SheetContainer", "lazy"]
|
|
7
|
+
}
|