@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
|
@@ -26,16 +26,17 @@ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__ge
|
|
|
26
26
|
mod
|
|
27
27
|
));
|
|
28
28
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
-
var
|
|
30
|
-
__export(
|
|
29
|
+
var SheetContainer_MPFKXY26_exports = {};
|
|
30
|
+
__export(SheetContainer_MPFKXY26_exports, {
|
|
31
31
|
default: () => SheetContainer_default
|
|
32
32
|
});
|
|
33
|
-
module.exports = __toCommonJS(
|
|
34
|
-
var
|
|
35
|
-
var
|
|
36
|
-
var
|
|
37
|
-
var
|
|
33
|
+
module.exports = __toCommonJS(SheetContainer_MPFKXY26_exports);
|
|
34
|
+
var import_chunk_OO24XJBV = require("./chunk-OO24XJBV.cjs");
|
|
35
|
+
var import_chunk_O7XR4R7Y = require("./chunk-O7XR4R7Y.cjs");
|
|
36
|
+
var import_chunk_AWKOWDMI = require("./chunk-AWKOWDMI.cjs");
|
|
37
|
+
var import_chunk_2ZVZI2KJ = require("./chunk-2ZVZI2KJ.cjs");
|
|
38
38
|
var import_react = __toESM(require("react"));
|
|
39
|
+
var import_react_ui_stack = require("@dxos/react-ui-stack");
|
|
39
40
|
var import_react2 = __toESM(require("react"));
|
|
40
41
|
var import_react_ui = require("@dxos/react-ui");
|
|
41
42
|
var import_react_ui_theme = require("@dxos/react-ui-theme");
|
|
@@ -46,12 +47,12 @@ var import_react_ui2 = require("@dxos/react-ui");
|
|
|
46
47
|
var import_react_ui_attention = require("@dxos/react-ui-attention");
|
|
47
48
|
var import_util = require("@dxos/util");
|
|
48
49
|
var FunctionEditor = () => {
|
|
49
|
-
const { model, cursor, range } = (0,
|
|
50
|
+
const { model, cursor, range } = (0, import_chunk_OO24XJBV.useSheetContext)();
|
|
50
51
|
let value;
|
|
51
52
|
let formula = false;
|
|
52
53
|
if (cursor) {
|
|
53
54
|
value = model.getCellValue(cursor);
|
|
54
|
-
if ((0,
|
|
55
|
+
if ((0, import_chunk_O7XR4R7Y.isFormula)(value)) {
|
|
55
56
|
value = model.graph.mapFunctionBindingFromId(model.mapFormulaIndicesToRefs(value));
|
|
56
57
|
formula = true;
|
|
57
58
|
} else if (value != null) {
|
|
@@ -59,12 +60,12 @@ var FunctionEditor = () => {
|
|
|
59
60
|
}
|
|
60
61
|
}
|
|
61
62
|
return /* @__PURE__ */ import_react2.default.createElement("div", {
|
|
62
|
-
className: (0, import_react_ui_theme.mx)("flex shrink-0 justify-between items-center px-4 py-1 text-sm
|
|
63
|
+
className: (0, import_react_ui_theme.mx)("flex shrink-0 justify-between items-center px-4 py-1 text-sm attention-surface")
|
|
63
64
|
}, /* @__PURE__ */ import_react2.default.createElement("div", {
|
|
64
65
|
className: "flex gap-4 items-center"
|
|
65
66
|
}, /* @__PURE__ */ import_react2.default.createElement("div", {
|
|
66
67
|
className: "flex w-16 items-center font-mono"
|
|
67
|
-
}, range && (0,
|
|
68
|
+
}, range && (0, import_chunk_O7XR4R7Y.rangeToA1Notation)(range) || cursor && (0, import_chunk_O7XR4R7Y.addressToA1Notation)(cursor)), /* @__PURE__ */ import_react2.default.createElement("div", {
|
|
68
69
|
className: "flex gap-2 items-center"
|
|
69
70
|
}, /* @__PURE__ */ import_react2.default.createElement(import_react_ui.Icon, {
|
|
70
71
|
icon: "ph--function--regular",
|
|
@@ -101,37 +102,38 @@ var ToolbarItem = ({ itemType, icon, children, ...props }) => {
|
|
|
101
102
|
}, children))), /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Tooltip.Portal, null, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Tooltip.Content, tooltipProps, children, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Tooltip.Arrow, null))));
|
|
102
103
|
};
|
|
103
104
|
var [ToolbarContextProvider, useToolbarContext] = (0, import_react_context.createContext)("Toolbar");
|
|
104
|
-
var sectionToolbarLayout = "bs-[--rail-action] bg-[--sticky-bg] sticky block-start-0 __-block-start-px transition-opacity";
|
|
105
105
|
var ToolbarRoot = ({ children, role, classNames }) => {
|
|
106
|
-
const { id, model, cursorFallbackRange, cursor } = (0,
|
|
106
|
+
const { id, model, cursorFallbackRange, cursor } = (0, import_chunk_OO24XJBV.useSheetContext)();
|
|
107
107
|
const { hasAttention } = (0, import_react_ui_attention.useAttention)(id);
|
|
108
108
|
const dispatch = (0, import_app_framework.useIntentDispatcher)();
|
|
109
109
|
const handleAction = (0, import_react3.useCallback)((action) => {
|
|
110
110
|
switch (action.key) {
|
|
111
|
-
case "
|
|
112
|
-
if (
|
|
113
|
-
const index = model.sheet.ranges?.findIndex((range) => range.key === action.key && (0,
|
|
111
|
+
case "alignment":
|
|
112
|
+
if (cursorFallbackRange) {
|
|
113
|
+
const index = model.sheet.ranges?.findIndex((range) => range.key === action.key && (0, import_chunk_O7XR4R7Y.inRange)((0, import_chunk_O7XR4R7Y.rangeFromIndex)(model.sheet, range.range), cursorFallbackRange.from)) ?? -1;
|
|
114
114
|
const nextRangeEntity = {
|
|
115
|
-
range: (0,
|
|
115
|
+
range: (0, import_chunk_O7XR4R7Y.rangeToIndex)(model.sheet, cursorFallbackRange),
|
|
116
116
|
key: action.key,
|
|
117
117
|
value: action.value
|
|
118
118
|
};
|
|
119
119
|
if (index < 0) {
|
|
120
120
|
model.sheet.ranges?.push(nextRangeEntity);
|
|
121
|
+
} else if (model.sheet.ranges[index].value === action.value) {
|
|
122
|
+
model.sheet.ranges?.splice(index, 1);
|
|
121
123
|
} else {
|
|
122
124
|
model.sheet.ranges?.splice(index, 1, nextRangeEntity);
|
|
123
125
|
}
|
|
124
126
|
}
|
|
125
127
|
break;
|
|
126
128
|
case "style":
|
|
127
|
-
if (action.
|
|
128
|
-
const index = model.sheet.ranges?.findIndex((range) => range.key === action.key);
|
|
129
|
+
if (action.unset) {
|
|
130
|
+
const index = model.sheet.ranges?.findIndex((range) => range.key === action.key && cursorFallbackRange && (0, import_chunk_O7XR4R7Y.inRange)((0, import_chunk_O7XR4R7Y.rangeFromIndex)(model.sheet, range.range), cursorFallbackRange.from));
|
|
129
131
|
if (index >= 0) {
|
|
130
132
|
model.sheet.ranges?.splice(index, 1);
|
|
131
133
|
}
|
|
132
134
|
} else if (cursorFallbackRange) {
|
|
133
135
|
model.sheet.ranges?.push({
|
|
134
|
-
range: (0,
|
|
136
|
+
range: (0, import_chunk_O7XR4R7Y.rangeToIndex)(model.sheet, cursorFallbackRange),
|
|
135
137
|
key: action.key,
|
|
136
138
|
value: action.value
|
|
137
139
|
});
|
|
@@ -142,7 +144,7 @@ var ToolbarRoot = ({ children, role, classNames }) => {
|
|
|
142
144
|
void dispatch({
|
|
143
145
|
action: "dxos.org/plugin/thread/action/create",
|
|
144
146
|
data: {
|
|
145
|
-
cursor: (0,
|
|
147
|
+
cursor: (0, import_chunk_OO24XJBV.completeCellRangeToThreadCursor)(cursorFallbackRange),
|
|
146
148
|
name: action.cellContent,
|
|
147
149
|
subject: model.sheet
|
|
148
150
|
}
|
|
@@ -160,13 +162,8 @@ var ToolbarRoot = ({ children, role, classNames }) => {
|
|
|
160
162
|
onAction: handleAction
|
|
161
163
|
}, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Toolbar.Root, {
|
|
162
164
|
classNames: [
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
!hasAttention && "invisible",
|
|
166
|
-
sectionToolbarLayout
|
|
167
|
-
] : [
|
|
168
|
-
"attention-surface"
|
|
169
|
-
],
|
|
165
|
+
"pli-0.5",
|
|
166
|
+
!hasAttention && "opacity-20",
|
|
170
167
|
classNames
|
|
171
168
|
]
|
|
172
169
|
}, children));
|
|
@@ -186,18 +183,18 @@ var alignmentOptions = [
|
|
|
186
183
|
}
|
|
187
184
|
];
|
|
188
185
|
var Alignment = () => {
|
|
189
|
-
const { cursor, model } = (0,
|
|
186
|
+
const { cursor, model } = (0, import_chunk_OO24XJBV.useSheetContext)();
|
|
190
187
|
const { onAction } = useToolbarContext("Alignment");
|
|
191
|
-
const { t } = (0, import_react_ui2.useTranslation)(
|
|
192
|
-
const value =
|
|
193
|
-
cursor,
|
|
194
|
-
model.sheet.ranges
|
|
195
|
-
]);
|
|
188
|
+
const { t } = (0, import_react_ui2.useTranslation)(import_chunk_2ZVZI2KJ.SHEET_PLUGIN);
|
|
189
|
+
const value = cursor ? model.sheet.ranges?.findLast(({ range, key }) => key === import_chunk_O7XR4R7Y.alignKey && (0, import_chunk_O7XR4R7Y.inRange)((0, import_chunk_O7XR4R7Y.rangeFromIndex)(model.sheet, range), cursor))?.value : void 0;
|
|
196
190
|
return /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Toolbar.ToggleGroup, {
|
|
197
191
|
type: "single",
|
|
198
|
-
value
|
|
192
|
+
value: (
|
|
193
|
+
// TODO(thure): providing `undefined` leaves the last item active which was active rather than showing none.
|
|
194
|
+
value ?? "never"
|
|
195
|
+
),
|
|
199
196
|
onValueChange: (value2) => onAction?.({
|
|
200
|
-
key:
|
|
197
|
+
key: import_chunk_O7XR4R7Y.alignKey,
|
|
201
198
|
value: value2
|
|
202
199
|
})
|
|
203
200
|
}, alignmentOptions.map(({ value: value2, icon }) => /* @__PURE__ */ import_react3.default.createElement(ToolbarItem, {
|
|
@@ -205,45 +202,55 @@ var Alignment = () => {
|
|
|
205
202
|
key: value2,
|
|
206
203
|
value: value2,
|
|
207
204
|
icon
|
|
208
|
-
}, t(
|
|
205
|
+
}, t("toolbar action label", {
|
|
206
|
+
key: t(`range key ${import_chunk_O7XR4R7Y.alignKey} label`),
|
|
207
|
+
value: t(`range value ${value2} label`)
|
|
208
|
+
}))));
|
|
209
209
|
};
|
|
210
210
|
var styleOptions = [
|
|
211
211
|
{
|
|
212
212
|
value: "highlight",
|
|
213
213
|
icon: "ph--highlighter--regular"
|
|
214
|
+
},
|
|
215
|
+
{
|
|
216
|
+
value: "softwrap",
|
|
217
|
+
icon: "ph--paragraph--regular"
|
|
214
218
|
}
|
|
215
219
|
];
|
|
216
220
|
var Styles = () => {
|
|
217
|
-
const {
|
|
221
|
+
const { cursorFallbackRange, model } = (0, import_chunk_OO24XJBV.useSheetContext)();
|
|
218
222
|
const { onAction } = useToolbarContext("Styles");
|
|
219
|
-
const { t } = (0, import_react_ui2.useTranslation)(
|
|
220
|
-
const activeValues =
|
|
223
|
+
const { t } = (0, import_react_ui2.useTranslation)(import_chunk_2ZVZI2KJ.SHEET_PLUGIN);
|
|
224
|
+
const activeValues = cursorFallbackRange ? model.sheet.ranges?.filter(({ range, key }) => key === "style" && (0, import_chunk_O7XR4R7Y.inRange)((0, import_chunk_O7XR4R7Y.rangeFromIndex)(model.sheet, range), cursorFallbackRange.from)).reduce((acc, { value }) => {
|
|
221
225
|
acc.add(value);
|
|
222
226
|
return acc;
|
|
223
|
-
}, /* @__PURE__ */ new Set()) : void 0
|
|
224
|
-
cursor,
|
|
225
|
-
model.sheet.ranges
|
|
226
|
-
]);
|
|
227
|
+
}, /* @__PURE__ */ new Set()) : void 0;
|
|
227
228
|
return /* @__PURE__ */ import_react3.default.createElement(import_react3.default.Fragment, null, styleOptions.map(({ value, icon }) => /* @__PURE__ */ import_react3.default.createElement(ToolbarItem, {
|
|
228
229
|
itemType: "toggle",
|
|
229
230
|
key: value,
|
|
230
231
|
pressed: activeValues?.has(value),
|
|
231
|
-
onPressedChange: (nextPressed) =>
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
232
|
+
onPressedChange: (nextPressed) => {
|
|
233
|
+
onAction?.({
|
|
234
|
+
key: "style",
|
|
235
|
+
value,
|
|
236
|
+
unset: !nextPressed
|
|
237
|
+
});
|
|
238
|
+
},
|
|
235
239
|
icon
|
|
236
|
-
}, t(
|
|
240
|
+
}, t("toolbar action label", {
|
|
241
|
+
key: t(`range key ${import_chunk_O7XR4R7Y.styleKey} label`),
|
|
242
|
+
value: t(`range value ${value} label`)
|
|
243
|
+
}))));
|
|
237
244
|
};
|
|
238
245
|
var Actions = () => {
|
|
239
246
|
const { onAction } = useToolbarContext("Actions");
|
|
240
|
-
const { cursorFallbackRange, cursor, model } = (0,
|
|
241
|
-
const { t } = (0, import_react_ui2.useTranslation)(
|
|
247
|
+
const { cursorFallbackRange, cursor, model } = (0, import_chunk_OO24XJBV.useSheetContext)();
|
|
248
|
+
const { t } = (0, import_react_ui2.useTranslation)(import_chunk_2ZVZI2KJ.SHEET_PLUGIN);
|
|
242
249
|
const overlapsCommentAnchor = (model.sheet.threads ?? []).filter(import_util.nonNullable).filter((thread) => thread.status !== "resolved").some((thread) => {
|
|
243
250
|
if (!cursorFallbackRange) {
|
|
244
251
|
return false;
|
|
245
252
|
}
|
|
246
|
-
return (0,
|
|
253
|
+
return (0, import_chunk_O7XR4R7Y.rangeToIndex)(model.sheet, cursorFallbackRange) === thread.anchor;
|
|
247
254
|
});
|
|
248
255
|
const tooltipLabelKey = !cursor ? "no cursor label" : overlapsCommentAnchor ? "selection overlaps existing comment label" : "comment label";
|
|
249
256
|
return /* @__PURE__ */ import_react3.default.createElement(ToolbarItem, {
|
|
@@ -252,16 +259,16 @@ var Actions = () => {
|
|
|
252
259
|
icon: "ph--chat-text--regular",
|
|
253
260
|
"data-testid": "editor.toolbar.comment",
|
|
254
261
|
onClick: () => {
|
|
255
|
-
if (!
|
|
262
|
+
if (!cursorFallbackRange) {
|
|
256
263
|
return;
|
|
257
264
|
}
|
|
258
265
|
return onAction?.({
|
|
259
266
|
key: "comment",
|
|
260
|
-
value: (0,
|
|
261
|
-
cellContent: model.getCellText(
|
|
267
|
+
value: (0, import_chunk_O7XR4R7Y.rangeToIndex)(model.sheet, cursorFallbackRange),
|
|
268
|
+
cellContent: model.getCellText(cursorFallbackRange.from)
|
|
262
269
|
});
|
|
263
270
|
},
|
|
264
|
-
disabled: !
|
|
271
|
+
disabled: !cursorFallbackRange || overlapsCommentAnchor
|
|
265
272
|
}, t(tooltipLabelKey));
|
|
266
273
|
};
|
|
267
274
|
var Toolbar = {
|
|
@@ -271,16 +278,18 @@ var Toolbar = {
|
|
|
271
278
|
Styles,
|
|
272
279
|
Actions
|
|
273
280
|
};
|
|
274
|
-
var SheetContainer = ({
|
|
275
|
-
|
|
281
|
+
var SheetContainer = ({ space, sheet, role }) => {
|
|
282
|
+
const graph = (0, import_chunk_OO24XJBV.useComputeGraph)(space);
|
|
283
|
+
return graph ? /* @__PURE__ */ import_react.default.createElement(import_chunk_OO24XJBV.SheetProvider, {
|
|
276
284
|
sheet,
|
|
277
285
|
graph
|
|
286
|
+
}, /* @__PURE__ */ import_react.default.createElement(import_react_ui_stack.StackItem.Content, {
|
|
287
|
+
toolbar: true,
|
|
288
|
+
statusbar: true,
|
|
289
|
+
classNames: "border-bs border-separator"
|
|
278
290
|
}, /* @__PURE__ */ import_react.default.createElement(Toolbar.Root, {
|
|
279
291
|
role
|
|
280
|
-
}, /* @__PURE__ */ import_react.default.createElement(Toolbar.Styles, null), /* @__PURE__ */ import_react.default.createElement(Toolbar.Alignment, null), /* @__PURE__ */ import_react.default.createElement(Toolbar.Separator, null), /* @__PURE__ */ import_react.default.createElement(Toolbar.Actions, null)), /* @__PURE__ */ import_react.default.createElement(
|
|
281
|
-
role: "none",
|
|
282
|
-
className: "border-bs border-separator grid cols-1 rows-[1fr_min-content] min-bs-0"
|
|
283
|
-
}, /* @__PURE__ */ import_react.default.createElement(import_chunk_7AWAC3R3.GridSheet, null), /* @__PURE__ */ import_react.default.createElement(FunctionEditor, null)));
|
|
292
|
+
}, /* @__PURE__ */ import_react.default.createElement(Toolbar.Styles, null), /* @__PURE__ */ import_react.default.createElement(Toolbar.Alignment, null), /* @__PURE__ */ import_react.default.createElement(Toolbar.Separator, null), /* @__PURE__ */ import_react.default.createElement(Toolbar.Actions, null)), /* @__PURE__ */ import_react.default.createElement(import_chunk_OO24XJBV.GridSheet, null), /* @__PURE__ */ import_react.default.createElement(FunctionEditor, null))) : null;
|
|
284
293
|
};
|
|
285
294
|
var SheetContainer_default = SheetContainer;
|
|
286
|
-
//# sourceMappingURL=SheetContainer-
|
|
295
|
+
//# sourceMappingURL=SheetContainer-MPFKXY26.cjs.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": ["import_react", "import_react_ui", "FunctionEditor", "model", "cursor", "range", "useSheetContext", "value", "formula", "getCellValue", "isFormula", "graph", "mapFunctionBindingFromId", "mapFormulaIndicesToRefs", "String", "React", "div", "className", "mx", "rangeToA1Notation", "addressToA1Notation", "Icon", "icon", "classNames", "span", "buttonStyles", "tooltipProps", "side", "ToolbarSeparator", "role", "ToolbarItem", "itemType", "children", "props", "Invoker", "NaturalToolbar", "ToggleGroupItem", "Toggle", "Button", "Tooltip", "Root", "Trigger", "asChild", "variant", "size", "Portal", "Content", "Arrow", "ToolbarContextProvider", "useToolbarContext", "createContext", "ToolbarRoot", "id", "cursorFallbackRange", "hasAttention", "useAttention", "dispatch", "useIntentDispatcher", "handleAction", "useCallback", "action", "key", "index", "sheet", "ranges", "findIndex", "inRange", "rangeFromIndex", "from", "nextRangeEntity", "rangeToIndex", "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", "useComputeGraph", "SheetProvider", "StackItem", "toolbar", "statusbar", "GridSheet"]
|
|
7
|
+
}
|
|
@@ -16,22 +16,23 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
16
16
|
return to;
|
|
17
17
|
};
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var
|
|
20
|
-
__export(
|
|
19
|
+
var chunk_2ZVZI2KJ_exports = {};
|
|
20
|
+
__export(chunk_2ZVZI2KJ_exports, {
|
|
21
21
|
SHEET_PLUGIN: () => SHEET_PLUGIN,
|
|
22
22
|
meta_default: () => meta_default
|
|
23
23
|
});
|
|
24
|
-
module.exports = __toCommonJS(
|
|
24
|
+
module.exports = __toCommonJS(chunk_2ZVZI2KJ_exports);
|
|
25
25
|
var SHEET_PLUGIN = "dxos.org/plugin/sheet";
|
|
26
26
|
var meta_default = {
|
|
27
27
|
id: SHEET_PLUGIN,
|
|
28
28
|
name: "Sheet",
|
|
29
29
|
description: "A simple spreadsheet plugin.",
|
|
30
|
-
icon: "ph--grid-nine--regular"
|
|
30
|
+
icon: "ph--grid-nine--regular",
|
|
31
|
+
source: "https://github.com/dxos/dxos/tree/main/packages/plugins/plugin-sheet"
|
|
31
32
|
};
|
|
32
33
|
// Annotate the CommonJS export names for ESM import in node:
|
|
33
34
|
0 && (module.exports = {
|
|
34
35
|
SHEET_PLUGIN,
|
|
35
36
|
meta_default
|
|
36
37
|
});
|
|
37
|
-
//# sourceMappingURL=chunk-
|
|
38
|
+
//# sourceMappingURL=chunk-2ZVZI2KJ.cjs.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
|
}
|
|
@@ -16,22 +16,24 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
16
16
|
return to;
|
|
17
17
|
};
|
|
18
18
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
-
var
|
|
20
|
-
__export(
|
|
19
|
+
var chunk_AWKOWDMI_exports = {};
|
|
20
|
+
__export(chunk_AWKOWDMI_exports, {
|
|
21
21
|
CellValue: () => CellValue,
|
|
22
22
|
Range: () => Range,
|
|
23
23
|
RowColumnMeta: () => RowColumnMeta,
|
|
24
24
|
SheetAction: () => SheetAction,
|
|
25
25
|
SheetType: () => SheetType
|
|
26
26
|
});
|
|
27
|
-
module.exports = __toCommonJS(
|
|
28
|
-
var
|
|
27
|
+
module.exports = __toCommonJS(chunk_AWKOWDMI_exports);
|
|
28
|
+
var import_chunk_2ZVZI2KJ = require("./chunk-2ZVZI2KJ.cjs");
|
|
29
29
|
var import_echo_schema = require("@dxos/echo-schema");
|
|
30
30
|
var import_types = require("@dxos/plugin-space/types");
|
|
31
|
-
var SHEET_ACTION = `${
|
|
31
|
+
var SHEET_ACTION = `${import_chunk_2ZVZI2KJ.SHEET_PLUGIN}/action`;
|
|
32
32
|
var SheetAction;
|
|
33
33
|
(function(SheetAction2) {
|
|
34
34
|
SheetAction2[SheetAction2["CREATE"] = `${SHEET_ACTION}/create`] = "CREATE";
|
|
35
|
+
SheetAction2[SheetAction2["INSERT_AXIS"] = `${SHEET_ACTION}/axis-insert`] = "INSERT_AXIS";
|
|
36
|
+
SheetAction2[SheetAction2["DROP_AXIS"] = `${SHEET_ACTION}/axis-drop`] = "DROP_AXIS";
|
|
35
37
|
})(SheetAction || (SheetAction = {}));
|
|
36
38
|
var CellValue = import_echo_schema.S.Struct({
|
|
37
39
|
// TODO(burdon): How to store dates (datetime, date, time), percentages, etc.
|
|
@@ -48,7 +50,7 @@ var RowColumnMeta = import_echo_schema.S.Struct({
|
|
|
48
50
|
size: import_echo_schema.S.optional(import_echo_schema.S.Number)
|
|
49
51
|
});
|
|
50
52
|
var SheetType = class extends (0, import_echo_schema.TypedObject)({
|
|
51
|
-
typename: "dxos.org/type/
|
|
53
|
+
typename: "dxos.org/type/Sheet",
|
|
52
54
|
version: "0.1.0"
|
|
53
55
|
})({
|
|
54
56
|
name: import_echo_schema.S.optional(import_echo_schema.S.String),
|
|
@@ -85,4 +87,4 @@ var SheetType = class extends (0, import_echo_schema.TypedObject)({
|
|
|
85
87
|
SheetAction,
|
|
86
88
|
SheetType
|
|
87
89
|
});
|
|
88
|
-
//# sourceMappingURL=chunk-
|
|
90
|
+
//# sourceMappingURL=chunk-AWKOWDMI.cjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/types.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport type {\n GraphBuilderProvides,\n IntentResolverProvides,\n MetadataRecordsProvides,\n SurfaceProvides,\n TranslationsProvides,\n IntentData,\n} from '@dxos/app-framework';\nimport { ref, S, TypedObject } from '@dxos/echo-schema';\nimport { type SchemaProvides } from '@dxos/plugin-client';\nimport { type MarkdownExtensionProvides } from '@dxos/plugin-markdown';\nimport { type SpaceInitProvides } from '@dxos/plugin-space';\nimport { ThreadType } from '@dxos/plugin-space/types';\nimport { type StackProvides } from '@dxos/plugin-stack';\nimport { type DxGridAxis } from '@dxos/react-ui-grid';\n\nimport { SHEET_PLUGIN } from './meta';\nimport { type SheetModel } from './model';\n\nconst SHEET_ACTION = `${SHEET_PLUGIN}/action`;\n\nexport enum SheetAction {\n CREATE = `${SHEET_ACTION}/create`,\n INSERT_AXIS = `${SHEET_ACTION}/axis-insert`,\n DROP_AXIS = `${SHEET_ACTION}/axis-drop`,\n}\n\nexport type RestoreAxis = {\n axis: DxGridAxis;\n axisIndex: string;\n index: number;\n axisMeta?: S.Schema.Type<typeof RowColumnMeta>;\n values: CellScalarValue[];\n};\n\nexport namespace SheetAction {\n export type Create = IntentData<{ sheet: SheetType }>;\n export type InsertAxis = IntentData<{ model: SheetModel; axis: DxGridAxis; index: number; count?: number }>;\n export type DropAxis = IntentData<{ model: SheetModel; axis: DxGridAxis; axisIndex: string }>;\n export type DropAxisRestore = IntentData<RestoreAxis & { model: SheetModel }>;\n}\n\n// TODO(Zan): Move this to the plugin-space plugin or another common location\n// when we implement comments in sheets.\n// This is currently duplicated in a few places.\ntype ThreadProvides<T> = {\n thread: {\n predicate: (obj: any) => obj is T;\n createSort: (obj: T) => (anchorA: string | undefined, anchorB: string | undefined) => number;\n };\n};\n\nexport type SheetPluginProvides = SurfaceProvides &\n IntentResolverProvides &\n GraphBuilderProvides &\n MarkdownExtensionProvides &\n MetadataRecordsProvides &\n TranslationsProvides &\n SchemaProvides &\n SpaceInitProvides &\n StackProvides &\n ThreadProvides<SheetType>;\n\nexport type CellScalarValue = number | string | boolean | null;\n\nexport const CellValue = S.Struct({\n // TODO(burdon): How to store dates (datetime, date, time), percentages, etc.\n // Consider import/export; natural access for other plugins. Special handling for currency (precision).\n // TODO(burdon): Automerge (long string) or short string or number.\n value: S.Any,\n});\n\nexport type CellValue = S.Schema.Type<typeof CellValue>;\n\n// TODO(burdon): IMPORTANT: Reconcile with Field definition.\nexport const Range = S.Struct({\n range: S.String,\n key: S.String,\n value: S.String,\n});\n\nexport type Range = S.Schema.Type<typeof Range>;\n\n// TODO(burdon): Visibility, locked, frozen, etc.\nexport const RowColumnMeta = S.Struct({\n size: S.optional(S.Number),\n});\n\n// TODO(burdon): Index to all updates when rows/columns are inserted/deleted.\nexport class SheetType extends TypedObject({ typename: 'dxos.org/type/Sheet', version: '0.1.0' })({\n name: S.optional(S.String),\n\n // Sparse map of cells referenced by index.\n cells: S.mutable(S.Record({ key: S.String, value: S.mutable(CellValue) })),\n\n // Ordered row indices.\n rows: S.mutable(S.Array(S.String)),\n\n // Ordered column indices.\n columns: S.mutable(S.Array(S.String)),\n\n // Row metadata referenced by index.\n rowMeta: S.mutable(S.Record({ key: S.String, value: S.mutable(RowColumnMeta) })),\n\n // Column metadata referenced by index.\n columnMeta: S.mutable(S.Record({ key: S.String, value: S.mutable(RowColumnMeta) })),\n\n // Cell formatting referenced by indexed range.\n ranges: S.mutable(S.Array(Range)),\n\n // Threads associated with the sheet\n threads: S.optional(S.mutable(S.Array(ref(ThreadType)))),\n}) {}\n\nexport type SheetSize = {\n rows: number;\n columns: number;\n};\n\nexport type CreateSheetOptions = {\n name?: string;\n cells?: Record<string, CellValue>;\n} & Partial<SheetSize>;\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAYA,yBAAoC;AAIpC,mBAA2B;AAO3B,IAAMA,eAAe,GAAGC,kCAAAA;;UAEZC,cAAAA;wCACD,GAAGF,YAAAA,SAAqB,IAAA;6CACnB,GAAGA,YAAAA,cAA0B,IAAA;2CAC/B,GAAGA,YAAAA,YAAwB,IAAA;GAH7BE,gBAAAA,cAAAA,CAAAA,EAAAA;AA4CL,IAAMC,YAAYC,qBAAEC,OAAO;;;;EAIhCC,OAAOF,qBAAEG;AACX,CAAA;AAKO,IAAMC,QAAQJ,qBAAEC,OAAO;EAC5BI,OAAOL,qBAAEM;EACTC,KAAKP,qBAAEM;EACPJ,OAAOF,qBAAEM;AACX,CAAA;AAKO,IAAME,gBAAgBR,qBAAEC,OAAO;EACpCQ,MAAMT,qBAAEU,SAASV,qBAAEW,MAAM;AAC3B,CAAA;AAGO,IAAMC,YAAN,kBAAwBC,gCAAY;EAAEC,UAAU;EAAuBC,SAAS;AAAQ,CAAA,EAAG;EAChGC,MAAMhB,qBAAEU,SAASV,qBAAEM,MAAM;;EAGzBW,OAAOjB,qBAAEkB,QAAQlB,qBAAEmB,OAAO;IAAEZ,KAAKP,qBAAEM;IAAQJ,OAAOF,qBAAEkB,QAAQnB,SAAAA;EAAW,CAAA,CAAA;;EAGvEqB,MAAMpB,qBAAEkB,QAAQlB,qBAAEqB,MAAMrB,qBAAEM,MAAM,CAAA;;EAGhCgB,SAAStB,qBAAEkB,QAAQlB,qBAAEqB,MAAMrB,qBAAEM,MAAM,CAAA;;EAGnCiB,SAASvB,qBAAEkB,QAAQlB,qBAAEmB,OAAO;IAAEZ,KAAKP,qBAAEM;IAAQJ,OAAOF,qBAAEkB,QAAQV,aAAAA;EAAe,CAAA,CAAA;;EAG7EgB,YAAYxB,qBAAEkB,QAAQlB,qBAAEmB,OAAO;IAAEZ,KAAKP,qBAAEM;IAAQJ,OAAOF,qBAAEkB,QAAQV,aAAAA;EAAe,CAAA,CAAA;;EAGhFiB,QAAQzB,qBAAEkB,QAAQlB,qBAAEqB,MAAMjB,KAAAA,CAAAA;;EAG1BsB,SAAS1B,qBAAEU,SAASV,qBAAEkB,QAAQlB,qBAAEqB,UAAMM,wBAAIC,uBAAAA,CAAAA,CAAAA,CAAAA;AAC5C,CAAA,EAAA;AAAI;",
|
|
6
|
+
"names": ["SHEET_ACTION", "SHEET_PLUGIN", "SheetAction", "CellValue", "S", "Struct", "value", "Any", "Range", "range", "String", "key", "RowColumnMeta", "size", "optional", "Number", "SheetType", "TypedObject", "typename", "version", "name", "cells", "mutable", "Record", "rows", "Array", "columns", "rowMeta", "columnMeta", "ranges", "threads", "ref", "ThreadType"]
|
|
7
|
+
}
|