@dxos/plugin-sheet 0.8.2-main.fbd8ed0 → 0.8.2-staging.42af850
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/browser/{SheetContainer-UV7RMPXS.mjs → SheetContainer-GXPG3ZDN.mjs} +141 -162
- package/dist/lib/browser/SheetContainer-GXPG3ZDN.mjs.map +7 -0
- package/dist/lib/browser/anchor-sort-CUTFYIT4.mjs +24 -0
- package/dist/lib/browser/anchor-sort-CUTFYIT4.mjs.map +7 -0
- package/dist/lib/browser/{chunk-N2FOQHUH.mjs → chunk-5FLX3UGU.mjs} +8 -17
- package/dist/lib/browser/chunk-5FLX3UGU.mjs.map +7 -0
- package/dist/lib/browser/chunk-AYMJXZFS.mjs +847 -0
- package/dist/lib/browser/chunk-AYMJXZFS.mjs.map +7 -0
- package/dist/lib/browser/{chunk-AT5ZK6JD.mjs → chunk-FJRLDX7Z.mjs} +1 -1
- package/dist/lib/browser/chunk-FJRLDX7Z.mjs.map +7 -0
- package/dist/lib/browser/{chunk-EMSCNWEK.mjs → chunk-IR42IS3F.mjs} +2 -2
- package/dist/lib/{node-esm/chunk-76T5X4VP.mjs.map → browser/chunk-IR42IS3F.mjs.map} +1 -1
- package/dist/lib/browser/{compute-graph-registry-MBJKPAHX.mjs → compute-graph-registry-IXGGJJBU.mjs} +2 -2
- package/dist/lib/browser/index.mjs +15 -14
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/{intent-resolver-DN7JXDAV.mjs → intent-resolver-UI4DHURQ.mjs} +2 -2
- package/dist/lib/browser/{markdown-57MKY5WB.mjs → markdown-T4TUP4BF.mjs} +3 -3
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{react-surface-NQU63B63.mjs → react-surface-KI6T5M2X.mjs} +5 -5
- package/dist/lib/browser/types/index.mjs +1 -1
- package/dist/lib/node/SheetContainer-UUDOHLZR.cjs +351 -0
- package/dist/lib/node/SheetContainer-UUDOHLZR.cjs.map +7 -0
- package/dist/lib/node/{thread-E7YPGR5T.cjs → anchor-sort-LTLYUTUP.cjs} +17 -10
- package/dist/lib/node/anchor-sort-LTLYUTUP.cjs.map +7 -0
- package/dist/lib/node/{chunk-HLSQVT3C.cjs → chunk-76NESQLB.cjs} +10 -19
- package/dist/lib/node/chunk-76NESQLB.cjs.map +7 -0
- package/dist/lib/node/chunk-BXBNSNDK.cjs +855 -0
- package/dist/lib/node/chunk-BXBNSNDK.cjs.map +7 -0
- package/dist/lib/node/{chunk-LEV7OSTK.cjs → chunk-FIM6EZ6M.cjs} +4 -4
- package/dist/lib/node/chunk-FIM6EZ6M.cjs.map +7 -0
- package/dist/lib/node/{chunk-O2FOEUYB.cjs → chunk-LJWWS53Z.cjs} +5 -5
- package/dist/lib/node/{chunk-O2FOEUYB.cjs.map → chunk-LJWWS53Z.cjs.map} +1 -1
- package/dist/lib/node/{compute-graph-registry-EBBDN6ZX.cjs → compute-graph-registry-ARLDHPFW.cjs} +6 -6
- package/dist/lib/node/index.cjs +21 -20
- package/dist/lib/node/index.cjs.map +3 -3
- package/dist/lib/node/{intent-resolver-OPF56TAL.cjs → intent-resolver-EVLGL7VZ.cjs} +9 -9
- package/dist/lib/node/{markdown-Q3RXYPHQ.cjs → markdown-DBPOAYI7.cjs} +8 -8
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/{react-surface-7SAA5DX3.cjs → react-surface-QHAPOAR2.cjs} +14 -14
- 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-44KHKMPI.mjs} +141 -162
- package/dist/lib/node-esm/SheetContainer-44KHKMPI.mjs.map +7 -0
- package/dist/lib/node-esm/anchor-sort-3E2VGLO6.mjs +25 -0
- package/dist/lib/node-esm/anchor-sort-3E2VGLO6.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-LYZV4Q4C.mjs → chunk-DIF3IOAB.mjs} +8 -17
- package/dist/lib/node-esm/chunk-DIF3IOAB.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-GCCM7R45.mjs +848 -0
- package/dist/lib/node-esm/chunk-GCCM7R45.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-76T5X4VP.mjs → chunk-IQ76YE6M.mjs} +2 -2
- package/dist/lib/{browser/chunk-EMSCNWEK.mjs.map → node-esm/chunk-IQ76YE6M.mjs.map} +1 -1
- package/dist/lib/node-esm/{chunk-HXBUY5ET.mjs → chunk-NMCVJWDT.mjs} +1 -1
- package/dist/lib/node-esm/chunk-NMCVJWDT.mjs.map +7 -0
- package/dist/lib/node-esm/{compute-graph-registry-TVG6RN2J.mjs → compute-graph-registry-7PDWXMHF.mjs} +2 -2
- package/dist/lib/node-esm/index.mjs +15 -14
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/{intent-resolver-7AN5CN4R.mjs → intent-resolver-TPOH5JM5.mjs} +2 -2
- package/dist/lib/node-esm/{markdown-ACHAWUOE.mjs → markdown-WWUJ3E5F.mjs} +3 -3
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/{react-surface-BPNN7RSE.mjs → react-surface-XT2J3S67.mjs} +5 -5
- package/dist/lib/node-esm/types/index.mjs +1 -1
- package/dist/types/src/SheetPlugin.d.ts.map +1 -1
- package/dist/types/src/capabilities/anchor-sort.d.ts +6 -0
- package/dist/types/src/capabilities/anchor-sort.d.ts.map +1 -0
- package/dist/types/src/capabilities/index.d.ts +4 -4
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/components/GridSheet/util.d.ts.map +1 -1
- package/dist/types/src/components/SheetContainer/SheetContainer.stories.d.ts.map +1 -1
- package/dist/types/src/components/SheetToolbar/SheetToolbar.d.ts +2 -2
- package/dist/types/src/components/SheetToolbar/SheetToolbar.d.ts.map +1 -1
- package/dist/types/src/components/SheetToolbar/useToolbarState.d.ts +2 -3
- package/dist/types/src/components/SheetToolbar/useToolbarState.d.ts.map +1 -1
- package/dist/types/src/integrations/thread-ranges.d.ts.map +1 -1
- package/dist/types/src/model/sheet-model.d.ts.map +1 -1
- package/dist/types/src/serializer.d.ts.map +1 -1
- package/dist/types/src/testing/playwright/sheet-manager.d.ts.map +1 -1
- package/dist/types/src/types/schema.d.ts +0 -207
- package/dist/types/src/types/schema.d.ts.map +1 -1
- package/dist/types/src/types/util.d.ts.map +1 -1
- package/package.json +49 -48
- package/src/SheetPlugin.tsx +7 -5
- package/src/capabilities/anchor-sort.ts +22 -0
- package/src/capabilities/index.ts +1 -1
- package/src/components/FunctionEditor/FunctionEditor.tsx +1 -1
- package/src/components/GridSheet/util.ts +10 -9
- package/src/components/SheetContainer/SheetContainer.stories.tsx +2 -1
- package/src/components/SheetContainer/SheetContainer.tsx +1 -1
- package/src/components/SheetToolbar/SheetToolbar.stories.tsx +1 -1
- package/src/components/SheetToolbar/SheetToolbar.tsx +44 -33
- package/src/components/SheetToolbar/useToolbarState.ts +1 -2
- package/src/extensions/compute.ts +1 -1
- package/src/integrations/thread-ranges.ts +12 -14
- package/src/model/sheet-model.ts +17 -17
- package/src/serializer.ts +1 -2
- package/src/testing/playwright/sheet-manager.ts +9 -9
- package/src/types/schema.ts +1 -5
- package/src/types/util.ts +0 -1
- package/dist/lib/browser/SheetContainer-UV7RMPXS.mjs.map +0 -7
- package/dist/lib/browser/chunk-AT5ZK6JD.mjs.map +0 -7
- package/dist/lib/browser/chunk-N2FOQHUH.mjs.map +0 -7
- package/dist/lib/browser/chunk-TN7LTDHU.mjs +0 -826
- package/dist/lib/browser/chunk-TN7LTDHU.mjs.map +0 -7
- package/dist/lib/browser/thread-WU64QL2A.mjs +0 -17
- package/dist/lib/browser/thread-WU64QL2A.mjs.map +0 -7
- package/dist/lib/node/SheetContainer-GR2KDOAE.cjs +0 -368
- package/dist/lib/node/SheetContainer-GR2KDOAE.cjs.map +0 -7
- package/dist/lib/node/chunk-CN7OBGYV.cjs +0 -833
- package/dist/lib/node/chunk-CN7OBGYV.cjs.map +0 -7
- package/dist/lib/node/chunk-HLSQVT3C.cjs.map +0 -7
- package/dist/lib/node/chunk-LEV7OSTK.cjs.map +0 -7
- package/dist/lib/node/thread-E7YPGR5T.cjs.map +0 -7
- package/dist/lib/node-esm/SheetContainer-XW7B2AJI.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-3JJ7ETTJ.mjs +0 -827
- package/dist/lib/node-esm/chunk-3JJ7ETTJ.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-HXBUY5ET.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-LYZV4Q4C.mjs.map +0 -7
- package/dist/lib/node-esm/thread-ULESW6IX.mjs +0 -18
- package/dist/lib/node-esm/thread-ULESW6IX.mjs.map +0 -7
- package/dist/types/src/capabilities/thread.d.ts +0 -6
- package/dist/types/src/capabilities/thread.d.ts.map +0 -1
- package/dist/types/src/components/SheetToolbar/comment.d.ts +0 -25
- package/dist/types/src/components/SheetToolbar/comment.d.ts.map +0 -1
- package/src/capabilities/thread.ts +0 -14
- package/src/components/SheetToolbar/comment.ts +0 -84
- /package/dist/lib/browser/{compute-graph-registry-MBJKPAHX.mjs.map → compute-graph-registry-IXGGJJBU.mjs.map} +0 -0
- /package/dist/lib/browser/{intent-resolver-DN7JXDAV.mjs.map → intent-resolver-UI4DHURQ.mjs.map} +0 -0
- /package/dist/lib/browser/{markdown-57MKY5WB.mjs.map → markdown-T4TUP4BF.mjs.map} +0 -0
- /package/dist/lib/browser/{react-surface-NQU63B63.mjs.map → react-surface-KI6T5M2X.mjs.map} +0 -0
- /package/dist/lib/node/{compute-graph-registry-EBBDN6ZX.cjs.map → compute-graph-registry-ARLDHPFW.cjs.map} +0 -0
- /package/dist/lib/node/{intent-resolver-OPF56TAL.cjs.map → intent-resolver-EVLGL7VZ.cjs.map} +0 -0
- /package/dist/lib/node/{markdown-Q3RXYPHQ.cjs.map → markdown-DBPOAYI7.cjs.map} +0 -0
- /package/dist/lib/node/{react-surface-7SAA5DX3.cjs.map → react-surface-QHAPOAR2.cjs.map} +0 -0
- /package/dist/lib/node-esm/{compute-graph-registry-TVG6RN2J.mjs.map → compute-graph-registry-7PDWXMHF.mjs.map} +0 -0
- /package/dist/lib/node-esm/{intent-resolver-7AN5CN4R.mjs.map → intent-resolver-TPOH5JM5.mjs.map} +0 -0
- /package/dist/lib/node-esm/{markdown-ACHAWUOE.mjs.map → markdown-WWUJ3E5F.mjs.map} +0 -0
- /package/dist/lib/node-esm/{react-surface-BPNN7RSE.mjs.map → react-surface-XT2J3S67.mjs.map} +0 -0
|
@@ -1,70 +1,77 @@
|
|
|
1
1
|
import {
|
|
2
2
|
GridSheet,
|
|
3
3
|
SheetProvider,
|
|
4
|
-
completeCellRangeToThreadCursor,
|
|
5
4
|
useComputeGraph,
|
|
6
5
|
useSheetContext
|
|
7
|
-
} from "./chunk-
|
|
8
|
-
import "./chunk-AT5ZK6JD.mjs";
|
|
6
|
+
} from "./chunk-AYMJXZFS.mjs";
|
|
9
7
|
import {
|
|
10
8
|
alignKey,
|
|
11
|
-
commentKey,
|
|
12
9
|
mapFormulaIndicesToRefs,
|
|
13
10
|
rangeFromIndex,
|
|
14
11
|
rangeToIndex
|
|
15
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-5FLX3UGU.mjs";
|
|
13
|
+
import "./chunk-FJRLDX7Z.mjs";
|
|
16
14
|
import {
|
|
17
15
|
SHEET_PLUGIN
|
|
18
16
|
} from "./chunk-D3G4UGEK.mjs";
|
|
19
17
|
|
|
20
18
|
// packages/plugins/plugin-sheet/src/components/SheetContainer/SheetContainer.tsx
|
|
19
|
+
import { useSignals as _useSignals4 } from "@preact-signals/safe-react/tracking";
|
|
21
20
|
import React3 from "react";
|
|
22
21
|
import { fullyQualifiedId } from "@dxos/react-client/echo";
|
|
23
22
|
import { StackItem } from "@dxos/react-ui-stack";
|
|
24
23
|
|
|
25
24
|
// packages/plugins/plugin-sheet/src/components/FunctionEditor/FunctionEditor.tsx
|
|
25
|
+
import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
|
|
26
26
|
import React from "react";
|
|
27
27
|
import { addressToA1Notation, isFormula, rangeToA1Notation } from "@dxos/compute";
|
|
28
28
|
import { Icon } from "@dxos/react-ui";
|
|
29
29
|
var FunctionEditor = () => {
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
if (
|
|
36
|
-
value = model.
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
30
|
+
var _effect = _useSignals();
|
|
31
|
+
try {
|
|
32
|
+
const { model, cursor, range } = useSheetContext();
|
|
33
|
+
let value;
|
|
34
|
+
let formula = false;
|
|
35
|
+
if (cursor) {
|
|
36
|
+
value = model.getCellValue(cursor);
|
|
37
|
+
if (isFormula(value)) {
|
|
38
|
+
value = model.graph.mapFunctionBindingFromId(mapFormulaIndicesToRefs(model.sheet, value));
|
|
39
|
+
formula = true;
|
|
40
|
+
} else if (value != null) {
|
|
41
|
+
value = String(value);
|
|
42
|
+
}
|
|
40
43
|
}
|
|
44
|
+
return /* @__PURE__ */ React.createElement("div", {
|
|
45
|
+
className: "flex shrink-0 justify-between items-center px-4 py-1 text-sm bg-toolbarSurface border-bs !border-subduedSeparator"
|
|
46
|
+
}, /* @__PURE__ */ React.createElement("div", {
|
|
47
|
+
className: "flex gap-4 items-center"
|
|
48
|
+
}, /* @__PURE__ */ React.createElement("div", {
|
|
49
|
+
className: "flex w-16 items-center font-mono"
|
|
50
|
+
}, range && rangeToA1Notation(range) || cursor && addressToA1Notation(cursor)), /* @__PURE__ */ React.createElement("div", {
|
|
51
|
+
className: "flex gap-2 items-center"
|
|
52
|
+
}, /* @__PURE__ */ React.createElement(Icon, {
|
|
53
|
+
icon: "ph--function--regular",
|
|
54
|
+
classNames: [
|
|
55
|
+
"text-greenText",
|
|
56
|
+
formula ? "visible" : "invisible"
|
|
57
|
+
]
|
|
58
|
+
}), /* @__PURE__ */ React.createElement("span", {
|
|
59
|
+
className: "font-mono"
|
|
60
|
+
}, value))));
|
|
61
|
+
} finally {
|
|
62
|
+
_effect.f();
|
|
41
63
|
}
|
|
42
|
-
return /* @__PURE__ */ React.createElement("div", {
|
|
43
|
-
className: "flex shrink-0 justify-between items-center px-4 py-1 text-sm bg-toolbarSurface border-bs !border-separator"
|
|
44
|
-
}, /* @__PURE__ */ React.createElement("div", {
|
|
45
|
-
className: "flex gap-4 items-center"
|
|
46
|
-
}, /* @__PURE__ */ React.createElement("div", {
|
|
47
|
-
className: "flex w-16 items-center font-mono"
|
|
48
|
-
}, range && rangeToA1Notation(range) || cursor && addressToA1Notation(cursor)), /* @__PURE__ */ React.createElement("div", {
|
|
49
|
-
className: "flex gap-2 items-center"
|
|
50
|
-
}, /* @__PURE__ */ React.createElement(Icon, {
|
|
51
|
-
icon: "ph--function--regular",
|
|
52
|
-
classNames: [
|
|
53
|
-
"text-greenText",
|
|
54
|
-
formula ? "visible" : "invisible"
|
|
55
|
-
]
|
|
56
|
-
}), /* @__PURE__ */ React.createElement("span", {
|
|
57
|
-
className: "font-mono"
|
|
58
|
-
}, value))));
|
|
59
64
|
};
|
|
60
65
|
|
|
61
66
|
// packages/plugins/plugin-sheet/src/components/SheetToolbar/SheetToolbar.tsx
|
|
62
|
-
import
|
|
63
|
-
import {
|
|
64
|
-
import {
|
|
65
|
-
import {
|
|
67
|
+
import { useSignals as _useSignals3 } from "@preact-signals/safe-react/tracking";
|
|
68
|
+
import { Rx } from "@effect-rx/rx-react";
|
|
69
|
+
import React2, { useMemo as useMemo2 } from "react";
|
|
70
|
+
import { useAppGraph } from "@dxos/app-framework";
|
|
71
|
+
import { createGapSeparator, MenuProvider, rxFromSignal, ToolbarMenu, useMenuActions } from "@dxos/react-ui-menu";
|
|
66
72
|
|
|
67
73
|
// packages/plugins/plugin-sheet/src/components/SheetToolbar/align.ts
|
|
74
|
+
import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
|
|
68
75
|
import { useEffect } from "react";
|
|
69
76
|
import { inRange } from "@dxos/compute";
|
|
70
77
|
import { createMenuAction, createMenuItemGroup } from "@dxos/react-ui-menu";
|
|
@@ -74,13 +81,18 @@ var aligns = {
|
|
|
74
81
|
end: "ph--text-align-right--regular"
|
|
75
82
|
};
|
|
76
83
|
var useAlignState = (state) => {
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
+
var _effect = _useSignals2();
|
|
85
|
+
try {
|
|
86
|
+
const { cursor, model } = useSheetContext();
|
|
87
|
+
useEffect(() => {
|
|
88
|
+
state[alignKey] = cursor ? model.sheet.ranges?.findLast(({ range, key }) => key === alignKey && inRange(rangeFromIndex(model.sheet, range), cursor))?.value : void 0;
|
|
89
|
+
}, [
|
|
90
|
+
cursor,
|
|
91
|
+
model.sheet
|
|
92
|
+
]);
|
|
93
|
+
} finally {
|
|
94
|
+
_effect.f();
|
|
95
|
+
}
|
|
84
96
|
};
|
|
85
97
|
var createAlignGroupAction = (value) => createMenuItemGroup("align", {
|
|
86
98
|
label: [
|
|
@@ -149,72 +161,17 @@ var createAlign = (model, state, cursorFallbackRange) => {
|
|
|
149
161
|
};
|
|
150
162
|
};
|
|
151
163
|
|
|
152
|
-
// packages/plugins/plugin-sheet/src/components/SheetToolbar/comment.ts
|
|
153
|
-
import { useEffect as useEffect2, useMemo } from "react";
|
|
154
|
-
import { RefArray } from "@dxos/live-object";
|
|
155
|
-
import { createMenuAction as createMenuAction2 } from "@dxos/react-ui-menu";
|
|
156
|
-
var useCommentState = (state) => {
|
|
157
|
-
const { cursorFallbackRange, model } = useSheetContext();
|
|
158
|
-
const overlapsCommentAnchor = useMemo(() => RefArray.targets(model.sheet.threads ?? []).filter((thread) => thread.status !== "resolved").some((thread) => {
|
|
159
|
-
if (!cursorFallbackRange) {
|
|
160
|
-
return false;
|
|
161
|
-
}
|
|
162
|
-
return rangeToIndex(model.sheet, cursorFallbackRange) === thread.anchor;
|
|
163
|
-
}), [
|
|
164
|
-
cursorFallbackRange,
|
|
165
|
-
model.sheet
|
|
166
|
-
]);
|
|
167
|
-
useEffect2(() => {
|
|
168
|
-
state.commentEnabled = !cursorFallbackRange ? "no cursor" : overlapsCommentAnchor ? "selection overlaps existing comment" : "comment";
|
|
169
|
-
}, [
|
|
170
|
-
overlapsCommentAnchor,
|
|
171
|
-
cursorFallbackRange
|
|
172
|
-
]);
|
|
173
|
-
};
|
|
174
|
-
var createCommentAction = (model, state, onComment, cursorFallbackRange) => createMenuAction2("comment", () => {
|
|
175
|
-
if (!cursorFallbackRange) {
|
|
176
|
-
return;
|
|
177
|
-
}
|
|
178
|
-
const cellContent = model.getCellText(cursorFallbackRange.from);
|
|
179
|
-
if (!cellContent) {
|
|
180
|
-
return;
|
|
181
|
-
}
|
|
182
|
-
onComment(cellContent, completeCellRangeToThreadCursor(cursorFallbackRange));
|
|
183
|
-
}, {
|
|
184
|
-
key: commentKey,
|
|
185
|
-
testId: "editor.toolbar.comment",
|
|
186
|
-
icon: "ph--chat-text--regular",
|
|
187
|
-
label: [
|
|
188
|
-
`${state.commentEnabled} label`,
|
|
189
|
-
{
|
|
190
|
-
ns: SHEET_PLUGIN
|
|
191
|
-
}
|
|
192
|
-
],
|
|
193
|
-
disabled: state.commentEnabled !== "comment"
|
|
194
|
-
});
|
|
195
|
-
var createComment = (model, state, onComment, cursorFallbackRange) => ({
|
|
196
|
-
nodes: [
|
|
197
|
-
createCommentAction(model, state, onComment, cursorFallbackRange)
|
|
198
|
-
],
|
|
199
|
-
edges: [
|
|
200
|
-
{
|
|
201
|
-
source: "root",
|
|
202
|
-
target: "comment"
|
|
203
|
-
}
|
|
204
|
-
]
|
|
205
|
-
});
|
|
206
|
-
|
|
207
164
|
// packages/plugins/plugin-sheet/src/components/SheetToolbar/style.ts
|
|
208
|
-
import { useEffect as
|
|
165
|
+
import { useEffect as useEffect2 } from "react";
|
|
209
166
|
import { inRange as inRange2 } from "@dxos/compute";
|
|
210
|
-
import { createMenuAction as
|
|
167
|
+
import { createMenuAction as createMenuAction2, createMenuItemGroup as createMenuItemGroup2 } from "@dxos/react-ui-menu";
|
|
211
168
|
var styles = {
|
|
212
169
|
highlight: "ph--highlighter--regular",
|
|
213
170
|
softwrap: "ph--paragraph--regular"
|
|
214
171
|
};
|
|
215
172
|
var useStyleState = (state) => {
|
|
216
173
|
const { cursorFallbackRange, model } = useSheetContext();
|
|
217
|
-
|
|
174
|
+
useEffect2(() => {
|
|
218
175
|
state.highlight = false;
|
|
219
176
|
state.softwrap = false;
|
|
220
177
|
if (cursorFallbackRange && model.sheet.ranges) {
|
|
@@ -235,7 +192,7 @@ var createStyleGroup = (state) => {
|
|
|
235
192
|
});
|
|
236
193
|
};
|
|
237
194
|
var createStyleActions = (model, state, cursorFallbackRange) => Object.entries(styles).map(([styleValue, icon]) => {
|
|
238
|
-
return
|
|
195
|
+
return createMenuAction2(`style--${styleValue}`, () => {
|
|
239
196
|
if (!cursorFallbackRange) {
|
|
240
197
|
return;
|
|
241
198
|
}
|
|
@@ -289,79 +246,101 @@ var createStyle = (model, state, cursorFallbackRange) => {
|
|
|
289
246
|
};
|
|
290
247
|
|
|
291
248
|
// packages/plugins/plugin-sheet/src/components/SheetToolbar/useToolbarState.ts
|
|
292
|
-
import { useMemo
|
|
249
|
+
import { useMemo } from "react";
|
|
293
250
|
import { live } from "@dxos/live-object";
|
|
294
251
|
var useToolbarState = (initialState = {}) => {
|
|
295
|
-
return
|
|
252
|
+
return useMemo(() => live(initialState), []);
|
|
296
253
|
};
|
|
297
254
|
|
|
298
255
|
// packages/plugins/plugin-sheet/src/components/SheetToolbar/SheetToolbar.tsx
|
|
299
|
-
var createToolbarActions = (model, state,
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
nodes: [
|
|
256
|
+
var createToolbarActions = (model, state, cursorFallbackRange, customActions) => {
|
|
257
|
+
return Rx.make((get) => {
|
|
258
|
+
const align = get(rxFromSignal(() => createAlign(model, state, cursorFallbackRange)));
|
|
259
|
+
const style = get(rxFromSignal(() => createStyle(model, state, cursorFallbackRange)));
|
|
260
|
+
const gap = createGapSeparator();
|
|
261
|
+
const nodes = [
|
|
306
262
|
...align.nodes,
|
|
307
263
|
...style.nodes,
|
|
308
|
-
...gap.nodes
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
edges: [
|
|
264
|
+
...gap.nodes
|
|
265
|
+
];
|
|
266
|
+
const edges = [
|
|
312
267
|
...align.edges,
|
|
313
268
|
...style.edges,
|
|
314
|
-
...gap.edges
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
269
|
+
...gap.edges
|
|
270
|
+
];
|
|
271
|
+
if (customActions) {
|
|
272
|
+
const custom = get(customActions);
|
|
273
|
+
nodes.push(...custom.nodes);
|
|
274
|
+
edges.push(...custom.edges);
|
|
275
|
+
}
|
|
276
|
+
return {
|
|
277
|
+
nodes,
|
|
278
|
+
edges
|
|
279
|
+
};
|
|
280
|
+
});
|
|
318
281
|
};
|
|
319
|
-
var SheetToolbar = ({
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
282
|
+
var SheetToolbar = ({ id, classNames }) => {
|
|
283
|
+
var _effect = _useSignals3();
|
|
284
|
+
try {
|
|
285
|
+
const { model, cursorFallbackRange } = useSheetContext();
|
|
286
|
+
const state = useToolbarState({});
|
|
287
|
+
useAlignState(state);
|
|
288
|
+
useStyleState(state);
|
|
289
|
+
const { graph } = useAppGraph();
|
|
290
|
+
const customActions = useMemo2(() => {
|
|
291
|
+
return Rx.make((get) => {
|
|
292
|
+
const actions = get(graph.actions(id));
|
|
293
|
+
const nodes = actions.filter((action) => action.properties.disposition === "toolbar");
|
|
294
|
+
return {
|
|
295
|
+
nodes,
|
|
296
|
+
edges: nodes.map((node) => ({
|
|
297
|
+
source: "root",
|
|
298
|
+
target: node.id
|
|
299
|
+
}))
|
|
300
|
+
};
|
|
301
|
+
});
|
|
302
|
+
}, [
|
|
303
|
+
graph
|
|
304
|
+
]);
|
|
305
|
+
const actionsCreator = useMemo2(() => createToolbarActions(model, state, cursorFallbackRange, customActions), [
|
|
306
|
+
model,
|
|
307
|
+
state,
|
|
308
|
+
cursorFallbackRange,
|
|
309
|
+
customActions
|
|
310
|
+
]);
|
|
311
|
+
const menu = useMenuActions(actionsCreator);
|
|
312
|
+
return /* @__PURE__ */ React2.createElement(MenuProvider, {
|
|
313
|
+
...menu,
|
|
314
|
+
attendableId: id
|
|
315
|
+
}, /* @__PURE__ */ React2.createElement(ToolbarMenu, {
|
|
316
|
+
classNames
|
|
317
|
+
}));
|
|
318
|
+
} finally {
|
|
319
|
+
_effect.f();
|
|
320
|
+
}
|
|
347
321
|
};
|
|
348
322
|
|
|
349
323
|
// packages/plugins/plugin-sheet/src/components/SheetContainer/SheetContainer.tsx
|
|
350
324
|
var SheetContainer = ({ space, sheet, role, ignoreAttention }) => {
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
graph,
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
325
|
+
var _effect = _useSignals4();
|
|
326
|
+
try {
|
|
327
|
+
const graph = useComputeGraph(space);
|
|
328
|
+
return graph ? /* @__PURE__ */ React3.createElement(SheetProvider, {
|
|
329
|
+
sheet,
|
|
330
|
+
graph,
|
|
331
|
+
ignoreAttention
|
|
332
|
+
}, /* @__PURE__ */ React3.createElement(StackItem.Content, {
|
|
333
|
+
toolbar: true,
|
|
334
|
+
statusbar: true,
|
|
335
|
+
...role === "section" && {
|
|
336
|
+
classNames: "aspect-video"
|
|
337
|
+
}
|
|
338
|
+
}, /* @__PURE__ */ React3.createElement(SheetToolbar, {
|
|
339
|
+
id: fullyQualifiedId(sheet)
|
|
340
|
+
}), /* @__PURE__ */ React3.createElement(GridSheet, null), /* @__PURE__ */ React3.createElement(FunctionEditor, null))) : null;
|
|
341
|
+
} finally {
|
|
342
|
+
_effect.f();
|
|
343
|
+
}
|
|
365
344
|
};
|
|
366
345
|
|
|
367
346
|
// packages/plugins/plugin-sheet/src/components/SheetContainer/index.ts
|
|
@@ -369,4 +348,4 @@ var SheetContainer_default = SheetContainer;
|
|
|
369
348
|
export {
|
|
370
349
|
SheetContainer_default as default
|
|
371
350
|
};
|
|
372
|
-
//# sourceMappingURL=SheetContainer-
|
|
351
|
+
//# sourceMappingURL=SheetContainer-GXPG3ZDN.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/components/SheetContainer/SheetContainer.tsx", "../../../src/components/FunctionEditor/FunctionEditor.tsx", "../../../src/components/SheetToolbar/SheetToolbar.tsx", "../../../src/components/SheetToolbar/align.ts", "../../../src/components/SheetToolbar/style.ts", "../../../src/components/SheetToolbar/useToolbarState.ts", "../../../src/components/SheetContainer/index.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { fullyQualifiedId, type Space } from '@dxos/react-client/echo';\nimport { StackItem } from '@dxos/react-ui-stack';\n\nimport { type SheetType } from '../../types';\nimport { useComputeGraph } from '../ComputeGraph';\nimport { FunctionEditor } from '../FunctionEditor';\nimport { GridSheet } from '../GridSheet';\nimport { SheetProvider } from '../SheetContext';\nimport { SheetToolbar } from '../SheetToolbar';\n\nexport type SheetContainerProps = {\n space: Space;\n sheet: SheetType;\n role?: string;\n ignoreAttention?: boolean;\n};\n\nexport const SheetContainer = ({ space, sheet, role, ignoreAttention }: SheetContainerProps) => {\n const graph = useComputeGraph(space);\n\n return graph ? (\n <SheetProvider sheet={sheet} graph={graph} ignoreAttention={ignoreAttention}>\n <StackItem.Content toolbar statusbar {...(role === 'section' && { classNames: 'aspect-video' })}>\n <SheetToolbar id={fullyQualifiedId(sheet)} />\n <GridSheet />\n <FunctionEditor />\n </StackItem.Content>\n </SheetProvider>\n ) : null;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React from 'react';\n\nimport { addressToA1Notation, isFormula, rangeToA1Notation } from '@dxos/compute';\nimport { Icon } from '@dxos/react-ui';\n\nimport { mapFormulaIndicesToRefs } from '../../types';\nimport { useSheetContext } from '../SheetContext';\n\nexport const FunctionEditor = () => {\n const { model, cursor, range } = useSheetContext();\n\n let value;\n let formula = false;\n if (cursor) {\n value = model.getCellValue(cursor);\n if (isFormula(value)) {\n value = model.graph.mapFunctionBindingFromId(mapFormulaIndicesToRefs(model.sheet, value));\n formula = true;\n } else if (value != null) {\n value = String(value);\n }\n }\n\n return (\n <div className='flex shrink-0 justify-between items-center px-4 py-1 text-sm bg-toolbarSurface border-bs !border-subduedSeparator'>\n <div className='flex gap-4 items-center'>\n <div className='flex w-16 items-center font-mono'>\n {(range && rangeToA1Notation(range)) || (cursor && addressToA1Notation(cursor))}\n </div>\n <div className='flex gap-2 items-center'>\n <Icon icon='ph--function--regular' classNames={['text-greenText', formula ? 'visible' : 'invisible']} />\n <span className='font-mono'>{value}</span>\n </div>\n </div>\n </div>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { Rx } from '@effect-rx/rx-react';\nimport React, { type PropsWithChildren, useMemo } from 'react';\n\nimport { useAppGraph } from '@dxos/app-framework';\nimport { type CompleteCellRange } from '@dxos/compute';\nimport { type ThemedClassName } from '@dxos/react-ui';\nimport {\n type ActionGraphEdges,\n type ActionGraphNodes,\n type ActionGraphProps,\n createGapSeparator,\n MenuProvider,\n rxFromSignal,\n ToolbarMenu,\n useMenuActions,\n} from '@dxos/react-ui-menu';\n\nimport { createAlign, useAlignState } from './align';\nimport { createStyle, useStyleState } from './style';\nimport { type ToolbarState, useToolbarState } from './useToolbarState';\nimport { type SheetModel } from '../../model';\nimport { useSheetContext } from '../SheetContext';\n\n//\n// Root\n//\n\nexport type SheetToolbarProps = ThemedClassName<PropsWithChildren<{ id: string }>>;\n\nconst createToolbarActions = (\n model: SheetModel,\n state: ToolbarState,\n cursorFallbackRange?: CompleteCellRange,\n customActions?: Rx.Rx<ActionGraphProps>,\n) => {\n return Rx.make((get) => {\n const align = get(rxFromSignal(() => createAlign(model, state, cursorFallbackRange)));\n const style = get(rxFromSignal(() => createStyle(model, state, cursorFallbackRange)));\n const gap = createGapSeparator();\n const nodes: ActionGraphNodes = [...align.nodes, ...style.nodes, ...gap.nodes];\n const edges: ActionGraphEdges = [...align.edges, ...style.edges, ...gap.edges];\n if (customActions) {\n const custom = get(customActions);\n nodes.push(...custom.nodes);\n edges.push(...custom.edges);\n }\n return {\n nodes,\n edges,\n };\n });\n};\n\nexport const SheetToolbar = ({ id, classNames }: SheetToolbarProps) => {\n const { model, cursorFallbackRange } = useSheetContext();\n const state = useToolbarState({});\n useAlignState(state);\n useStyleState(state);\n\n const { graph } = useAppGraph();\n const customActions = useMemo(() => {\n return Rx.make((get) => {\n const actions = get(graph.actions(id));\n const nodes = actions.filter((action) => action.properties.disposition === 'toolbar');\n return { nodes, edges: nodes.map((node) => ({ source: 'root', target: node.id })) };\n });\n }, [graph]);\n\n const actionsCreator = useMemo(\n () => createToolbarActions(model, state, cursorFallbackRange, customActions),\n [model, state, cursorFallbackRange, customActions],\n );\n const menu = useMenuActions(actionsCreator);\n\n return (\n <MenuProvider {...menu} attendableId={id}>\n <ToolbarMenu classNames={classNames} />\n </MenuProvider>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useEffect } from 'react';\n\nimport { type CompleteCellRange, inRange } from '@dxos/compute';\nimport { createMenuAction, createMenuItemGroup, type ToolbarMenuActionGroupProperties } from '@dxos/react-ui-menu';\n\nimport { type ToolbarState } from './useToolbarState';\nimport { SHEET_PLUGIN } from '../../meta';\nimport { type SheetModel } from '../../model';\nimport { type AlignKey, alignKey, type AlignValue, rangeFromIndex, rangeToIndex } from '../../types';\nimport { useSheetContext } from '../SheetContext';\n\nexport type AlignAction = { key: AlignKey; value: AlignValue };\n\nexport type AlignState = { [alignKey]: AlignValue | undefined };\n\nconst aligns: Record<AlignValue, string> = {\n start: 'ph--text-align-left--regular',\n center: 'ph--text-align-center--regular',\n end: 'ph--text-align-right--regular',\n};\n\nexport const useAlignState = (state: Partial<AlignState>) => {\n const { cursor, model } = useSheetContext();\n useEffect(() => {\n // TODO(thure): Can this O(n) call be memoized?\n state[alignKey] = (\n cursor\n ? model.sheet.ranges?.findLast(\n ({ range, key }) => key === alignKey && inRange(rangeFromIndex(model.sheet, range), cursor),\n )?.value\n : undefined\n ) as AlignValue | undefined;\n }, [cursor, model.sheet]);\n};\n\nconst createAlignGroupAction = (value?: AlignValue) =>\n createMenuItemGroup('align', {\n label: ['align label', { ns: SHEET_PLUGIN }],\n variant: 'toggleGroup',\n selectCardinality: 'single',\n value: `${alignKey}--${value}`,\n } as ToolbarMenuActionGroupProperties);\n\nconst createAlignActions = (model: SheetModel, state: ToolbarState, cursorFallbackRange?: CompleteCellRange) =>\n Object.entries(aligns).map(([alignValue, icon]) => {\n return createMenuAction<AlignAction>(\n `${alignKey}--${alignValue}`,\n () => {\n if (!cursorFallbackRange) {\n return;\n }\n const index =\n model.sheet.ranges?.findIndex(\n (range) =>\n range.key === alignKey && inRange(rangeFromIndex(model.sheet, range.range), cursorFallbackRange.from),\n ) ?? -1;\n const nextRangeEntity = {\n range: rangeToIndex(model.sheet, cursorFallbackRange),\n key: alignKey,\n value: alignValue as AlignValue,\n };\n if (index < 0) {\n model.sheet.ranges?.push(nextRangeEntity);\n state[alignKey] = nextRangeEntity.value;\n } else if (model.sheet.ranges![index].value === nextRangeEntity.value) {\n model.sheet.ranges?.splice(index, 1);\n state[alignKey] = undefined;\n } else {\n model.sheet.ranges?.splice(index, 1, nextRangeEntity);\n state[alignKey] = nextRangeEntity.value;\n }\n },\n {\n key: alignKey,\n value: alignValue as AlignValue,\n checked: state[alignKey] === alignValue,\n label: [`range value ${alignValue} label`, { ns: SHEET_PLUGIN }],\n icon,\n testId: `grid.toolbar.${alignKey}.${alignValue}`,\n },\n );\n });\n\nexport const createAlign = (model: SheetModel, state: ToolbarState, cursorFallbackRange?: CompleteCellRange) => {\n const alignGroup = createAlignGroupAction(state[alignKey]);\n const alignActions = createAlignActions(model, state, cursorFallbackRange);\n return {\n nodes: [alignGroup, ...alignActions],\n edges: [\n { source: 'root', target: 'align' },\n ...alignActions.map(({ id }) => ({ source: alignGroup.id, target: id })),\n ],\n };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useEffect } from 'react';\n\nimport { type CompleteCellRange, inRange } from '@dxos/compute';\nimport { createMenuAction, createMenuItemGroup, type ToolbarMenuActionGroupProperties } from '@dxos/react-ui-menu';\n\nimport { SHEET_PLUGIN } from '../../meta';\nimport { type SheetModel } from '../../model';\nimport { rangeFromIndex, rangeToIndex, type StyleKey, type StyleValue } from '../../types';\nimport { useSheetContext } from '../SheetContext';\n\nexport type StyleState = Partial<Record<StyleValue, boolean>>;\n\nexport type StyleAction = { key: StyleKey; value: StyleValue };\n\nconst styles: Record<StyleValue, string> = {\n highlight: 'ph--highlighter--regular',\n softwrap: 'ph--paragraph--regular',\n};\n\nexport const useStyleState = (state: StyleState) => {\n const { cursorFallbackRange, model } = useSheetContext();\n\n useEffect(() => {\n state.highlight = false;\n state.softwrap = false;\n if (cursorFallbackRange && model.sheet.ranges) {\n model.sheet.ranges\n .filter(\n ({ range, key }) => key === 'style' && inRange(rangeFromIndex(model.sheet, range), cursorFallbackRange.from),\n )\n .forEach(({ value }) => {\n state[value as StyleValue] = true;\n });\n }\n }, [cursorFallbackRange, model.sheet]);\n};\n\nconst createStyleGroup = (state: StyleState) => {\n return createMenuItemGroup('style', {\n variant: 'toggleGroup',\n selectCardinality: 'multiple',\n value: Object.keys(styles)\n .filter((key) => !!state[key as StyleValue])\n .map((styleValue) => `style--${styleValue}`),\n } as ToolbarMenuActionGroupProperties);\n};\n\nconst createStyleActions = (model: SheetModel, state: StyleState, cursorFallbackRange?: CompleteCellRange) =>\n Object.entries(styles).map(([styleValue, icon]) => {\n return createMenuAction<StyleAction>(\n `style--${styleValue}`,\n () => {\n if (!cursorFallbackRange) {\n return;\n }\n const index =\n model.sheet.ranges?.findIndex(\n (range) =>\n range.key === 'style' && inRange(rangeFromIndex(model.sheet, range.range), cursorFallbackRange.from),\n ) ?? -1;\n const nextRangeEntity = {\n range: rangeToIndex(model.sheet, cursorFallbackRange),\n key: 'style',\n value: styleValue as StyleValue,\n };\n if (\n model.sheet.ranges\n .filter(\n ({ range, key: rangeKey }) =>\n rangeKey === 'style' && inRange(rangeFromIndex(model.sheet, range), cursorFallbackRange.from),\n )\n .some(({ value: rangeValue }) => rangeValue === styleValue)\n ) {\n // this value should be unset\n if (index >= 0) {\n model.sheet.ranges?.splice(index, 1);\n }\n state[nextRangeEntity.value] = false;\n } else {\n model.sheet.ranges?.push(nextRangeEntity);\n state[nextRangeEntity.value] = true;\n }\n },\n {\n key: 'style',\n value: styleValue as StyleValue,\n icon,\n label: [`range value ${styleValue} label`, { ns: SHEET_PLUGIN }],\n checked: !!state[styleValue as StyleValue],\n },\n );\n });\n\nexport const createStyle = (model: SheetModel, state: StyleState, cursorFallbackRange?: CompleteCellRange) => {\n const styleGroupAction = createStyleGroup(state);\n const styleActions = createStyleActions(model, state, cursorFallbackRange);\n return {\n nodes: [styleGroupAction, ...styleActions],\n edges: [\n { source: 'root', target: 'style' },\n ...styleActions.map(({ id }) => ({ source: styleGroupAction.id, target: id })),\n ],\n };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useMemo } from 'react';\n\nimport { live } from '@dxos/live-object';\n\nimport { type AlignState } from './align';\nimport { type StyleState } from './style';\n\nexport type ToolbarState = Partial<StyleState & AlignState>;\n\nexport const useToolbarState = (initialState: ToolbarState = {}) => {\n return useMemo(() => live<ToolbarState>(initialState), []);\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { SheetContainer } from './SheetContainer';\n\nexport default SheetContainer;\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["React", "fullyQualifiedId", "StackItem", "React", "addressToA1Notation", "isFormula", "rangeToA1Notation", "Icon", "FunctionEditor", "model", "cursor", "range", "useSheetContext", "value", "formula", "getCellValue", "isFormula", "graph", "mapFunctionBindingFromId", "mapFormulaIndicesToRefs", "sheet", "String", "div", "className", "rangeToA1Notation", "addressToA1Notation", "Icon", "icon", "classNames", "span", "Rx", "React", "useMemo", "useAppGraph", "createGapSeparator", "MenuProvider", "rxFromSignal", "ToolbarMenu", "useMenuActions", "useEffect", "inRange", "createMenuAction", "createMenuItemGroup", "aligns", "start", "center", "end", "useAlignState", "state", "cursor", "model", "useSheetContext", "useEffect", "alignKey", "sheet", "ranges", "findLast", "range", "key", "inRange", "rangeFromIndex", "value", "undefined", "createAlignGroupAction", "createMenuItemGroup", "label", "ns", "SHEET_PLUGIN", "variant", "selectCardinality", "createAlignActions", "cursorFallbackRange", "Object", "entries", "map", "alignValue", "icon", "createMenuAction", "index", "findIndex", "from", "nextRangeEntity", "rangeToIndex", "push", "splice", "checked", "testId", "createAlign", "alignGroup", "alignActions", "nodes", "edges", "source", "target", "id", "useEffect", "inRange", "createMenuAction", "createMenuItemGroup", "styles", "highlight", "softwrap", "useStyleState", "state", "cursorFallbackRange", "model", "useSheetContext", "useEffect", "sheet", "ranges", "filter", "range", "key", "inRange", "rangeFromIndex", "from", "forEach", "value", "createStyleGroup", "createMenuItemGroup", "variant", "selectCardinality", "Object", "keys", "map", "styleValue", "createStyleActions", "entries", "icon", "createMenuAction", "index", "findIndex", "nextRangeEntity", "rangeToIndex", "rangeKey", "some", "rangeValue", "splice", "push", "label", "ns", "SHEET_PLUGIN", "checked", "createStyle", "styleGroupAction", "styleActions", "nodes", "edges", "source", "target", "id", "useMemo", "live", "useToolbarState", "initialState", "useMemo", "live", "createToolbarActions", "model", "state", "cursorFallbackRange", "customActions", "Rx", "make", "get", "align", "rxFromSignal", "createAlign", "style", "createStyle", "gap", "createGapSeparator", "nodes", "edges", "custom", "push", "SheetToolbar", "id", "classNames", "useSheetContext", "useToolbarState", "useAlignState", "useStyleState", "graph", "useAppGraph", "useMemo", "actions", "filter", "action", "properties", "disposition", "map", "node", "source", "target", "actionsCreator", "menu", "useMenuActions", "React", "MenuProvider", "attendableId", "ToolbarMenu", "SheetContainer", "space", "sheet", "role", "ignoreAttention", "graph", "useComputeGraph", "React", "SheetProvider", "StackItem", "Content", "toolbar", "statusbar", "classNames", "SheetToolbar", "id", "fullyQualifiedId", "GridSheet", "FunctionEditor", "SheetContainer"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import {
|
|
2
|
+
SheetType,
|
|
3
|
+
compareIndexPositions
|
|
4
|
+
} from "./chunk-5FLX3UGU.mjs";
|
|
5
|
+
import "./chunk-D3G4UGEK.mjs";
|
|
6
|
+
|
|
7
|
+
// packages/plugins/plugin-sheet/src/capabilities/anchor-sort.ts
|
|
8
|
+
import { Capabilities, contributes } from "@dxos/app-framework";
|
|
9
|
+
import { getSchemaTypename } from "@dxos/echo-schema";
|
|
10
|
+
import { getTarget } from "@dxos/react-client/echo";
|
|
11
|
+
var anchor_sort_default = () => contributes(Capabilities.AnchorSort, {
|
|
12
|
+
key: getSchemaTypename(SheetType),
|
|
13
|
+
sort: (anchorA, anchorB) => {
|
|
14
|
+
const sheet = getTarget(anchorA);
|
|
15
|
+
if (sheet !== getTarget(anchorB)) {
|
|
16
|
+
return 0;
|
|
17
|
+
}
|
|
18
|
+
return !anchorA.anchor || !anchorB.anchor ? 0 : compareIndexPositions(sheet, anchorA.anchor, anchorB.anchor);
|
|
19
|
+
}
|
|
20
|
+
});
|
|
21
|
+
export {
|
|
22
|
+
anchor_sort_default as default
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=anchor-sort-CUTFYIT4.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/capabilities/anchor-sort.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities, contributes } from '@dxos/app-framework';\nimport { getSchemaTypename } from '@dxos/echo-schema';\nimport { getTarget } from '@dxos/react-client/echo';\n\nimport { compareIndexPositions, SheetType } from '../types';\n\nexport default () =>\n contributes(Capabilities.AnchorSort, {\n key: getSchemaTypename(SheetType)!,\n sort: (anchorA, anchorB) => {\n const sheet = getTarget(anchorA) as SheetType;\n if (sheet !== getTarget(anchorB)) {\n return 0;\n }\n\n return !anchorA.anchor || !anchorB.anchor ? 0 : compareIndexPositions(sheet, anchorA.anchor, anchorB.anchor);\n },\n });\n"],
|
|
5
|
+
"mappings": ";;;;;;;AAIA,SAASA,cAAcC,mBAAmB;AAC1C,SAASC,yBAAyB;AAClC,SAASC,iBAAiB;AAI1B,IAAA,sBAAe,MACbC,YAAYC,aAAaC,YAAY;EACnCC,KAAKC,kBAAkBC,SAAAA;EACvBC,MAAM,CAACC,SAASC,YAAAA;AACd,UAAMC,QAAQC,UAAUH,OAAAA;AACxB,QAAIE,UAAUC,UAAUF,OAAAA,GAAU;AAChC,aAAO;IACT;AAEA,WAAO,CAACD,QAAQI,UAAU,CAACH,QAAQG,SAAS,IAAIC,sBAAsBH,OAAOF,QAAQI,QAAQH,QAAQG,MAAM;EAC7G;AACF,CAAA;",
|
|
6
|
+
"names": ["Capabilities", "contributes", "getSchemaTypename", "getTarget", "contributes", "Capabilities", "AnchorSort", "key", "getSchemaTypename", "SheetType", "sort", "anchorA", "anchorB", "sheet", "getTarget", "anchor", "compareIndexPositions"]
|
|
7
|
+
}
|
|
@@ -4,8 +4,7 @@ import {
|
|
|
4
4
|
|
|
5
5
|
// packages/plugins/plugin-sheet/src/types/schema.ts
|
|
6
6
|
import { Schema } from "effect";
|
|
7
|
-
import {
|
|
8
|
-
import { ThreadType } from "@dxos/plugin-space/types";
|
|
7
|
+
import { TypedObject } from "@dxos/echo-schema";
|
|
9
8
|
var CellValue = Schema.Struct({
|
|
10
9
|
// TODO(burdon): How to store dates (datetime, date, time), percentages, etc.
|
|
11
10
|
// Consider import/export; natural access for other plugins. Special handling for currency (precision).
|
|
@@ -45,9 +44,7 @@ var SheetType = class extends TypedObject({
|
|
|
45
44
|
value: Schema.mutable(RowColumnMeta)
|
|
46
45
|
})),
|
|
47
46
|
// Cell formatting referenced by indexed range.
|
|
48
|
-
ranges: Schema.mutable(Schema.Array(Range))
|
|
49
|
-
// Threads associated with the sheet
|
|
50
|
-
threads: Schema.optional(Schema.mutable(Schema.Array(Ref(ThreadType))))
|
|
47
|
+
ranges: Schema.mutable(Schema.Array(Range))
|
|
51
48
|
}) {
|
|
52
49
|
};
|
|
53
50
|
|
|
@@ -142,12 +139,7 @@ var toModelRange = (sheet, range) => ({
|
|
|
142
139
|
});
|
|
143
140
|
var SheetModel = class extends Resource {
|
|
144
141
|
constructor(_graph, _sheet, _options = {}) {
|
|
145
|
-
super();
|
|
146
|
-
this._graph = _graph;
|
|
147
|
-
this._sheet = _sheet;
|
|
148
|
-
this._options = _options;
|
|
149
|
-
this.id = `model-${PublicKey.random().truncate()}`;
|
|
150
|
-
this.update = new Event();
|
|
142
|
+
super(), this._graph = _graph, this._sheet = _sheet, this._options = _options, this.id = `model-${PublicKey.random().truncate()}`, this.update = new Event();
|
|
151
143
|
}
|
|
152
144
|
get graph() {
|
|
153
145
|
return this._graph;
|
|
@@ -690,7 +682,6 @@ var useSheetModel = (graph, sheet, { readonly } = {}) => {
|
|
|
690
682
|
};
|
|
691
683
|
|
|
692
684
|
// packages/plugins/plugin-sheet/src/types/types.ts
|
|
693
|
-
var SheetAction;
|
|
694
685
|
(function(SheetAction2) {
|
|
695
686
|
const SHEET_ACTION = `${SHEET_PLUGIN}/action`;
|
|
696
687
|
class Create extends Schema2.TaggedClass()(`${SHEET_ACTION}/create`, {
|
|
@@ -736,6 +727,7 @@ var SheetAction;
|
|
|
736
727
|
}
|
|
737
728
|
SheetAction2.DropAxis = DropAxis;
|
|
738
729
|
})(SheetAction || (SheetAction = {}));
|
|
730
|
+
var SheetAction;
|
|
739
731
|
|
|
740
732
|
// packages/plugins/plugin-sheet/src/types/util.ts
|
|
741
733
|
import { addressFromA1Notation as addressFromA1Notation2, addressToA1Notation as addressToA1Notation2, isFormula as isFormula2 } from "@dxos/compute";
|
|
@@ -789,8 +781,7 @@ var createSheet = ({ name, cells, ...size } = {}) => {
|
|
|
789
781
|
columns: [],
|
|
790
782
|
rowMeta: {},
|
|
791
783
|
columnMeta: {},
|
|
792
|
-
ranges: []
|
|
793
|
-
threads: []
|
|
784
|
+
ranges: []
|
|
794
785
|
});
|
|
795
786
|
initialize(sheet, size);
|
|
796
787
|
if (cells) {
|
|
@@ -841,7 +832,7 @@ var compareIndexPositions = (sheet, indexA, indexB) => {
|
|
|
841
832
|
var mapFormulaRefsToIndices = (sheet, formula) => {
|
|
842
833
|
invariant2(isFormula2(formula), void 0, {
|
|
843
834
|
F: __dxlog_file2,
|
|
844
|
-
L:
|
|
835
|
+
L: 152,
|
|
845
836
|
S: void 0,
|
|
846
837
|
A: [
|
|
847
838
|
"isFormula(formula)",
|
|
@@ -855,7 +846,7 @@ var mapFormulaRefsToIndices = (sheet, formula) => {
|
|
|
855
846
|
var mapFormulaIndicesToRefs = (sheet, formula) => {
|
|
856
847
|
invariant2(isFormula2(formula), void 0, {
|
|
857
848
|
F: __dxlog_file2,
|
|
858
|
-
L:
|
|
849
|
+
L: 162,
|
|
859
850
|
S: void 0,
|
|
860
851
|
A: [
|
|
861
852
|
"isFormula(formula)",
|
|
@@ -898,4 +889,4 @@ export {
|
|
|
898
889
|
mapFormulaRefsToIndices,
|
|
899
890
|
mapFormulaIndicesToRefs
|
|
900
891
|
};
|
|
901
|
-
//# sourceMappingURL=chunk-
|
|
892
|
+
//# sourceMappingURL=chunk-5FLX3UGU.mjs.map
|