@dxos/plugin-sheet 0.6.14-staging.9e90729 → 0.6.14-staging.c117501
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-JBB7W52Y.mjs → SheetContainer-P3NF5KEI.mjs} +60 -48
- package/dist/lib/browser/SheetContainer-P3NF5KEI.mjs.map +7 -0
- package/dist/lib/browser/{chunk-XXDHBYZQ.mjs → chunk-4LKIURJA.mjs} +337 -122
- package/dist/lib/browser/chunk-4LKIURJA.mjs.map +7 -0
- package/dist/lib/browser/{chunk-3QWIMZZJ.mjs → chunk-BVUN7SHF.mjs} +5 -3
- package/dist/lib/browser/chunk-BVUN7SHF.mjs.map +7 -0
- package/dist/lib/browser/{chunk-D3QTX46O.mjs → chunk-RABELMEQ.mjs} +3 -2
- package/dist/lib/browser/{chunk-D3QTX46O.mjs.map → chunk-RABELMEQ.mjs.map} +3 -3
- package/dist/lib/browser/{chunk-2ZK3YMZG.mjs → chunk-VMSX6Z4X.mjs} +58 -20
- package/dist/lib/browser/chunk-VMSX6Z4X.mjs.map +7 -0
- package/dist/lib/browser/{compute-graph-ZQKB6QVP.mjs → compute-graph-GGWUX644.mjs} +4 -4
- package/dist/lib/browser/index.mjs +48 -21
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/meta.mjs +1 -1
- package/dist/lib/browser/types.mjs +2 -2
- package/dist/lib/node/{SheetContainer-L37HUFCF.cjs → SheetContainer-MPFKXY26.cjs} +72 -63
- package/dist/lib/node/SheetContainer-MPFKXY26.cjs.map +7 -0
- package/dist/lib/node/{chunk-QIFIGEKV.cjs → chunk-2ZVZI2KJ.cjs} +6 -5
- package/dist/lib/node/{chunk-QIFIGEKV.cjs.map → chunk-2ZVZI2KJ.cjs.map} +3 -3
- package/dist/lib/node/{chunk-V7E5JZBD.cjs → chunk-AWKOWDMI.cjs} +9 -7
- package/dist/lib/node/chunk-AWKOWDMI.cjs.map +7 -0
- package/dist/lib/node/{chunk-QNFMTK3X.cjs → chunk-O7XR4R7Y.cjs} +69 -29
- package/dist/lib/node/chunk-O7XR4R7Y.cjs.map +7 -0
- package/dist/lib/node/{chunk-7AWAC3R3.cjs → chunk-OO24XJBV.cjs} +353 -139
- package/dist/lib/node/chunk-OO24XJBV.cjs.map +7 -0
- package/dist/lib/node/{compute-graph-RJB6OVW6.cjs → compute-graph-KGWA2QLE.cjs} +21 -21
- package/dist/lib/node/{compute-graph-RJB6OVW6.cjs.map → compute-graph-KGWA2QLE.cjs.map} +2 -2
- package/dist/lib/node/index.cjs +74 -46
- package/dist/lib/node/index.cjs.map +3 -3
- package/dist/lib/node/meta.cjs +3 -3
- package/dist/lib/node/meta.cjs.map +1 -1
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/types.cjs +7 -7
- package/dist/lib/node/types.cjs.map +1 -1
- package/dist/lib/node-esm/{SheetContainer-CLKFEM35.mjs → SheetContainer-22IOAW3B.mjs} +60 -48
- package/dist/lib/node-esm/SheetContainer-22IOAW3B.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-VCYJWE3O.mjs → chunk-BM2Q3FFC.mjs} +3 -2
- package/dist/lib/node-esm/{chunk-VCYJWE3O.mjs.map → chunk-BM2Q3FFC.mjs.map} +3 -3
- package/dist/lib/node-esm/{chunk-3JYJEOCF.mjs → chunk-BW36PM2Y.mjs} +337 -122
- package/dist/lib/node-esm/chunk-BW36PM2Y.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-JBTORSST.mjs → chunk-CR4K75EL.mjs} +58 -20
- package/dist/lib/node-esm/chunk-CR4K75EL.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-SPQFLYC2.mjs → chunk-UIBWRHW7.mjs} +5 -3
- package/dist/lib/node-esm/chunk-UIBWRHW7.mjs.map +7 -0
- package/dist/lib/node-esm/{compute-graph-VKRG526N.mjs → compute-graph-2SCZT7N5.mjs} +4 -4
- package/dist/lib/node-esm/index.mjs +48 -21
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/meta.mjs +1 -1
- package/dist/lib/node-esm/types.mjs +2 -2
- package/dist/types/src/SheetPlugin.d.ts.map +1 -1
- package/dist/types/src/components/FunctionEditor/FunctionEditor.d.ts.map +1 -1
- package/dist/types/src/components/GridSheet/GridSheet.d.ts.map +1 -1
- package/dist/types/src/components/GridSheet/util.d.ts +2 -2
- package/dist/types/src/components/GridSheet/util.d.ts.map +1 -1
- package/dist/types/src/components/RangeList/RangeList.d.ts +2 -4
- package/dist/types/src/components/RangeList/RangeList.d.ts.map +1 -1
- package/dist/types/src/components/SheetContainer/SheetContainer.d.ts +6 -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/Toolbar/Toolbar.d.ts +6 -3
- package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +4 -2
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/compute-graph/compute-graph.d.ts +2 -2
- package/dist/types/src/compute-graph/compute-graph.d.ts.map +1 -1
- package/dist/types/src/compute-graph/functions/async-function.d.ts.map +1 -1
- package/dist/types/src/compute-graph/functions/edge-function.d.ts.map +1 -1
- package/dist/types/src/defs/sheet-range-types.d.ts +2 -2
- package/dist/types/src/defs/sheet-range-types.d.ts.map +1 -1
- package/dist/types/src/defs/util.d.ts +1 -1
- package/dist/types/src/defs/util.d.ts.map +1 -1
- package/dist/types/src/integrations/thread-ranges.d.ts +1 -2
- package/dist/types/src/integrations/thread-ranges.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts +1 -0
- package/dist/types/src/meta.d.ts.map +1 -1
- package/dist/types/src/model/sheet-model.d.ts +12 -5
- package/dist/types/src/model/sheet-model.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +12 -3
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types.d.ts +33 -3
- package/dist/types/src/types.d.ts.map +1 -1
- package/package.json +37 -36
- package/src/SheetPlugin.tsx +27 -7
- package/src/components/FunctionEditor/FunctionEditor.tsx +1 -5
- package/src/components/GridSheet/GridSheet.tsx +107 -42
- package/src/components/GridSheet/util.ts +26 -16
- package/src/components/RangeList/RangeList.tsx +27 -12
- package/src/components/SheetContainer/SheetContainer.stories.tsx +4 -2
- package/src/components/SheetContainer/SheetContainer.tsx +19 -12
- package/src/components/Toolbar/Toolbar.tsx +72 -59
- package/src/compute-graph/compute-graph.ts +22 -7
- package/src/compute-graph/functions/async-function.ts +1 -0
- package/src/compute-graph/functions/edge-function.ts +5 -3
- package/src/defs/sheet-range-types.ts +8 -6
- package/src/defs/util.ts +1 -0
- package/src/integrations/thread-ranges.ts +3 -3
- package/src/meta.ts +1 -0
- package/src/model/sheet-model.test.ts +5 -3
- package/src/model/sheet-model.ts +93 -21
- package/src/translations.ts +12 -3
- package/src/types.ts +21 -1
- package/dist/lib/browser/SheetContainer-JBB7W52Y.mjs.map +0 -7
- package/dist/lib/browser/chunk-2ZK3YMZG.mjs.map +0 -7
- package/dist/lib/browser/chunk-3QWIMZZJ.mjs.map +0 -7
- package/dist/lib/browser/chunk-XXDHBYZQ.mjs.map +0 -7
- package/dist/lib/node/SheetContainer-L37HUFCF.cjs.map +0 -7
- package/dist/lib/node/chunk-7AWAC3R3.cjs.map +0 -7
- package/dist/lib/node/chunk-QNFMTK3X.cjs.map +0 -7
- package/dist/lib/node/chunk-V7E5JZBD.cjs.map +0 -7
- package/dist/lib/node-esm/SheetContainer-CLKFEM35.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-3JYJEOCF.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-JBTORSST.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-SPQFLYC2.mjs.map +0 -7
- /package/dist/lib/browser/{compute-graph-ZQKB6QVP.mjs.map → compute-graph-GGWUX644.mjs.map} +0 -0
- /package/dist/lib/node-esm/{compute-graph-VKRG526N.mjs.map → compute-graph-2SCZT7N5.mjs.map} +0 -0
|
@@ -3,23 +3,27 @@ import {
|
|
|
3
3
|
GridSheet,
|
|
4
4
|
SheetProvider,
|
|
5
5
|
completeCellRangeToThreadCursor,
|
|
6
|
+
useComputeGraph,
|
|
6
7
|
useSheetContext
|
|
7
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-BW36PM2Y.mjs";
|
|
8
9
|
import {
|
|
9
10
|
addressToA1Notation,
|
|
11
|
+
alignKey,
|
|
10
12
|
inRange,
|
|
11
13
|
isFormula,
|
|
12
14
|
rangeFromIndex,
|
|
13
15
|
rangeToA1Notation,
|
|
14
|
-
rangeToIndex
|
|
15
|
-
|
|
16
|
-
|
|
16
|
+
rangeToIndex,
|
|
17
|
+
styleKey
|
|
18
|
+
} from "./chunk-CR4K75EL.mjs";
|
|
19
|
+
import "./chunk-UIBWRHW7.mjs";
|
|
17
20
|
import {
|
|
18
21
|
SHEET_PLUGIN
|
|
19
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-BM2Q3FFC.mjs";
|
|
20
23
|
|
|
21
24
|
// packages/plugins/plugin-sheet/src/components/SheetContainer/SheetContainer.tsx
|
|
22
25
|
import React3 from "react";
|
|
26
|
+
import { StackItem } from "@dxos/react-ui-stack";
|
|
23
27
|
|
|
24
28
|
// packages/plugins/plugin-sheet/src/components/FunctionEditor/FunctionEditor.tsx
|
|
25
29
|
import React from "react";
|
|
@@ -39,7 +43,7 @@ var FunctionEditor = () => {
|
|
|
39
43
|
}
|
|
40
44
|
}
|
|
41
45
|
return /* @__PURE__ */ React.createElement("div", {
|
|
42
|
-
className: mx("flex shrink-0 justify-between items-center px-4 py-1 text-sm
|
|
46
|
+
className: mx("flex shrink-0 justify-between items-center px-4 py-1 text-sm attention-surface")
|
|
43
47
|
}, /* @__PURE__ */ React.createElement("div", {
|
|
44
48
|
className: "flex gap-4 items-center"
|
|
45
49
|
}, /* @__PURE__ */ React.createElement("div", {
|
|
@@ -59,7 +63,7 @@ var FunctionEditor = () => {
|
|
|
59
63
|
|
|
60
64
|
// packages/plugins/plugin-sheet/src/components/Toolbar/Toolbar.tsx
|
|
61
65
|
import { createContext } from "@radix-ui/react-context";
|
|
62
|
-
import React2, { useCallback
|
|
66
|
+
import React2, { useCallback } from "react";
|
|
63
67
|
import { useIntentDispatcher } from "@dxos/app-framework";
|
|
64
68
|
import { Icon as Icon2, Toolbar as NaturalToolbar, Tooltip, useTranslation } from "@dxos/react-ui";
|
|
65
69
|
import { useAttention } from "@dxos/react-ui-attention";
|
|
@@ -89,16 +93,15 @@ var ToolbarItem = ({ itemType, icon, children, ...props }) => {
|
|
|
89
93
|
}, children))), /* @__PURE__ */ React2.createElement(Tooltip.Portal, null, /* @__PURE__ */ React2.createElement(Tooltip.Content, tooltipProps, children, /* @__PURE__ */ React2.createElement(Tooltip.Arrow, null))));
|
|
90
94
|
};
|
|
91
95
|
var [ToolbarContextProvider, useToolbarContext] = createContext("Toolbar");
|
|
92
|
-
var sectionToolbarLayout = "bs-[--rail-action] bg-[--sticky-bg] sticky block-start-0 __-block-start-px transition-opacity";
|
|
93
96
|
var ToolbarRoot = ({ children, role, classNames }) => {
|
|
94
97
|
const { id, model, cursorFallbackRange, cursor } = useSheetContext();
|
|
95
98
|
const { hasAttention } = useAttention(id);
|
|
96
99
|
const dispatch = useIntentDispatcher();
|
|
97
100
|
const handleAction = useCallback((action) => {
|
|
98
101
|
switch (action.key) {
|
|
99
|
-
case "
|
|
100
|
-
if (
|
|
101
|
-
const index = model.sheet.ranges?.findIndex((range) => range.key === action.key && inRange(rangeFromIndex(model.sheet, range.range),
|
|
102
|
+
case "alignment":
|
|
103
|
+
if (cursorFallbackRange) {
|
|
104
|
+
const index = model.sheet.ranges?.findIndex((range) => range.key === action.key && inRange(rangeFromIndex(model.sheet, range.range), cursorFallbackRange.from)) ?? -1;
|
|
102
105
|
const nextRangeEntity = {
|
|
103
106
|
range: rangeToIndex(model.sheet, cursorFallbackRange),
|
|
104
107
|
key: action.key,
|
|
@@ -106,14 +109,16 @@ var ToolbarRoot = ({ children, role, classNames }) => {
|
|
|
106
109
|
};
|
|
107
110
|
if (index < 0) {
|
|
108
111
|
model.sheet.ranges?.push(nextRangeEntity);
|
|
112
|
+
} else if (model.sheet.ranges[index].value === action.value) {
|
|
113
|
+
model.sheet.ranges?.splice(index, 1);
|
|
109
114
|
} else {
|
|
110
115
|
model.sheet.ranges?.splice(index, 1, nextRangeEntity);
|
|
111
116
|
}
|
|
112
117
|
}
|
|
113
118
|
break;
|
|
114
119
|
case "style":
|
|
115
|
-
if (action.
|
|
116
|
-
const index = model.sheet.ranges?.findIndex((range) => range.key === action.key);
|
|
120
|
+
if (action.unset) {
|
|
121
|
+
const index = model.sheet.ranges?.findIndex((range) => range.key === action.key && cursorFallbackRange && inRange(rangeFromIndex(model.sheet, range.range), cursorFallbackRange.from));
|
|
117
122
|
if (index >= 0) {
|
|
118
123
|
model.sheet.ranges?.splice(index, 1);
|
|
119
124
|
}
|
|
@@ -148,13 +153,8 @@ var ToolbarRoot = ({ children, role, classNames }) => {
|
|
|
148
153
|
onAction: handleAction
|
|
149
154
|
}, /* @__PURE__ */ React2.createElement(NaturalToolbar.Root, {
|
|
150
155
|
classNames: [
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
!hasAttention && "invisible",
|
|
154
|
-
sectionToolbarLayout
|
|
155
|
-
] : [
|
|
156
|
-
"attention-surface"
|
|
157
|
-
],
|
|
156
|
+
"pli-0.5",
|
|
157
|
+
!hasAttention && "opacity-20",
|
|
158
158
|
classNames
|
|
159
159
|
]
|
|
160
160
|
}, children));
|
|
@@ -177,15 +177,15 @@ var Alignment = () => {
|
|
|
177
177
|
const { cursor, model } = useSheetContext();
|
|
178
178
|
const { onAction } = useToolbarContext("Alignment");
|
|
179
179
|
const { t } = useTranslation(SHEET_PLUGIN);
|
|
180
|
-
const value =
|
|
181
|
-
cursor,
|
|
182
|
-
model.sheet.ranges
|
|
183
|
-
]);
|
|
180
|
+
const value = cursor ? model.sheet.ranges?.findLast(({ range, key }) => key === alignKey && inRange(rangeFromIndex(model.sheet, range), cursor))?.value : void 0;
|
|
184
181
|
return /* @__PURE__ */ React2.createElement(NaturalToolbar.ToggleGroup, {
|
|
185
182
|
type: "single",
|
|
186
|
-
value
|
|
183
|
+
value: (
|
|
184
|
+
// TODO(thure): providing `undefined` leaves the last item active which was active rather than showing none.
|
|
185
|
+
value ?? "never"
|
|
186
|
+
),
|
|
187
187
|
onValueChange: (value2) => onAction?.({
|
|
188
|
-
key:
|
|
188
|
+
key: alignKey,
|
|
189
189
|
value: value2
|
|
190
190
|
})
|
|
191
191
|
}, alignmentOptions.map(({ value: value2, icon }) => /* @__PURE__ */ React2.createElement(ToolbarItem, {
|
|
@@ -193,35 +193,45 @@ var Alignment = () => {
|
|
|
193
193
|
key: value2,
|
|
194
194
|
value: value2,
|
|
195
195
|
icon
|
|
196
|
-
}, t(
|
|
196
|
+
}, t("toolbar action label", {
|
|
197
|
+
key: t(`range key ${alignKey} label`),
|
|
198
|
+
value: t(`range value ${value2} label`)
|
|
199
|
+
}))));
|
|
197
200
|
};
|
|
198
201
|
var styleOptions = [
|
|
199
202
|
{
|
|
200
203
|
value: "highlight",
|
|
201
204
|
icon: "ph--highlighter--regular"
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
value: "softwrap",
|
|
208
|
+
icon: "ph--paragraph--regular"
|
|
202
209
|
}
|
|
203
210
|
];
|
|
204
211
|
var Styles = () => {
|
|
205
|
-
const {
|
|
212
|
+
const { cursorFallbackRange, model } = useSheetContext();
|
|
206
213
|
const { onAction } = useToolbarContext("Styles");
|
|
207
214
|
const { t } = useTranslation(SHEET_PLUGIN);
|
|
208
|
-
const activeValues =
|
|
215
|
+
const activeValues = cursorFallbackRange ? model.sheet.ranges?.filter(({ range, key }) => key === "style" && inRange(rangeFromIndex(model.sheet, range), cursorFallbackRange.from)).reduce((acc, { value }) => {
|
|
209
216
|
acc.add(value);
|
|
210
217
|
return acc;
|
|
211
|
-
}, /* @__PURE__ */ new Set()) : void 0
|
|
212
|
-
cursor,
|
|
213
|
-
model.sheet.ranges
|
|
214
|
-
]);
|
|
218
|
+
}, /* @__PURE__ */ new Set()) : void 0;
|
|
215
219
|
return /* @__PURE__ */ React2.createElement(React2.Fragment, null, styleOptions.map(({ value, icon }) => /* @__PURE__ */ React2.createElement(ToolbarItem, {
|
|
216
220
|
itemType: "toggle",
|
|
217
221
|
key: value,
|
|
218
222
|
pressed: activeValues?.has(value),
|
|
219
|
-
onPressedChange: (nextPressed) =>
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
+
onPressedChange: (nextPressed) => {
|
|
224
|
+
onAction?.({
|
|
225
|
+
key: "style",
|
|
226
|
+
value,
|
|
227
|
+
unset: !nextPressed
|
|
228
|
+
});
|
|
229
|
+
},
|
|
223
230
|
icon
|
|
224
|
-
}, t(
|
|
231
|
+
}, t("toolbar action label", {
|
|
232
|
+
key: t(`range key ${styleKey} label`),
|
|
233
|
+
value: t(`range value ${value} label`)
|
|
234
|
+
}))));
|
|
225
235
|
};
|
|
226
236
|
var Actions = () => {
|
|
227
237
|
const { onAction } = useToolbarContext("Actions");
|
|
@@ -240,16 +250,16 @@ var Actions = () => {
|
|
|
240
250
|
icon: "ph--chat-text--regular",
|
|
241
251
|
"data-testid": "editor.toolbar.comment",
|
|
242
252
|
onClick: () => {
|
|
243
|
-
if (!
|
|
253
|
+
if (!cursorFallbackRange) {
|
|
244
254
|
return;
|
|
245
255
|
}
|
|
246
256
|
return onAction?.({
|
|
247
257
|
key: "comment",
|
|
248
258
|
value: rangeToIndex(model.sheet, cursorFallbackRange),
|
|
249
|
-
cellContent: model.getCellText(
|
|
259
|
+
cellContent: model.getCellText(cursorFallbackRange.from)
|
|
250
260
|
});
|
|
251
261
|
},
|
|
252
|
-
disabled: !
|
|
262
|
+
disabled: !cursorFallbackRange || overlapsCommentAnchor
|
|
253
263
|
}, t(tooltipLabelKey));
|
|
254
264
|
};
|
|
255
265
|
var Toolbar = {
|
|
@@ -261,16 +271,18 @@ var Toolbar = {
|
|
|
261
271
|
};
|
|
262
272
|
|
|
263
273
|
// packages/plugins/plugin-sheet/src/components/SheetContainer/SheetContainer.tsx
|
|
264
|
-
var SheetContainer = ({
|
|
265
|
-
|
|
274
|
+
var SheetContainer = ({ space, sheet, role }) => {
|
|
275
|
+
const graph = useComputeGraph(space);
|
|
276
|
+
return graph ? /* @__PURE__ */ React3.createElement(SheetProvider, {
|
|
266
277
|
sheet,
|
|
267
278
|
graph
|
|
279
|
+
}, /* @__PURE__ */ React3.createElement(StackItem.Content, {
|
|
280
|
+
toolbar: true,
|
|
281
|
+
statusbar: true,
|
|
282
|
+
classNames: "border-bs border-separator"
|
|
268
283
|
}, /* @__PURE__ */ React3.createElement(Toolbar.Root, {
|
|
269
284
|
role
|
|
270
|
-
}, /* @__PURE__ */ React3.createElement(Toolbar.Styles, null), /* @__PURE__ */ React3.createElement(Toolbar.Alignment, null), /* @__PURE__ */ React3.createElement(Toolbar.Separator, null), /* @__PURE__ */ React3.createElement(Toolbar.Actions, null)), /* @__PURE__ */ React3.createElement(
|
|
271
|
-
role: "none",
|
|
272
|
-
className: "border-bs border-separator grid cols-1 rows-[1fr_min-content] min-bs-0"
|
|
273
|
-
}, /* @__PURE__ */ React3.createElement(GridSheet, null), /* @__PURE__ */ React3.createElement(FunctionEditor, null)));
|
|
285
|
+
}, /* @__PURE__ */ React3.createElement(Toolbar.Styles, null), /* @__PURE__ */ React3.createElement(Toolbar.Alignment, null), /* @__PURE__ */ React3.createElement(Toolbar.Separator, null), /* @__PURE__ */ React3.createElement(Toolbar.Actions, null)), /* @__PURE__ */ React3.createElement(GridSheet, null), /* @__PURE__ */ React3.createElement(FunctionEditor, null))) : null;
|
|
274
286
|
};
|
|
275
287
|
|
|
276
288
|
// packages/plugins/plugin-sheet/src/components/SheetContainer/index.ts
|
|
@@ -278,4 +290,4 @@ var SheetContainer_default = SheetContainer;
|
|
|
278
290
|
export {
|
|
279
291
|
SheetContainer_default as default
|
|
280
292
|
};
|
|
281
|
-
//# sourceMappingURL=SheetContainer-
|
|
293
|
+
//# sourceMappingURL=SheetContainer-22IOAW3B.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/components/SheetContainer/SheetContainer.tsx", "../../../src/components/FunctionEditor/FunctionEditor.tsx", "../../../src/components/Toolbar/Toolbar.tsx", "../../../src/components/SheetContainer/index.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { 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 { Toolbar } from '../Toolbar';\n\nexport const SheetContainer = ({ space, sheet, role }: { space: Space; sheet: SheetType; role?: string }) => {\n const graph = useComputeGraph(space);\n\n return graph ? (\n <SheetProvider sheet={sheet} graph={graph}>\n <StackItem.Content toolbar statusbar classNames='border-bs border-separator'>\n <Toolbar.Root role={role}>\n <Toolbar.Styles />\n <Toolbar.Alignment />\n <Toolbar.Separator />\n <Toolbar.Actions />\n </Toolbar.Root>\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 { Icon } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { addressToA1Notation, isFormula, rangeToA1Notation } from '../../defs';\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(model.mapFormulaIndicesToRefs(value));\n formula = true;\n } else if (value != null) {\n value = String(value);\n }\n }\n\n return (\n <div className={mx('flex shrink-0 justify-between items-center px-4 py-1 text-sm attention-surface')}>\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 { createContext } from '@radix-ui/react-context';\nimport React, { type PropsWithChildren, useCallback } from 'react';\n\nimport { useIntentDispatcher } from '@dxos/app-framework';\nimport {\n Icon,\n type ThemedClassName,\n Toolbar as NaturalToolbar,\n type ToolbarButtonProps as NaturalToolbarButtonProps,\n type ToolbarToggleGroupItemProps as NaturalToolbarToggleGroupItemProps,\n type ToolbarToggleProps as NaturalToolbarToggleProps,\n Tooltip,\n useTranslation,\n} from '@dxos/react-ui';\nimport { useAttention } from '@dxos/react-ui-attention';\nimport { nonNullable } from '@dxos/util';\n\nimport {\n alignKey,\n type AlignKey,\n type AlignValue,\n type CommentKey,\n type CommentValue,\n inRange,\n rangeFromIndex,\n rangeToIndex,\n styleKey,\n type StyleKey,\n type StyleValue,\n} from '../../defs';\nimport { completeCellRangeToThreadCursor } from '../../integrations';\nimport { SHEET_PLUGIN } from '../../meta';\nimport { type SheetType } from '../../types';\nimport { useSheetContext } from '../SheetContext';\n\n//\n// Buttons\n//\n\nconst buttonStyles = 'min-bs-0 p-2';\nconst tooltipProps = { side: 'bottom' as const, classNames: 'z-10' };\n\nconst ToolbarSeparator = () => <div role='separator' className='grow' />;\n\n//\n// ToolbarItem\n//\n\ntype ToolbarItemProps =\n | (NaturalToolbarButtonProps & { itemType: 'button'; icon: string })\n | (NaturalToolbarToggleGroupItemProps & { itemType: 'toggleGroupItem'; icon: string })\n | (NaturalToolbarToggleProps & { itemType: 'toggle'; icon: string });\n\nexport const ToolbarItem = ({ itemType, icon, children, ...props }: ToolbarItemProps) => {\n const Invoker =\n itemType === 'toggleGroupItem'\n ? NaturalToolbar.ToggleGroupItem\n : itemType === 'toggle'\n ? NaturalToolbar.Toggle\n : NaturalToolbar.Button;\n return (\n <Tooltip.Root>\n <Tooltip.Trigger asChild>\n {/* TODO(thure): type the props spread better. */}\n <Invoker variant='ghost' {...(props as any)} classNames={buttonStyles}>\n <Icon icon={icon} size={5} />\n <span className='sr-only'>{children}</span>\n </Invoker>\n </Tooltip.Trigger>\n <Tooltip.Portal>\n <Tooltip.Content {...tooltipProps}>\n {children}\n <Tooltip.Arrow />\n </Tooltip.Content>\n </Tooltip.Portal>\n </Tooltip.Root>\n );\n};\n\n//\n// Root\n//\n\ntype AlignAction = { key: AlignKey; value: AlignValue };\ntype CommentAction = { key: CommentKey; value: CommentValue; cellContent?: string };\ntype StyleAction = { key: StyleKey; value: StyleValue };\n\nexport type ToolbarAction = StyleAction | AlignAction | CommentAction;\nexport type ToolbarActionAnnotated = ToolbarAction & { unset?: boolean };\n\nexport type ToolbarActionType = ToolbarAction['key'];\n\nexport type ToolbarActionHandler = (action: ToolbarActionAnnotated) => void;\n\nexport type ToolbarProps = ThemedClassName<\n PropsWithChildren<{\n role?: string;\n }>\n>;\n\nconst [ToolbarContextProvider, useToolbarContext] = createContext<{\n onAction: (action: ToolbarActionAnnotated) => void;\n}>('Toolbar');\n\ntype Range = SheetType['ranges'][number];\n\nconst ToolbarRoot = ({ children, role, classNames }: ToolbarProps) => {\n const { id, model, cursorFallbackRange, cursor } = useSheetContext();\n const { hasAttention } = useAttention(id);\n const dispatch = useIntentDispatcher();\n\n // TODO(Zan): Externalize the toolbar action handler. E.g., Toolbar/keys should both fire events.\n const handleAction = useCallback(\n (action: ToolbarActionAnnotated) => {\n switch (action.key) {\n case 'alignment':\n if (cursorFallbackRange) {\n const index =\n model.sheet.ranges?.findIndex(\n (range) =>\n range.key === action.key &&\n inRange(rangeFromIndex(model.sheet, range.range), cursorFallbackRange.from),\n ) ?? -1;\n const nextRangeEntity = {\n range: rangeToIndex(model.sheet, cursorFallbackRange),\n key: action.key,\n value: action.value,\n };\n if (index < 0) {\n model.sheet.ranges?.push(nextRangeEntity);\n } else if (model.sheet.ranges![index].value === action.value) {\n model.sheet.ranges?.splice(index, 1);\n } else {\n model.sheet.ranges?.splice(index, 1, nextRangeEntity);\n }\n }\n break;\n case 'style':\n if (action.unset) {\n const index = model.sheet.ranges?.findIndex(\n (range) =>\n range.key === action.key &&\n cursorFallbackRange &&\n inRange(rangeFromIndex(model.sheet, range.range), cursorFallbackRange.from),\n );\n if (index >= 0) {\n model.sheet.ranges?.splice(index, 1);\n }\n } else if (cursorFallbackRange) {\n model.sheet.ranges?.push({\n range: rangeToIndex(model.sheet, cursorFallbackRange),\n key: action.key,\n value: action.value,\n });\n }\n break;\n case 'comment': {\n // TODO(Zan): We shouldn't hardcode the action ID.\n if (cursorFallbackRange) {\n void dispatch({\n action: 'dxos.org/plugin/thread/action/create',\n data: {\n cursor: completeCellRangeToThreadCursor(cursorFallbackRange),\n name: action.cellContent,\n subject: model.sheet,\n },\n });\n }\n }\n }\n },\n [model.sheet, cursorFallbackRange, cursor, dispatch],\n );\n\n return (\n <ToolbarContextProvider onAction={handleAction}>\n <NaturalToolbar.Root classNames={['pli-0.5', !hasAttention && 'opacity-20', classNames]}>\n {children}\n </NaturalToolbar.Root>\n </ToolbarContextProvider>\n );\n};\n\n// TODO(burdon): Generalize.\n// TODO(burdon): Detect and display current state.\ntype ButtonProps<T> = {\n value: T;\n icon: string;\n disabled?: (state: Range) => boolean;\n};\n\n//\n// Alignment\n//\n\nconst alignmentOptions: ButtonProps<AlignValue>[] = [\n { value: 'start', icon: 'ph--text-align-left--regular' },\n { value: 'center', icon: 'ph--text-align-center--regular' },\n { value: 'end', icon: 'ph--text-align-right--regular' },\n];\n\nconst Alignment = () => {\n const { cursor, model } = useSheetContext();\n const { onAction } = useToolbarContext('Alignment');\n const { t } = useTranslation(SHEET_PLUGIN);\n\n // TODO(thure): Can this O(n) call be memoized?\n const value = cursor\n ? model.sheet.ranges?.findLast(\n ({ range, key }) => key === alignKey && inRange(rangeFromIndex(model.sheet, range), cursor),\n )?.value\n : undefined;\n\n return (\n <NaturalToolbar.ToggleGroup\n type='single'\n value={\n // TODO(thure): providing `undefined` leaves the last item active which was active rather than showing none.\n value ?? 'never'\n }\n onValueChange={(value: AlignValue) => onAction?.({ key: alignKey, value })}\n >\n {alignmentOptions.map(({ value, icon }) => (\n <ToolbarItem itemType='toggleGroupItem' key={value} value={value} icon={icon}>\n {t('toolbar action label', {\n key: t(`range key ${alignKey} label`),\n value: t(`range value ${value} label`),\n })}\n </ToolbarItem>\n ))}\n </NaturalToolbar.ToggleGroup>\n );\n};\n\nconst styleOptions: ButtonProps<StyleValue>[] = [\n { value: 'highlight', icon: 'ph--highlighter--regular' },\n { value: 'softwrap', icon: 'ph--paragraph--regular' },\n];\n\nconst Styles = () => {\n const { cursorFallbackRange, model } = useSheetContext();\n const { onAction } = useToolbarContext('Styles');\n const { t } = useTranslation(SHEET_PLUGIN);\n\n // TODO(thure): Can this O(n) call be memoized?\n const activeValues = cursorFallbackRange\n ? model.sheet.ranges\n ?.filter(\n ({ range, key }) => key === 'style' && inRange(rangeFromIndex(model.sheet, range), cursorFallbackRange.from),\n )\n .reduce((acc, { value }) => {\n acc.add(value);\n return acc;\n }, new Set())\n : undefined;\n\n return (\n <>\n {styleOptions.map(({ value, icon }) => (\n <ToolbarItem\n itemType='toggle'\n key={value}\n pressed={activeValues?.has(value)}\n onPressedChange={(nextPressed: boolean) => {\n onAction?.({ key: 'style', value, unset: !nextPressed });\n }}\n icon={icon}\n >\n {t('toolbar action label', {\n key: t(`range key ${styleKey} label`),\n value: t(`range value ${value} label`),\n })}\n </ToolbarItem>\n ))}\n </>\n );\n};\n\n//\n// Actions\n//\n\nconst Actions = () => {\n const { onAction } = useToolbarContext('Actions');\n const { cursorFallbackRange, cursor, model } = useSheetContext();\n const { t } = useTranslation(SHEET_PLUGIN);\n\n // TODO(thure): Can this O(n) call be memoized?\n const overlapsCommentAnchor = (model.sheet.threads ?? [])\n .filter(nonNullable)\n .filter((thread) => thread.status !== 'resolved')\n .some((thread) => {\n if (!cursorFallbackRange) {\n return false;\n }\n return rangeToIndex(model.sheet, cursorFallbackRange) === thread.anchor;\n });\n\n const tooltipLabelKey = !cursor\n ? 'no cursor label'\n : overlapsCommentAnchor\n ? 'selection overlaps existing comment label'\n : 'comment label';\n\n return (\n <ToolbarItem\n itemType='button'\n value='comment'\n icon='ph--chat-text--regular'\n data-testid='editor.toolbar.comment'\n onClick={() => {\n if (!cursorFallbackRange) {\n return;\n }\n return onAction?.({\n key: 'comment',\n value: rangeToIndex(model.sheet, cursorFallbackRange),\n cellContent: model.getCellText(cursorFallbackRange.from),\n });\n }}\n disabled={!cursorFallbackRange || overlapsCommentAnchor}\n >\n {t(tooltipLabelKey)}\n </ToolbarItem>\n );\n};\n\nexport const Toolbar = {\n Root: ToolbarRoot,\n Separator: ToolbarSeparator,\n Alignment,\n Styles,\n Actions,\n};\n\nexport { useToolbarContext };\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", "StackItem", "React", "Icon", "mx", "FunctionEditor", "model", "cursor", "range", "useSheetContext", "value", "formula", "getCellValue", "isFormula", "graph", "mapFunctionBindingFromId", "mapFormulaIndicesToRefs", "String", "div", "className", "mx", "rangeToA1Notation", "addressToA1Notation", "Icon", "icon", "classNames", "span", "createContext", "React", "useCallback", "useIntentDispatcher", "Icon", "Toolbar", "NaturalToolbar", "Tooltip", "useTranslation", "useAttention", "nonNullable", "buttonStyles", "tooltipProps", "side", "classNames", "ToolbarSeparator", "React", "div", "role", "className", "ToolbarItem", "itemType", "icon", "children", "props", "Invoker", "NaturalToolbar", "ToggleGroupItem", "Toggle", "Button", "Tooltip", "Root", "Trigger", "asChild", "variant", "Icon", "size", "span", "Portal", "Content", "Arrow", "ToolbarContextProvider", "useToolbarContext", "createContext", "ToolbarRoot", "id", "model", "cursorFallbackRange", "cursor", "useSheetContext", "hasAttention", "useAttention", "dispatch", "useIntentDispatcher", "handleAction", "useCallback", "action", "key", "index", "sheet", "ranges", "findIndex", "range", "inRange", "rangeFromIndex", "from", "nextRangeEntity", "rangeToIndex", "value", "push", "splice", "unset", "data", "completeCellRangeToThreadCursor", "name", "cellContent", "subject", "onAction", "alignmentOptions", "Alignment", "t", "useTranslation", "SHEET_PLUGIN", "findLast", "alignKey", "undefined", "ToggleGroup", "type", "onValueChange", "map", "styleOptions", "Styles", "activeValues", "filter", "reduce", "acc", "add", "Set", "pressed", "has", "onPressedChange", "nextPressed", "styleKey", "Actions", "overlapsCommentAnchor", "threads", "nonNullable", "thread", "status", "some", "anchor", "tooltipLabelKey", "data-testid", "onClick", "getCellText", "disabled", "Toolbar", "Separator", "SheetContainer", "space", "sheet", "role", "graph", "useComputeGraph", "React", "SheetProvider", "StackItem", "Content", "toolbar", "statusbar", "classNames", "Toolbar", "Root", "Styles", "Alignment", "Separator", "Actions", "GridSheet", "FunctionEditor", "SheetContainer"]
|
|
7
|
+
}
|
|
@@ -6,11 +6,12 @@ var meta_default = {
|
|
|
6
6
|
id: SHEET_PLUGIN,
|
|
7
7
|
name: "Sheet",
|
|
8
8
|
description: "A simple spreadsheet plugin.",
|
|
9
|
-
icon: "ph--grid-nine--regular"
|
|
9
|
+
icon: "ph--grid-nine--regular",
|
|
10
|
+
source: "https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-sheet"
|
|
10
11
|
};
|
|
11
12
|
|
|
12
13
|
export {
|
|
13
14
|
SHEET_PLUGIN,
|
|
14
15
|
meta_default
|
|
15
16
|
};
|
|
16
|
-
//# sourceMappingURL=chunk-
|
|
17
|
+
//# sourceMappingURL=chunk-BM2Q3FFC.mjs.map
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/meta.ts"],
|
|
4
|
-
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type PluginMeta } from '@dxos/app-framework';\n\nexport const SHEET_PLUGIN = 'dxos.org/plugin/sheet';\n\nexport default {\n id: SHEET_PLUGIN,\n name: 'Sheet',\n description: 'A simple spreadsheet plugin.',\n icon: 'ph--grid-nine--regular',\n} satisfies PluginMeta;\n"],
|
|
5
|
-
"mappings": ";;;AAMO,IAAMA,eAAe;AAE5B,IAAA,eAAe;EACbC,IAAID;EACJE,MAAM;EACNC,aAAa;EACbC,MAAM;
|
|
6
|
-
"names": ["SHEET_PLUGIN", "id", "name", "description", "icon"]
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { type PluginMeta } from '@dxos/app-framework';\n\nexport const SHEET_PLUGIN = 'dxos.org/plugin/sheet';\n\nexport default {\n id: SHEET_PLUGIN,\n name: 'Sheet',\n description: 'A simple spreadsheet plugin.',\n icon: 'ph--grid-nine--regular',\n source: 'https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-sheet',\n} satisfies PluginMeta;\n"],
|
|
5
|
+
"mappings": ";;;AAMO,IAAMA,eAAe;AAE5B,IAAA,eAAe;EACbC,IAAID;EACJE,MAAM;EACNC,aAAa;EACbC,MAAM;EACNC,QAAQ;AACV;",
|
|
6
|
+
"names": ["SHEET_PLUGIN", "id", "name", "description", "icon", "source"]
|
|
7
7
|
}
|