@dxos/plugin-sheet 0.7.5-main.9d26e3a → 0.7.5-main.b19bfc8
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-IMHGS7Z4.mjs +370 -0
- package/dist/lib/browser/SheetContainer-IMHGS7Z4.mjs.map +7 -0
- package/dist/lib/browser/{chunk-A374JPWV.mjs → chunk-AT7F2WDW.mjs} +157 -391
- package/dist/lib/browser/chunk-AT7F2WDW.mjs.map +7 -0
- package/dist/lib/browser/chunk-FOO6NGBM.mjs +229 -0
- package/dist/lib/browser/chunk-FOO6NGBM.mjs.map +7 -0
- package/dist/lib/browser/chunk-GAFHJBCU.mjs +18 -0
- package/dist/lib/browser/chunk-GAFHJBCU.mjs.map +7 -0
- package/dist/lib/browser/chunk-LXHRT3CC.mjs +15 -0
- package/dist/lib/browser/chunk-LXHRT3CC.mjs.map +7 -0
- package/dist/lib/browser/{chunk-Q4XS4YWF.mjs → chunk-OOSRC36N.mjs} +2 -2
- package/dist/lib/browser/chunk-OOSRC36N.mjs.map +7 -0
- package/dist/lib/browser/compute-graph-registry-EGPD4HEX.mjs +27 -0
- package/dist/lib/browser/compute-graph-registry-EGPD4HEX.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +88 -218
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/intent-resolver-6S2RMLQF.mjs +56 -0
- package/dist/lib/browser/intent-resolver-6S2RMLQF.mjs.map +7 -0
- package/dist/lib/browser/markdown-CFJIWHZX.mjs +26 -0
- package/dist/lib/browser/markdown-CFJIWHZX.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/react-surface-PHKJZYFB.mjs +52 -0
- package/dist/lib/browser/react-surface-PHKJZYFB.mjs.map +7 -0
- package/dist/lib/browser/thread-7ZWW5EA7.mjs +17 -0
- package/dist/lib/browser/thread-7ZWW5EA7.mjs.map +7 -0
- package/dist/lib/browser/types/index.mjs +2 -2
- package/dist/lib/node/SheetContainer-NNIZN4AK.cjs +364 -0
- package/dist/lib/node/SheetContainer-NNIZN4AK.cjs.map +7 -0
- package/dist/lib/node/{chunk-FDEQ2PGJ.cjs → chunk-2KCZUH72.cjs} +198 -428
- package/dist/lib/node/chunk-2KCZUH72.cjs.map +7 -0
- package/dist/lib/node/{chunk-TQOJ7DG2.cjs → chunk-4LSYTNS4.cjs} +6 -6
- package/dist/lib/node/chunk-4LSYTNS4.cjs.map +7 -0
- package/dist/lib/node/{chunk-2ZVZI2KJ.cjs → chunk-MLU6KRQN.cjs} +12 -9
- package/dist/lib/node/chunk-MLU6KRQN.cjs.map +7 -0
- package/dist/lib/node/chunk-P4KSGZSS.cjs +251 -0
- package/dist/lib/node/chunk-P4KSGZSS.cjs.map +7 -0
- package/dist/lib/node/{meta.cjs → chunk-ZV2RS3QH.cjs} +12 -8
- package/dist/lib/node/chunk-ZV2RS3QH.cjs.map +7 -0
- package/dist/lib/node/compute-graph-registry-GJK5H264.cjs +53 -0
- package/dist/lib/node/compute-graph-registry-GJK5H264.cjs.map +7 -0
- package/dist/lib/node/index.cjs +89 -215
- package/dist/lib/node/index.cjs.map +4 -4
- package/dist/lib/node/intent-resolver-I25V7SBT.cjs +69 -0
- package/dist/lib/node/intent-resolver-I25V7SBT.cjs.map +7 -0
- package/dist/lib/node/markdown-YTCSW66K.cjs +40 -0
- package/dist/lib/node/markdown-YTCSW66K.cjs.map +7 -0
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/react-surface-HLE6CRA6.cjs +70 -0
- package/dist/lib/node/react-surface-HLE6CRA6.cjs.map +7 -0
- package/dist/lib/node/thread-DRNYTR6M.cjs +32 -0
- package/dist/lib/node/thread-DRNYTR6M.cjs.map +7 -0
- package/dist/lib/node/types/index.cjs +30 -30
- package/dist/lib/node/types/index.cjs.map +1 -1
- package/dist/lib/node-esm/SheetContainer-PGDJKGTZ.mjs +371 -0
- package/dist/lib/node-esm/SheetContainer-PGDJKGTZ.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-NYYIDVR7.mjs → chunk-HPAMZ6SP.mjs} +2 -2
- package/dist/lib/node-esm/chunk-HPAMZ6SP.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-PTOI45NK.mjs +231 -0
- package/dist/lib/node-esm/chunk-PTOI45NK.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-RTZXXOS2.mjs +20 -0
- package/dist/lib/node-esm/chunk-RTZXXOS2.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-SX3S7UKU.mjs +16 -0
- package/dist/lib/node-esm/chunk-SX3S7UKU.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-L5PQHVTX.mjs → chunk-ZM7XLUGL.mjs} +157 -391
- package/dist/lib/node-esm/chunk-ZM7XLUGL.mjs.map +7 -0
- package/dist/lib/node-esm/compute-graph-registry-3F5JCYEN.mjs +28 -0
- package/dist/lib/node-esm/compute-graph-registry-3F5JCYEN.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +88 -218
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/intent-resolver-IPRSINII.mjs +57 -0
- package/dist/lib/node-esm/intent-resolver-IPRSINII.mjs.map +7 -0
- package/dist/lib/node-esm/markdown-CGSK44XJ.mjs +27 -0
- package/dist/lib/node-esm/markdown-CGSK44XJ.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/react-surface-PFRJ7V5N.mjs +53 -0
- package/dist/lib/node-esm/react-surface-PFRJ7V5N.mjs.map +7 -0
- package/dist/lib/node-esm/thread-6T5VXPAF.mjs +18 -0
- package/dist/lib/node-esm/thread-6T5VXPAF.mjs.map +7 -0
- package/dist/lib/node-esm/types/index.mjs +2 -2
- package/dist/types/src/SheetPlugin.d.ts +1 -3
- package/dist/types/src/SheetPlugin.d.ts.map +1 -1
- package/dist/types/src/capabilities/capabilities.d.ts +5 -0
- package/dist/types/src/capabilities/capabilities.d.ts.map +1 -0
- package/dist/types/src/capabilities/compute-graph-registry.d.ts +4 -0
- package/dist/types/src/capabilities/compute-graph-registry.d.ts.map +1 -0
- package/dist/types/src/capabilities/index.d.ts +12 -0
- package/dist/types/src/capabilities/index.d.ts.map +1 -0
- package/dist/types/src/capabilities/intent-resolver.d.ts +4 -0
- package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -0
- package/dist/types/src/capabilities/markdown.d.ts +6 -0
- package/dist/types/src/capabilities/markdown.d.ts.map +1 -0
- package/dist/types/src/capabilities/react-surface.d.ts +4 -0
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -0
- package/dist/types/src/capabilities/thread.d.ts +6 -0
- package/dist/types/src/capabilities/thread.d.ts.map +1 -0
- package/dist/types/src/components/ComputeGraph/ComputeGraphContextProvider.d.ts +1 -1
- package/dist/types/src/components/ComputeGraph/ComputeGraphContextProvider.d.ts.map +1 -1
- package/dist/types/src/components/FunctionEditor/FunctionEditor.d.ts +1 -2
- package/dist/types/src/components/FunctionEditor/FunctionEditor.d.ts.map +1 -1
- package/dist/types/src/components/GridSheet/GridSheet.d.ts +1 -2
- package/dist/types/src/components/GridSheet/GridSheet.d.ts.map +1 -1
- package/dist/types/src/components/GridSheet/GridSheet.stories.d.ts +1 -2
- package/dist/types/src/components/GridSheet/GridSheet.stories.d.ts.map +1 -1
- package/dist/types/src/components/GridSheet/SheetCellEditor.stories.d.ts +1 -2
- package/dist/types/src/components/GridSheet/SheetCellEditor.stories.d.ts.map +1 -1
- package/dist/types/src/components/RangeList/RangeList.d.ts +1 -2
- package/dist/types/src/components/RangeList/RangeList.d.ts.map +1 -1
- package/dist/types/src/components/SheetContainer/SheetContainer.d.ts +1 -2
- package/dist/types/src/components/SheetContainer/SheetContainer.d.ts.map +1 -1
- package/dist/types/src/components/SheetContainer/SheetContainer.stories.d.ts +2 -3
- package/dist/types/src/components/SheetContainer/SheetContainer.stories.d.ts.map +1 -1
- package/dist/types/src/components/SheetContext/SheetContext.d.ts +2 -2
- package/dist/types/src/components/SheetContext/SheetContext.d.ts.map +1 -1
- package/dist/types/src/components/SheetToolbar/SheetToolbar.d.ts +7 -0
- package/dist/types/src/components/SheetToolbar/SheetToolbar.d.ts.map +1 -0
- package/dist/types/src/components/SheetToolbar/SheetToolbar.stories.d.ts +6 -0
- package/dist/types/src/components/SheetToolbar/SheetToolbar.stories.d.ts.map +1 -0
- package/dist/types/src/components/SheetToolbar/align.d.ts +28 -0
- package/dist/types/src/components/SheetToolbar/align.d.ts.map +1 -0
- package/dist/types/src/components/SheetToolbar/comment.d.ts +23 -0
- package/dist/types/src/components/SheetToolbar/comment.d.ts.map +1 -0
- package/dist/types/src/components/SheetToolbar/index.d.ts +2 -0
- package/dist/types/src/components/SheetToolbar/index.d.ts.map +1 -0
- package/dist/types/src/components/SheetToolbar/style.d.ts +26 -0
- package/dist/types/src/components/SheetToolbar/style.d.ts.map +1 -0
- 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 +6 -0
- package/dist/types/src/components/SheetToolbar/useToolbarState.d.ts.map +1 -0
- package/dist/types/src/components/index.d.ts +3 -4
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/extensions/compute.stories.d.ts +2 -3
- package/dist/types/src/extensions/compute.stories.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +2 -3
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/integrations/thread-ranges.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts +2 -2
- package/dist/types/src/meta.d.ts.map +1 -1
- package/dist/types/src/testing/testing.d.ts +1 -1
- package/dist/types/src/testing/testing.d.ts.map +1 -1
- package/dist/types/src/types/schema.d.ts +14 -14
- package/dist/types/src/types/schema.d.ts.map +1 -1
- package/dist/types/src/types/sheet-range-types.d.ts +1 -1
- package/dist/types/src/types/sheet-range-types.d.ts.map +1 -1
- package/dist/types/src/types/types.d.ts +0 -11
- package/dist/types/src/types/types.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +46 -52
- package/src/SheetPlugin.tsx +68 -105
- package/src/capabilities/capabilities.ts +14 -0
- package/src/capabilities/compute-graph-registry.ts +25 -0
- package/src/capabilities/index.ts +13 -0
- package/src/capabilities/intent-resolver.ts +38 -0
- package/src/capabilities/markdown.ts +22 -0
- package/src/capabilities/react-surface.tsx +37 -0
- package/src/capabilities/thread.ts +14 -0
- package/src/components/GridSheet/GridSheet.stories.tsx +2 -0
- package/src/components/GridSheet/util.ts +1 -1
- package/src/components/SheetContainer/SheetContainer.stories.tsx +28 -22
- package/src/components/SheetContainer/SheetContainer.tsx +3 -8
- package/src/components/{Toolbar/Toolbar.stories.tsx → SheetToolbar/SheetToolbar.stories.tsx} +4 -8
- package/src/components/SheetToolbar/SheetToolbar.tsx +48 -0
- package/src/components/SheetToolbar/align.ts +68 -0
- package/src/components/SheetToolbar/comment.ts +56 -0
- package/src/components/{Toolbar → SheetToolbar}/index.ts +1 -1
- package/src/components/SheetToolbar/style.ts +72 -0
- package/src/components/SheetToolbar/useToolbarAction.ts +87 -0
- package/src/components/SheetToolbar/useToolbarState.ts +17 -0
- package/src/components/index.ts +0 -1
- package/src/extensions/compute.stories.tsx +2 -2
- package/src/index.ts +2 -5
- package/src/integrations/thread-ranges.ts +21 -10
- package/src/meta.ts +4 -2
- package/src/types/sheet-range-types.ts +1 -1
- package/src/types/types.ts +0 -26
- package/dist/lib/browser/SheetContainer-S4NCLUYL.mjs +0 -290
- package/dist/lib/browser/SheetContainer-S4NCLUYL.mjs.map +0 -7
- package/dist/lib/browser/chunk-A374JPWV.mjs.map +0 -7
- package/dist/lib/browser/chunk-Q4XS4YWF.mjs.map +0 -7
- package/dist/lib/browser/chunk-RABELMEQ.mjs +0 -15
- package/dist/lib/browser/chunk-RABELMEQ.mjs.map +0 -7
- package/dist/lib/browser/meta.mjs +0 -9
- package/dist/lib/browser/meta.mjs.map +0 -7
- package/dist/lib/node/SheetContainer-TP4GYXZB.cjs +0 -296
- package/dist/lib/node/SheetContainer-TP4GYXZB.cjs.map +0 -7
- package/dist/lib/node/chunk-2ZVZI2KJ.cjs.map +0 -7
- package/dist/lib/node/chunk-FDEQ2PGJ.cjs.map +0 -7
- package/dist/lib/node/chunk-TQOJ7DG2.cjs.map +0 -7
- package/dist/lib/node/meta.cjs.map +0 -7
- package/dist/lib/node-esm/SheetContainer-YB3JBVPZ.mjs +0 -291
- package/dist/lib/node-esm/SheetContainer-YB3JBVPZ.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-BM2Q3FFC.mjs +0 -17
- package/dist/lib/node-esm/chunk-BM2Q3FFC.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-L5PQHVTX.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-NYYIDVR7.mjs.map +0 -7
- package/dist/lib/node-esm/meta.mjs +0 -10
- package/dist/lib/node-esm/meta.mjs.map +0 -7
- package/dist/types/src/components/SheetObjectSettings.d.ts +0 -7
- package/dist/types/src/components/SheetObjectSettings.d.ts.map +0 -1
- package/dist/types/src/components/Toolbar/Toolbar.d.ts +0 -48
- package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +0 -1
- package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts +0 -7
- package/dist/types/src/components/Toolbar/Toolbar.stories.d.ts.map +0 -1
- package/dist/types/src/components/Toolbar/index.d.ts +0 -2
- package/dist/types/src/components/Toolbar/index.d.ts.map +0 -1
- package/dist/types/src/testing/playwright/playwright.config.d.ts +0 -3
- package/dist/types/src/testing/playwright/playwright.config.d.ts.map +0 -1
- package/src/components/SheetObjectSettings.tsx +0 -38
- package/src/components/Toolbar/Toolbar.tsx +0 -344
- /package/src/testing/playwright/{playwright.config.ts → playwright.config.cts} +0 -0
|
@@ -1,4 +1,8 @@
|
|
|
1
1
|
import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
|
|
2
|
+
import {
|
|
3
|
+
rangeExtension,
|
|
4
|
+
sheetExtension
|
|
5
|
+
} from "./chunk-PTOI45NK.mjs";
|
|
2
6
|
import {
|
|
3
7
|
DEFAULT_COLS,
|
|
4
8
|
DEFAULT_ROWS,
|
|
@@ -7,10 +11,10 @@ import {
|
|
|
7
11
|
cellClassNameForRange,
|
|
8
12
|
rangeFromIndex,
|
|
9
13
|
useSheetModel
|
|
10
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-HPAMZ6SP.mjs";
|
|
11
15
|
import {
|
|
12
16
|
SHEET_PLUGIN
|
|
13
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-RTZXXOS2.mjs";
|
|
14
18
|
|
|
15
19
|
// packages/plugins/plugin-sheet/src/components/ComputeGraph/ComputeGraphContextProvider.tsx
|
|
16
20
|
import React, { createContext, useContext } from "react";
|
|
@@ -39,334 +43,8 @@ var useComputeGraph = (space) => {
|
|
|
39
43
|
return graph;
|
|
40
44
|
};
|
|
41
45
|
|
|
42
|
-
// packages/plugins/plugin-sheet/src/extensions/compute.ts
|
|
43
|
-
import { syntaxTree } from "@codemirror/language";
|
|
44
|
-
import { RangeSetBuilder, StateEffect, StateField } from "@codemirror/state";
|
|
45
|
-
import { Decoration, EditorView, ViewPlugin, WidgetType } from "@codemirror/view";
|
|
46
|
-
import { debounce } from "@dxos/async";
|
|
47
|
-
import { createSheetName } from "@dxos/compute";
|
|
48
|
-
import { invariant } from "@dxos/invariant";
|
|
49
|
-
import { documentId, singleValueFacet } from "@dxos/react-ui-editor";
|
|
50
|
-
var updateAllDecorations = StateEffect.define();
|
|
51
|
-
var computeGraphFacet = singleValueFacet();
|
|
52
|
-
|
|
53
|
-
// packages/plugins/plugin-sheet/src/extensions/editor/extension.ts
|
|
54
|
-
import { acceptCompletion, autocompletion, completionStatus, startCompletion } from "@codemirror/autocomplete";
|
|
55
|
-
import { HighlightStyle, syntaxHighlighting } from "@codemirror/language";
|
|
56
|
-
import { ViewPlugin as ViewPlugin2, keymap } from "@codemirror/view";
|
|
57
|
-
import { tags } from "@lezer/highlight";
|
|
58
|
-
import { spreadsheet } from "codemirror-lang-spreadsheet";
|
|
59
|
-
import { RANGE_NOTATION } from "@dxos/compute";
|
|
60
|
-
import { singleValueFacet as singleValueFacet2 } from "@dxos/react-ui-editor";
|
|
61
|
-
import { mx } from "@dxos/react-ui-theme";
|
|
62
|
-
var highlightStyles = HighlightStyle.define([
|
|
63
|
-
// Function.
|
|
64
|
-
{
|
|
65
|
-
tag: tags.name,
|
|
66
|
-
class: "text-accentText"
|
|
67
|
-
},
|
|
68
|
-
// Range.
|
|
69
|
-
{
|
|
70
|
-
tag: tags.tagName,
|
|
71
|
-
class: "text-pinkText"
|
|
72
|
-
},
|
|
73
|
-
// Values.
|
|
74
|
-
{
|
|
75
|
-
tag: tags.number,
|
|
76
|
-
class: "text-tealText"
|
|
77
|
-
},
|
|
78
|
-
{
|
|
79
|
-
tag: tags.bool,
|
|
80
|
-
class: "text-tealText"
|
|
81
|
-
},
|
|
82
|
-
{
|
|
83
|
-
tag: tags.string,
|
|
84
|
-
class: "text-tealText"
|
|
85
|
-
},
|
|
86
|
-
// Error.
|
|
87
|
-
{
|
|
88
|
-
tag: tags.invalid,
|
|
89
|
-
class: "text-unAccent"
|
|
90
|
-
}
|
|
91
|
-
]);
|
|
92
|
-
var languageFacet = singleValueFacet2();
|
|
93
|
-
var sheetExtension = ({ debug, functions = [] }) => {
|
|
94
|
-
const { extension, language } = spreadsheet({
|
|
95
|
-
idiom: "en-US",
|
|
96
|
-
decimalSeparator: "."
|
|
97
|
-
});
|
|
98
|
-
const createCompletion = (name) => {
|
|
99
|
-
const { section = "Custom", description, syntax } = functions.find((value) => value.name === name) ?? {};
|
|
100
|
-
return {
|
|
101
|
-
section,
|
|
102
|
-
label: name,
|
|
103
|
-
info: () => {
|
|
104
|
-
if (!description && !syntax) {
|
|
105
|
-
return null;
|
|
106
|
-
}
|
|
107
|
-
const root = document.createElement("div");
|
|
108
|
-
root.className = "flex flex-col gap-2 text-sm";
|
|
109
|
-
const title = document.createElement("h2");
|
|
110
|
-
title.innerText = name;
|
|
111
|
-
title.className = "text-lg font-mono text-accentText";
|
|
112
|
-
root.appendChild(title);
|
|
113
|
-
if (description) {
|
|
114
|
-
const info = document.createElement("p");
|
|
115
|
-
info.innerText = description;
|
|
116
|
-
info.className = "text-subdued";
|
|
117
|
-
root.appendChild(info);
|
|
118
|
-
}
|
|
119
|
-
if (syntax) {
|
|
120
|
-
const detail = document.createElement("pre");
|
|
121
|
-
detail.innerText = syntax;
|
|
122
|
-
detail.className = "whitespace-pre-wrap text-greenText";
|
|
123
|
-
root.appendChild(detail);
|
|
124
|
-
}
|
|
125
|
-
return root;
|
|
126
|
-
},
|
|
127
|
-
apply: (view, completion, from, to) => {
|
|
128
|
-
const insertParens = to === view.state.doc.toString().length;
|
|
129
|
-
view.dispatch(view.state.update({
|
|
130
|
-
changes: {
|
|
131
|
-
from,
|
|
132
|
-
to,
|
|
133
|
-
insert: completion.label + (insertParens ? "()" : "")
|
|
134
|
-
},
|
|
135
|
-
selection: {
|
|
136
|
-
anchor: from + completion.label.length + 1
|
|
137
|
-
}
|
|
138
|
-
}));
|
|
139
|
-
}
|
|
140
|
-
};
|
|
141
|
-
};
|
|
142
|
-
return [
|
|
143
|
-
extension,
|
|
144
|
-
languageFacet.of(language),
|
|
145
|
-
language.data.of({
|
|
146
|
-
autocomplete: (context) => {
|
|
147
|
-
if (context.state.doc.toString()[0] !== "=") {
|
|
148
|
-
return null;
|
|
149
|
-
}
|
|
150
|
-
const match = context.matchBefore(/\w*/);
|
|
151
|
-
if (!match || match.from === match.to) {
|
|
152
|
-
return null;
|
|
153
|
-
}
|
|
154
|
-
const text = match.text.toUpperCase();
|
|
155
|
-
if (!context.explicit && match.text.length < 2) {
|
|
156
|
-
return null;
|
|
157
|
-
}
|
|
158
|
-
return {
|
|
159
|
-
from: match.from,
|
|
160
|
-
options: functions?.filter(({ name }) => name.startsWith(text)).map(({ name }) => createCompletion(name)) ?? []
|
|
161
|
-
};
|
|
162
|
-
}
|
|
163
|
-
}),
|
|
164
|
-
syntaxHighlighting(highlightStyles),
|
|
165
|
-
autocompletion({
|
|
166
|
-
aboveCursor: false,
|
|
167
|
-
defaultKeymap: true,
|
|
168
|
-
activateOnTyping: true,
|
|
169
|
-
closeOnBlur: !debug,
|
|
170
|
-
icons: false,
|
|
171
|
-
tooltipClass: () => mx("!-left-[1px] !top-[33px] !-m-0 border !border-t-0 [&>ul]:!min-w-[198px]", "[&>ul>li[aria-selected]]:!bg-accentSurface", "border-separator")
|
|
172
|
-
}),
|
|
173
|
-
keymap.of([
|
|
174
|
-
{
|
|
175
|
-
key: "Tab",
|
|
176
|
-
run: (view) => {
|
|
177
|
-
return completionStatus(view.state) === "active" ? acceptCompletion(view) : startCompletion(view);
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
])
|
|
181
|
-
];
|
|
182
|
-
};
|
|
183
|
-
var rangeExtension = ({ onInit, onStateChange }) => {
|
|
184
|
-
let view;
|
|
185
|
-
let activeRange;
|
|
186
|
-
const notifier = {
|
|
187
|
-
setRange: (range) => {
|
|
188
|
-
if (activeRange) {
|
|
189
|
-
view.dispatch(view.state.update({
|
|
190
|
-
changes: {
|
|
191
|
-
...activeRange,
|
|
192
|
-
insert: range.toString()
|
|
193
|
-
},
|
|
194
|
-
selection: {
|
|
195
|
-
anchor: activeRange.from + range.length
|
|
196
|
-
}
|
|
197
|
-
}));
|
|
198
|
-
}
|
|
199
|
-
view.focus();
|
|
200
|
-
}
|
|
201
|
-
};
|
|
202
|
-
return ViewPlugin2.fromClass(class {
|
|
203
|
-
constructor(_view) {
|
|
204
|
-
view = _view;
|
|
205
|
-
onInit?.(notifier);
|
|
206
|
-
}
|
|
207
|
-
update(view2) {
|
|
208
|
-
const { anchor } = view2.state.selection.ranges[0];
|
|
209
|
-
activeRange = void 0;
|
|
210
|
-
const language = view2.state.facet(languageFacet);
|
|
211
|
-
const { topNode } = language.parser.parse(view2.state.doc.toString());
|
|
212
|
-
visitTree(topNode, ({ type, from, to }) => {
|
|
213
|
-
if (from <= anchor && to >= anchor) {
|
|
214
|
-
switch (type.name) {
|
|
215
|
-
case "Function":
|
|
216
|
-
activeRange = {
|
|
217
|
-
from: to,
|
|
218
|
-
to
|
|
219
|
-
};
|
|
220
|
-
break;
|
|
221
|
-
case "CloseParen":
|
|
222
|
-
activeRange = {
|
|
223
|
-
from,
|
|
224
|
-
to: from
|
|
225
|
-
};
|
|
226
|
-
break;
|
|
227
|
-
case "RangeToken":
|
|
228
|
-
case "CellToken":
|
|
229
|
-
activeRange = {
|
|
230
|
-
from,
|
|
231
|
-
to
|
|
232
|
-
};
|
|
233
|
-
return true;
|
|
234
|
-
}
|
|
235
|
-
}
|
|
236
|
-
return false;
|
|
237
|
-
});
|
|
238
|
-
if (!activeRange && view2.state.doc.toString()[0] === "=") {
|
|
239
|
-
const str = view2.state.doc.sliceString(1);
|
|
240
|
-
if (RANGE_NOTATION.test(str)) {
|
|
241
|
-
activeRange = {
|
|
242
|
-
from: 1,
|
|
243
|
-
to: str.length + 1
|
|
244
|
-
};
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
onStateChange?.({
|
|
248
|
-
activeRange: activeRange ? view2.state.doc.sliceString(activeRange.from, activeRange.to) : void 0
|
|
249
|
-
});
|
|
250
|
-
}
|
|
251
|
-
});
|
|
252
|
-
};
|
|
253
|
-
var visitTree = (node, callback) => {
|
|
254
|
-
if (callback(node)) {
|
|
255
|
-
return true;
|
|
256
|
-
}
|
|
257
|
-
for (let child = node.firstChild; child !== null; child = child.nextSibling) {
|
|
258
|
-
if (visitTree(child, callback)) {
|
|
259
|
-
return true;
|
|
260
|
-
}
|
|
261
|
-
}
|
|
262
|
-
return false;
|
|
263
|
-
};
|
|
264
|
-
|
|
265
|
-
// packages/plugins/plugin-sheet/src/components/SheetContext/SheetContext.tsx
|
|
266
|
-
import React2, { createContext as createContext2, useCallback, useContext as useContext2, useState } from "react";
|
|
267
|
-
import { invariant as invariant2 } from "@dxos/invariant";
|
|
268
|
-
import { fullyQualifiedId } from "@dxos/react-client/echo";
|
|
269
|
-
import { Grid, useGridContext } from "@dxos/react-ui-grid";
|
|
270
|
-
var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/plugin-sheet/src/components/SheetContext/SheetContext.tsx";
|
|
271
|
-
var SheetContext = /* @__PURE__ */ createContext2(void 0);
|
|
272
|
-
var useSheetContext = () => {
|
|
273
|
-
const context = useContext2(SheetContext);
|
|
274
|
-
invariant2(context, void 0, {
|
|
275
|
-
F: __dxlog_file,
|
|
276
|
-
L: 54,
|
|
277
|
-
S: void 0,
|
|
278
|
-
A: [
|
|
279
|
-
"context",
|
|
280
|
-
""
|
|
281
|
-
]
|
|
282
|
-
});
|
|
283
|
-
return context;
|
|
284
|
-
};
|
|
285
|
-
var SheetProviderImpl = ({ model, onInfo, ignoreAttention, children, __gridScope }) => {
|
|
286
|
-
const { id, editing, setEditing } = useGridContext("SheetProvider", __gridScope);
|
|
287
|
-
const [cursor, setCursorInternal] = useState();
|
|
288
|
-
const [range, setRangeInternal] = useState();
|
|
289
|
-
const [cursorFallbackRange, setCursorFallbackRange] = useState();
|
|
290
|
-
const [activeRefs, setActiveRefs] = useState("");
|
|
291
|
-
const setCursor = useCallback((nextCursor) => {
|
|
292
|
-
setCursorInternal(nextCursor);
|
|
293
|
-
setCursorFallbackRange(range?.to ? range : nextCursor ? {
|
|
294
|
-
from: nextCursor,
|
|
295
|
-
to: nextCursor
|
|
296
|
-
} : void 0);
|
|
297
|
-
}, [
|
|
298
|
-
range
|
|
299
|
-
]);
|
|
300
|
-
const setRange = useCallback((nextRange) => {
|
|
301
|
-
setRangeInternal(nextRange);
|
|
302
|
-
setCursorFallbackRange(nextRange?.to ? nextRange : cursor ? {
|
|
303
|
-
from: cursor,
|
|
304
|
-
to: cursor
|
|
305
|
-
} : void 0);
|
|
306
|
-
}, [
|
|
307
|
-
cursor
|
|
308
|
-
]);
|
|
309
|
-
return /* @__PURE__ */ React2.createElement(SheetContext.Provider, {
|
|
310
|
-
value: {
|
|
311
|
-
id,
|
|
312
|
-
model,
|
|
313
|
-
editing,
|
|
314
|
-
setEditing,
|
|
315
|
-
cursor,
|
|
316
|
-
setCursor,
|
|
317
|
-
range,
|
|
318
|
-
setRange,
|
|
319
|
-
cursorFallbackRange,
|
|
320
|
-
activeRefs,
|
|
321
|
-
setActiveRefs,
|
|
322
|
-
// TODO(burdon): Change to event.
|
|
323
|
-
onInfo,
|
|
324
|
-
ignoreAttention
|
|
325
|
-
}
|
|
326
|
-
}, children);
|
|
327
|
-
};
|
|
328
|
-
var SheetProvider = ({ children, graph, sheet, readonly, ignoreAttention, onInfo }) => {
|
|
329
|
-
const model = useSheetModel(graph, sheet, {
|
|
330
|
-
readonly
|
|
331
|
-
});
|
|
332
|
-
return !model ? null : /* @__PURE__ */ React2.createElement(Grid.Root, {
|
|
333
|
-
id: fullyQualifiedId(sheet)
|
|
334
|
-
}, /* @__PURE__ */ React2.createElement(SheetProviderImpl, {
|
|
335
|
-
model,
|
|
336
|
-
onInfo,
|
|
337
|
-
ignoreAttention
|
|
338
|
-
}, children));
|
|
339
|
-
};
|
|
340
|
-
|
|
341
|
-
// packages/plugins/plugin-sheet/src/components/GridSheet/GridSheet.tsx
|
|
342
|
-
import React5, { useCallback as useCallback4, useMemo as useMemo2, useRef, useState as useState3 } from "react";
|
|
343
|
-
import { createIntent as createIntent2, useIntentDispatcher as useIntentDispatcher2 } from "@dxos/app-framework";
|
|
344
|
-
import { rangeToA1Notation as rangeToA1Notation2 } from "@dxos/compute";
|
|
345
|
-
import { DropdownMenu, Icon, useTranslation as useTranslation3 } from "@dxos/react-ui";
|
|
346
|
-
import { useAttention } from "@dxos/react-ui-attention";
|
|
347
|
-
import { closestCell, defaultSizeRow, editorKeys, Grid as Grid2, GridCellEditor, parseCellIndex } from "@dxos/react-ui-grid";
|
|
348
|
-
|
|
349
|
-
// packages/plugins/plugin-sheet/src/components/GridSheet/util.ts
|
|
350
|
-
import { useEffect as useEffect2, useState as useState2 } from "react";
|
|
351
|
-
import { inRange as inRange2 } from "@dxos/compute";
|
|
352
|
-
import { createDocAccessor, fullyQualifiedId as fullyQualifiedId3 } from "@dxos/react-client/echo";
|
|
353
|
-
import { parseValue, cellClassesForFieldType } from "@dxos/react-ui-form";
|
|
354
|
-
import { colToA1Notation, rowToA1Notation, commentedClassName } from "@dxos/react-ui-grid";
|
|
355
|
-
import { mx as mx2 } from "@dxos/react-ui-theme";
|
|
356
|
-
|
|
357
|
-
// packages/plugins/plugin-sheet/src/integrations/thread-ranges.ts
|
|
358
|
-
import { useCallback as useCallback3, useEffect, useMemo } from "react";
|
|
359
|
-
import { createIntent, createResolver, LayoutAction, useIntentDispatcher, useIntentResolver } from "@dxos/app-framework";
|
|
360
|
-
import { debounce as debounce2 } from "@dxos/async";
|
|
361
|
-
import { inRange } from "@dxos/compute";
|
|
362
|
-
import { ThreadAction } from "@dxos/plugin-thread/types";
|
|
363
|
-
import { fullyQualifiedId as fullyQualifiedId2 } from "@dxos/react-client/echo";
|
|
364
|
-
|
|
365
|
-
// packages/plugins/plugin-sheet/src/components/index.ts
|
|
366
|
-
import { lazy } from "react";
|
|
367
|
-
|
|
368
46
|
// packages/plugins/plugin-sheet/src/components/RangeList/RangeList.tsx
|
|
369
|
-
import
|
|
47
|
+
import React2, { useCallback } from "react";
|
|
370
48
|
import { rangeToA1Notation } from "@dxos/compute";
|
|
371
49
|
import { S } from "@dxos/echo-schema";
|
|
372
50
|
import { useTranslation } from "@dxos/react-ui";
|
|
@@ -376,59 +54,62 @@ var RangeList = ({ sheet }) => {
|
|
|
376
54
|
const { t } = useTranslation(SHEET_PLUGIN);
|
|
377
55
|
const handleSelectRange = (range) => {
|
|
378
56
|
};
|
|
379
|
-
const handleDeleteRange =
|
|
57
|
+
const handleDeleteRange = useCallback((range) => {
|
|
380
58
|
const index = sheet.ranges.findIndex((sheetRange) => sheetRange === range);
|
|
381
59
|
sheet.ranges.splice(index, 1);
|
|
382
60
|
}, [
|
|
383
61
|
sheet
|
|
384
62
|
]);
|
|
385
|
-
return /* @__PURE__ */
|
|
63
|
+
return /* @__PURE__ */ React2.createElement(React2.Fragment, null, /* @__PURE__ */ React2.createElement("h2", {
|
|
386
64
|
className: "p-2 text-sm font-semibold"
|
|
387
|
-
}, t("range list heading")), /* @__PURE__ */
|
|
65
|
+
}, t("range list heading")), /* @__PURE__ */ React2.createElement(List.Root, {
|
|
388
66
|
items: sheet.ranges,
|
|
389
67
|
isItem: S.is(Range)
|
|
390
|
-
}, ({ items: ranges }) => ranges.map((range, i) => /* @__PURE__ */
|
|
68
|
+
}, ({ items: ranges }) => ranges.map((range, i) => /* @__PURE__ */ React2.createElement(List.Item, {
|
|
391
69
|
key: i,
|
|
392
70
|
item: range,
|
|
393
71
|
classNames: [
|
|
394
72
|
"p-2",
|
|
395
73
|
ghostHover
|
|
396
74
|
]
|
|
397
|
-
}, /* @__PURE__ */
|
|
75
|
+
}, /* @__PURE__ */ React2.createElement(List.ItemDragHandle, null), /* @__PURE__ */ React2.createElement(List.ItemTitle, {
|
|
398
76
|
onClick: () => handleSelectRange(range)
|
|
399
77
|
}, t("range title", {
|
|
400
78
|
position: rangeToA1Notation(rangeFromIndex(sheet, range.range)),
|
|
401
79
|
key: t(`range key ${range.key} label`),
|
|
402
80
|
value: t(`range value ${range.value} label`)
|
|
403
|
-
})), /* @__PURE__ */
|
|
81
|
+
})), /* @__PURE__ */ React2.createElement(List.ItemDeleteButton, {
|
|
404
82
|
onClick: () => handleDeleteRange(range)
|
|
405
83
|
})))));
|
|
406
84
|
};
|
|
407
85
|
|
|
408
|
-
// packages/plugins/plugin-sheet/src/components/SheetObjectSettings.tsx
|
|
409
|
-
import React4 from "react";
|
|
410
|
-
import { SPACE_PLUGIN } from "@dxos/plugin-space/meta";
|
|
411
|
-
import { Input, useTranslation as useTranslation2 } from "@dxos/react-ui";
|
|
412
|
-
var SheetObjectSettings = ({ sheet }) => {
|
|
413
|
-
const { t } = useTranslation2(SPACE_PLUGIN);
|
|
414
|
-
return /* @__PURE__ */ React4.createElement(React4.Fragment, null, /* @__PURE__ */ React4.createElement("div", {
|
|
415
|
-
role: "form",
|
|
416
|
-
className: "flex flex-col w-full p-2 gap-1"
|
|
417
|
-
}, /* @__PURE__ */ React4.createElement(Input.Root, null, /* @__PURE__ */ React4.createElement(Input.Label, null, t("name label")), /* @__PURE__ */ React4.createElement(Input.TextInput, {
|
|
418
|
-
placeholder: t("name placeholder"),
|
|
419
|
-
value: sheet.name ?? "",
|
|
420
|
-
onChange: (event) => {
|
|
421
|
-
sheet.name = event.target.value;
|
|
422
|
-
}
|
|
423
|
-
}))), /* @__PURE__ */ React4.createElement(RangeList, {
|
|
424
|
-
sheet
|
|
425
|
-
}));
|
|
426
|
-
};
|
|
427
|
-
|
|
428
86
|
// packages/plugins/plugin-sheet/src/components/index.ts
|
|
429
|
-
|
|
87
|
+
import { lazy } from "react";
|
|
88
|
+
|
|
89
|
+
// packages/plugins/plugin-sheet/src/components/GridSheet/GridSheet.tsx
|
|
90
|
+
import React4, { useCallback as useCallback4, useMemo as useMemo2, useRef, useState as useState3 } from "react";
|
|
91
|
+
import { createIntent as createIntent2, useIntentDispatcher as useIntentDispatcher2 } from "@dxos/app-framework";
|
|
92
|
+
import { rangeToA1Notation as rangeToA1Notation2 } from "@dxos/compute";
|
|
93
|
+
import { DropdownMenu, Icon, useTranslation as useTranslation2 } from "@dxos/react-ui";
|
|
94
|
+
import { useAttention } from "@dxos/react-ui-attention";
|
|
95
|
+
import { closestCell, defaultSizeRow, editorKeys, Grid as Grid2, GridCellEditor, parseCellIndex } from "@dxos/react-ui-grid";
|
|
96
|
+
|
|
97
|
+
// packages/plugins/plugin-sheet/src/components/GridSheet/util.ts
|
|
98
|
+
import { useEffect as useEffect2, useState } from "react";
|
|
99
|
+
import { inRange as inRange2 } from "@dxos/compute";
|
|
100
|
+
import { createDocAccessor, fullyQualifiedId as fullyQualifiedId2 } from "@dxos/react-client/echo";
|
|
101
|
+
import { parseValue, cellClassesForFieldType } from "@dxos/react-ui-form";
|
|
102
|
+
import { colToA1Notation, rowToA1Notation, commentedClassName } from "@dxos/react-ui-grid";
|
|
103
|
+
import { mx } from "@dxos/react-ui-theme";
|
|
430
104
|
|
|
431
105
|
// packages/plugins/plugin-sheet/src/integrations/thread-ranges.ts
|
|
106
|
+
import { useCallback as useCallback2, useEffect, useMemo } from "react";
|
|
107
|
+
import { createIntent, createResolver, LayoutAction, useIntentResolver, useIntentDispatcher } from "@dxos/app-framework";
|
|
108
|
+
import { debounce } from "@dxos/async";
|
|
109
|
+
import { inRange } from "@dxos/compute";
|
|
110
|
+
import { S as S2 } from "@dxos/echo-schema";
|
|
111
|
+
import { ThreadAction } from "@dxos/plugin-thread/types";
|
|
112
|
+
import { fullyQualifiedId } from "@dxos/react-client/echo";
|
|
432
113
|
var completeCellRangeToThreadCursor = (range) => {
|
|
433
114
|
return `${range.from.col},${range.from.row},${range.to.col},${range.to.row}`;
|
|
434
115
|
};
|
|
@@ -452,16 +133,23 @@ var parseThreadAnchorAsCellRange = (cursor) => {
|
|
|
452
133
|
};
|
|
453
134
|
var useUpdateFocusedCellOnThreadSelection = (grid) => {
|
|
454
135
|
const { model, setActiveRefs } = useSheetContext();
|
|
455
|
-
const scrollIntoViewResolver = useMemo(() => createResolver(
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
463
|
-
|
|
464
|
-
|
|
136
|
+
const scrollIntoViewResolver = useMemo(() => createResolver({
|
|
137
|
+
intent: LayoutAction.ScrollIntoView,
|
|
138
|
+
position: "hoist",
|
|
139
|
+
filter: (data) => {
|
|
140
|
+
if (!S2.is(LayoutAction.ScrollIntoView.fields.input)(data)) {
|
|
141
|
+
return false;
|
|
142
|
+
}
|
|
143
|
+
return data.subject === fullyQualifiedId(model.sheet) && !!data.options?.cursor;
|
|
144
|
+
},
|
|
145
|
+
resolve: ({ options: { cursor, ref } }) => {
|
|
146
|
+
setActiveRefs(ref);
|
|
147
|
+
const range = parseThreadAnchorAsCellRange(cursor);
|
|
148
|
+
range && grid?.setFocus({
|
|
149
|
+
...range.to,
|
|
150
|
+
plane: "grid"
|
|
151
|
+
}, true);
|
|
152
|
+
}
|
|
465
153
|
}), [
|
|
466
154
|
model.sheet,
|
|
467
155
|
setActiveRefs
|
|
@@ -475,7 +163,7 @@ var useSelectThreadOnCellFocus = () => {
|
|
|
475
163
|
// TODO(thure): Surely we can find a better dependency for this…
|
|
476
164
|
JSON.stringify(model.sheet.threads)
|
|
477
165
|
]);
|
|
478
|
-
const selectClosestThread =
|
|
166
|
+
const selectClosestThread = useCallback2((cellAddress) => {
|
|
479
167
|
if (!cellAddress || !threads) {
|
|
480
168
|
return;
|
|
481
169
|
}
|
|
@@ -489,7 +177,7 @@ var useSelectThreadOnCellFocus = () => {
|
|
|
489
177
|
});
|
|
490
178
|
if (closestThread) {
|
|
491
179
|
void dispatch(createIntent(ThreadAction.Select, {
|
|
492
|
-
current:
|
|
180
|
+
current: fullyQualifiedId(closestThread)
|
|
493
181
|
}));
|
|
494
182
|
}
|
|
495
183
|
}, [
|
|
@@ -497,7 +185,7 @@ var useSelectThreadOnCellFocus = () => {
|
|
|
497
185
|
threads
|
|
498
186
|
]);
|
|
499
187
|
const debounced = useMemo(() => {
|
|
500
|
-
return
|
|
188
|
+
return debounce((cellCoords) => requestAnimationFrame(() => selectClosestThread(cellCoords)), 50);
|
|
501
189
|
}, [
|
|
502
190
|
selectClosestThread
|
|
503
191
|
]);
|
|
@@ -549,7 +237,7 @@ var projectCellProps = (model, col, row) => {
|
|
|
549
237
|
const threadRefs = model.sheet.threads?.filter((thread) => {
|
|
550
238
|
const range = thread.target?.anchor && parseThreadAnchorAsCellRange(thread.target.anchor);
|
|
551
239
|
return thread && range ? inRange2(range, address) : false;
|
|
552
|
-
}).map((thread) =>
|
|
240
|
+
}).map((thread) => fullyQualifiedId2(thread)).join(" ");
|
|
553
241
|
const description = model.getValueDescription(address);
|
|
554
242
|
const type = description?.type;
|
|
555
243
|
const format = description?.format;
|
|
@@ -560,7 +248,7 @@ var projectCellProps = (model, col, row) => {
|
|
|
560
248
|
format,
|
|
561
249
|
value: rawValue
|
|
562
250
|
}),
|
|
563
|
-
className:
|
|
251
|
+
className: mx(cellClassesForFieldType({
|
|
564
252
|
type,
|
|
565
253
|
format
|
|
566
254
|
}), threadRefs && commentedClassName, classNames),
|
|
@@ -586,7 +274,7 @@ var gridCellGetter = (model) => {
|
|
|
586
274
|
};
|
|
587
275
|
var rowLabelCell = (row) => ({
|
|
588
276
|
value: rowToA1Notation(row),
|
|
589
|
-
className: "text-end
|
|
277
|
+
className: "text-end pie-1 text-subdued",
|
|
590
278
|
resizeHandle: "row"
|
|
591
279
|
});
|
|
592
280
|
var colLabelCell = (col) => ({
|
|
@@ -622,8 +310,8 @@ var cellGetter = (model) => {
|
|
|
622
310
|
};
|
|
623
311
|
};
|
|
624
312
|
var useSheetModelDxGridProps = (dxGrid, model) => {
|
|
625
|
-
const [columns, setColumns] =
|
|
626
|
-
const [rows, setRows] =
|
|
313
|
+
const [columns, setColumns] = useState(createDxGridColumns(model));
|
|
314
|
+
const [rows, setRows] = useState(createDxGridRows(model));
|
|
627
315
|
useEffect2(() => {
|
|
628
316
|
const cellsAccessor = createDocAccessor(model.sheet, [
|
|
629
317
|
"cells"
|
|
@@ -673,6 +361,82 @@ var useSheetModelDxGridProps = (dxGrid, model) => {
|
|
|
673
361
|
};
|
|
674
362
|
};
|
|
675
363
|
|
|
364
|
+
// packages/plugins/plugin-sheet/src/components/SheetContext/SheetContext.tsx
|
|
365
|
+
import React3, { createContext as createContext2, useCallback as useCallback3, useContext as useContext2, useState as useState2 } from "react";
|
|
366
|
+
import { invariant } from "@dxos/invariant";
|
|
367
|
+
import { fullyQualifiedId as fullyQualifiedId3 } from "@dxos/react-client/echo";
|
|
368
|
+
import { Grid, useGridContext } from "@dxos/react-ui-grid";
|
|
369
|
+
var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/plugin-sheet/src/components/SheetContext/SheetContext.tsx";
|
|
370
|
+
var SheetContext = /* @__PURE__ */ createContext2(void 0);
|
|
371
|
+
var useSheetContext = () => {
|
|
372
|
+
const context = useContext2(SheetContext);
|
|
373
|
+
invariant(context, void 0, {
|
|
374
|
+
F: __dxlog_file,
|
|
375
|
+
L: 54,
|
|
376
|
+
S: void 0,
|
|
377
|
+
A: [
|
|
378
|
+
"context",
|
|
379
|
+
""
|
|
380
|
+
]
|
|
381
|
+
});
|
|
382
|
+
return context;
|
|
383
|
+
};
|
|
384
|
+
var SheetProviderImpl = ({ model, onInfo, ignoreAttention, children, __gridScope }) => {
|
|
385
|
+
const { id, editing, setEditing } = useGridContext("SheetProvider", __gridScope);
|
|
386
|
+
const [cursor, setCursorInternal] = useState2();
|
|
387
|
+
const [range, setRangeInternal] = useState2();
|
|
388
|
+
const [cursorFallbackRange, setCursorFallbackRange] = useState2();
|
|
389
|
+
const [activeRefs, setActiveRefs] = useState2("");
|
|
390
|
+
const setCursor = useCallback3((nextCursor) => {
|
|
391
|
+
setCursorInternal(nextCursor);
|
|
392
|
+
setCursorFallbackRange(range?.to ? range : nextCursor ? {
|
|
393
|
+
from: nextCursor,
|
|
394
|
+
to: nextCursor
|
|
395
|
+
} : void 0);
|
|
396
|
+
}, [
|
|
397
|
+
range
|
|
398
|
+
]);
|
|
399
|
+
const setRange = useCallback3((nextRange) => {
|
|
400
|
+
setRangeInternal(nextRange);
|
|
401
|
+
setCursorFallbackRange(nextRange?.to ? nextRange : cursor ? {
|
|
402
|
+
from: cursor,
|
|
403
|
+
to: cursor
|
|
404
|
+
} : void 0);
|
|
405
|
+
}, [
|
|
406
|
+
cursor
|
|
407
|
+
]);
|
|
408
|
+
return /* @__PURE__ */ React3.createElement(SheetContext.Provider, {
|
|
409
|
+
value: {
|
|
410
|
+
id,
|
|
411
|
+
model,
|
|
412
|
+
editing,
|
|
413
|
+
setEditing,
|
|
414
|
+
cursor,
|
|
415
|
+
setCursor,
|
|
416
|
+
range,
|
|
417
|
+
setRange,
|
|
418
|
+
cursorFallbackRange,
|
|
419
|
+
activeRefs,
|
|
420
|
+
setActiveRefs,
|
|
421
|
+
// TODO(burdon): Change to event.
|
|
422
|
+
onInfo,
|
|
423
|
+
ignoreAttention
|
|
424
|
+
}
|
|
425
|
+
}, children);
|
|
426
|
+
};
|
|
427
|
+
var SheetProvider = ({ children, graph, sheet, readonly, ignoreAttention, onInfo }) => {
|
|
428
|
+
const model = useSheetModel(graph, sheet, {
|
|
429
|
+
readonly
|
|
430
|
+
});
|
|
431
|
+
return !model ? null : /* @__PURE__ */ React3.createElement(Grid.Root, {
|
|
432
|
+
id: fullyQualifiedId3(sheet)
|
|
433
|
+
}, /* @__PURE__ */ React3.createElement(SheetProviderImpl, {
|
|
434
|
+
model,
|
|
435
|
+
onInfo,
|
|
436
|
+
ignoreAttention
|
|
437
|
+
}, children));
|
|
438
|
+
};
|
|
439
|
+
|
|
676
440
|
// packages/plugins/plugin-sheet/src/components/GridSheet/GridSheet.tsx
|
|
677
441
|
var inertPosition = {
|
|
678
442
|
plane: "grid",
|
|
@@ -719,7 +483,7 @@ var sheetColDefault = {
|
|
|
719
483
|
}
|
|
720
484
|
};
|
|
721
485
|
var GridSheet = () => {
|
|
722
|
-
const { t } =
|
|
486
|
+
const { t } = useTranslation2(SHEET_PLUGIN);
|
|
723
487
|
const { id, model, editing, setCursor, setRange, cursor, cursorFallbackRange, activeRefs, ignoreAttention } = useSheetContext();
|
|
724
488
|
const [dxGrid, setDxGrid] = useState3(null);
|
|
725
489
|
const [extraplanarFocus, setExtraplanarFocus] = useState3(null);
|
|
@@ -971,14 +735,14 @@ var GridSheet = () => {
|
|
|
971
735
|
]);
|
|
972
736
|
useUpdateFocusedCellOnThreadSelection(dxGrid);
|
|
973
737
|
useSelectThreadOnCellFocus();
|
|
974
|
-
return /* @__PURE__ */
|
|
738
|
+
return /* @__PURE__ */ React4.createElement("div", {
|
|
975
739
|
role: "none",
|
|
976
740
|
className: "relative min-bs-0"
|
|
977
|
-
}, /* @__PURE__ */
|
|
741
|
+
}, /* @__PURE__ */ React4.createElement(GridCellEditor, {
|
|
978
742
|
getCellContent,
|
|
979
743
|
extension,
|
|
980
744
|
onBlur: handleBlur
|
|
981
|
-
}), /* @__PURE__ */
|
|
745
|
+
}), /* @__PURE__ */ React4.createElement(Grid2.Content, {
|
|
982
746
|
initialCells,
|
|
983
747
|
limitColumns: DEFAULT_COLS,
|
|
984
748
|
limitRows: DEFAULT_ROWS,
|
|
@@ -998,46 +762,48 @@ var GridSheet = () => {
|
|
|
998
762
|
className: "[--dx-grid-base:var(--surface-bg)] [&_.dx-grid]:border-bs [&_.dx-grid]:absolute [&_.dx-grid]:inset-0 [&_.dx-grid]:border-separator",
|
|
999
763
|
activeRefs,
|
|
1000
764
|
ref: setDxGrid
|
|
1001
|
-
}), /* @__PURE__ */
|
|
765
|
+
}), /* @__PURE__ */ React4.createElement(DropdownMenu.Root, {
|
|
1002
766
|
modal: false,
|
|
1003
767
|
open: !!contextMenuOpen,
|
|
1004
768
|
onOpenChange: (nextOpen) => setContextMenuOpen(nextOpen ? inertPosition : null)
|
|
1005
|
-
}, /* @__PURE__ */
|
|
769
|
+
}, /* @__PURE__ */ React4.createElement(DropdownMenu.VirtualTrigger, {
|
|
1006
770
|
virtualRef: contextMenuAnchorRef
|
|
1007
|
-
}), /* @__PURE__ */
|
|
771
|
+
}), /* @__PURE__ */ React4.createElement(DropdownMenu.Content, {
|
|
1008
772
|
side: contextMenuAxis === "col" ? "bottom" : "right",
|
|
1009
773
|
sideOffset: 4,
|
|
1010
774
|
collisionPadding: 8
|
|
1011
|
-
}, /* @__PURE__ */
|
|
775
|
+
}, /* @__PURE__ */ React4.createElement(DropdownMenu.Viewport, null, /* @__PURE__ */ React4.createElement(DropdownMenu.Item, {
|
|
1012
776
|
onClick: () => handleAxisMenuAction("insert-before"),
|
|
1013
777
|
"data-testid": `grid.${contextMenuAxis}.insert-before`
|
|
1014
|
-
}, /* @__PURE__ */
|
|
778
|
+
}, /* @__PURE__ */ React4.createElement(Icon, {
|
|
1015
779
|
size: 5,
|
|
1016
780
|
icon: contextMenuAxis === "col" ? "ph--columns-plus-left--regular" : "ph--rows-plus-top--regular"
|
|
1017
|
-
}), /* @__PURE__ */
|
|
781
|
+
}), /* @__PURE__ */ React4.createElement("span", null, t(`add ${contextMenuAxis} before label`))), /* @__PURE__ */ React4.createElement(DropdownMenu.Item, {
|
|
1018
782
|
onClick: () => handleAxisMenuAction("insert-after"),
|
|
1019
783
|
"data-testid": `grid.${contextMenuAxis}.insert-after`
|
|
1020
|
-
}, /* @__PURE__ */
|
|
784
|
+
}, /* @__PURE__ */ React4.createElement(Icon, {
|
|
1021
785
|
size: 5,
|
|
1022
786
|
icon: contextMenuAxis === "col" ? "ph--columns-plus-right--regular" : "ph--rows-plus-bottom--regular"
|
|
1023
|
-
}), /* @__PURE__ */
|
|
787
|
+
}), /* @__PURE__ */ React4.createElement("span", null, t(`add ${contextMenuAxis} after label`))), /* @__PURE__ */ React4.createElement(DropdownMenu.Item, {
|
|
1024
788
|
onClick: () => handleAxisMenuAction("drop"),
|
|
1025
789
|
"data-testid": `grid.${contextMenuAxis}.drop`
|
|
1026
|
-
}, /* @__PURE__ */
|
|
790
|
+
}, /* @__PURE__ */ React4.createElement(Icon, {
|
|
1027
791
|
size: 5,
|
|
1028
792
|
icon: "ph--backspace--regular"
|
|
1029
|
-
}), /* @__PURE__ */
|
|
793
|
+
}), /* @__PURE__ */ React4.createElement("span", null, t(`delete ${contextMenuAxis} label`)))), /* @__PURE__ */ React4.createElement(DropdownMenu.Arrow, null))));
|
|
1030
794
|
};
|
|
1031
795
|
|
|
796
|
+
// packages/plugins/plugin-sheet/src/components/index.ts
|
|
797
|
+
var SheetContainer = lazy(() => import("./SheetContainer-PGDJKGTZ.mjs"));
|
|
798
|
+
|
|
1032
799
|
export {
|
|
1033
800
|
ComputeGraphContextProvider,
|
|
1034
801
|
useComputeGraph,
|
|
1035
802
|
completeCellRangeToThreadCursor,
|
|
1036
|
-
computeGraphFacet,
|
|
1037
803
|
useSheetContext,
|
|
1038
804
|
SheetProvider,
|
|
1039
805
|
GridSheet,
|
|
1040
|
-
|
|
806
|
+
RangeList,
|
|
1041
807
|
SheetContainer
|
|
1042
808
|
};
|
|
1043
|
-
//# sourceMappingURL=chunk-
|
|
809
|
+
//# sourceMappingURL=chunk-ZM7XLUGL.mjs.map
|