@dxos/plugin-sheet 0.6.14-main.7bd9c89 → 0.6.14-main.8b352a0
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-AKWROARP.mjs → SheetContainer-R65IDJHN.mjs} +54 -58
- package/dist/lib/browser/SheetContainer-R65IDJHN.mjs.map +7 -0
- package/dist/lib/browser/{chunk-BWN5DZWZ.mjs → chunk-5KVQ5IPW.mjs} +3 -12
- package/dist/lib/browser/chunk-5KVQ5IPW.mjs.map +7 -0
- package/dist/lib/browser/{chunk-FGMFOW6U.mjs → chunk-I2DKJ72A.mjs} +570 -669
- package/dist/lib/browser/chunk-I2DKJ72A.mjs.map +7 -0
- package/dist/lib/browser/{chunk-GSV5QNLD.mjs → chunk-KCYJSOFB.mjs} +252 -33
- package/dist/lib/browser/chunk-KCYJSOFB.mjs.map +7 -0
- package/dist/lib/browser/{graph-M4IQ76QX.mjs → compute-graph-SJT67236.mjs} +4 -2
- package/dist/lib/browser/index.mjs +62 -20
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/types.mjs +1 -1
- package/dist/lib/node/{SheetContainer-N5IQGEFL.cjs → SheetContainer-6BO4C5X2.cjs} +52 -62
- package/dist/lib/node/SheetContainer-6BO4C5X2.cjs.map +7 -0
- package/dist/lib/node/{chunk-NZARD7UP.cjs → chunk-2XJ5I4UF.cjs} +6 -15
- package/dist/lib/node/chunk-2XJ5I4UF.cjs.map +7 -0
- package/dist/lib/node/{chunk-53BMSUIK.cjs → chunk-DEPJHN47.cjs} +534 -646
- package/dist/lib/node/chunk-DEPJHN47.cjs.map +7 -0
- package/dist/lib/node/{chunk-5XPK2V4A.cjs → chunk-JF5XNTF3.cjs} +257 -28
- package/dist/lib/node/chunk-JF5XNTF3.cjs.map +7 -0
- package/dist/lib/node/{graph-Q3N2X26H.cjs → compute-graph-AQBDL7HO.cjs} +21 -19
- package/dist/lib/node/compute-graph-AQBDL7HO.cjs.map +7 -0
- package/dist/lib/node/index.cjs +70 -31
- package/dist/lib/node/index.cjs.map +4 -4
- package/dist/lib/node/meta.json +1 -1
- package/dist/lib/node/types.cjs +6 -6
- package/dist/lib/node/types.cjs.map +1 -1
- package/dist/lib/node-esm/{SheetContainer-46PBMF2E.mjs → SheetContainer-MJXC5E3P.mjs} +54 -58
- package/dist/lib/node-esm/SheetContainer-MJXC5E3P.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-T3PRH7QS.mjs → chunk-25V7WY4R.mjs} +570 -669
- package/dist/lib/node-esm/chunk-25V7WY4R.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-WFDTY3IC.mjs → chunk-5TXLF6PL.mjs} +3 -12
- package/dist/lib/node-esm/chunk-5TXLF6PL.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-5WPZCXNS.mjs → chunk-XBEHKYO7.mjs} +251 -33
- package/dist/lib/node-esm/chunk-XBEHKYO7.mjs.map +7 -0
- package/dist/lib/node-esm/{graph-SMPUMOV2.mjs → compute-graph-FRCKXEYK.mjs} +4 -2
- package/dist/lib/node-esm/index.mjs +62 -20
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/types.mjs +1 -1
- package/dist/types/src/SheetPlugin.d.ts.map +1 -1
- package/dist/types/src/components/ComputeGraph/ComputeGraphContextProvider.d.ts +3 -1
- package/dist/types/src/components/ComputeGraph/ComputeGraphContextProvider.d.ts.map +1 -1
- package/dist/types/src/components/GridSheet/GridSheet.d.ts.map +1 -1
- package/dist/types/src/components/GridSheet/GridSheet.stories.d.ts.map +1 -1
- package/dist/types/src/components/GridSheet/util.d.ts +1 -2
- package/dist/types/src/components/GridSheet/util.d.ts.map +1 -1
- package/dist/types/src/components/RangeList/RangeList.d.ts +7 -0
- package/dist/types/src/components/RangeList/RangeList.d.ts.map +1 -0
- package/dist/types/src/components/RangeList/index.d.ts +2 -0
- package/dist/types/src/components/RangeList/index.d.ts.map +1 -0
- 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/SheetContext/SheetContext.d.ts +7 -5
- package/dist/types/src/components/SheetContext/SheetContext.d.ts.map +1 -1
- package/dist/types/src/components/Toolbar/Toolbar.d.ts +1 -1
- package/dist/types/src/components/Toolbar/Toolbar.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +5 -2
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/compute-graph/compute-graph-registry.d.ts.map +1 -0
- package/dist/types/src/{graph → compute-graph}/compute-graph.d.ts +1 -1
- package/dist/types/src/compute-graph/compute-graph.d.ts.map +1 -0
- package/dist/types/src/compute-graph/compute-graph.stories.d.ts.map +1 -0
- package/dist/types/src/compute-graph/compute-graph.test.d.ts.map +1 -0
- package/dist/types/src/compute-graph/compute-node.d.ts.map +1 -0
- package/dist/types/src/compute-graph/functions/async-function.d.ts.map +1 -0
- package/dist/types/src/compute-graph/functions/edge-function.d.ts.map +1 -0
- package/dist/types/src/compute-graph/functions/function-defs.d.ts.map +1 -0
- package/dist/types/src/compute-graph/functions/index.d.ts.map +1 -0
- package/dist/types/src/compute-graph/hyperformula.test.d.ts.map +1 -0
- package/dist/types/src/compute-graph/index.d.ts.map +1 -0
- package/dist/types/src/compute-graph/testing/index.d.ts.map +1 -0
- package/dist/types/src/compute-graph/testing/test-builder.d.ts.map +1 -0
- package/dist/types/src/compute-graph/testing/test-plugin.d.ts.map +1 -0
- package/dist/types/src/compute-graph/util.d.ts.map +1 -0
- package/dist/types/src/defs/index.d.ts +1 -1
- package/dist/types/src/defs/index.d.ts.map +1 -1
- package/dist/types/src/defs/sheet-range-types.d.ts +1 -1
- package/dist/types/src/defs/sheet-range-types.d.ts.map +1 -1
- package/dist/types/src/defs/types.d.ts +6 -0
- package/dist/types/src/defs/types.d.ts.map +1 -1
- package/dist/types/src/defs/util.d.ts +2 -6
- package/dist/types/src/defs/util.d.ts.map +1 -1
- package/dist/types/src/extensions/compute.d.ts +1 -1
- package/dist/types/src/extensions/compute.d.ts.map +1 -1
- package/dist/types/src/extensions/editor/extension.d.ts +23 -3
- package/dist/types/src/extensions/editor/extension.d.ts.map +1 -1
- package/dist/types/src/index.d.ts +1 -1
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/integrations/index.d.ts +2 -0
- package/dist/types/src/integrations/index.d.ts.map +1 -0
- package/dist/types/src/integrations/thread-ranges.d.ts +7 -0
- package/dist/types/src/integrations/thread-ranges.d.ts.map +1 -0
- package/dist/types/src/model/index.d.ts +1 -1
- package/dist/types/src/model/index.d.ts.map +1 -1
- package/dist/types/src/model/sheet-model.d.ts +1 -1
- package/dist/types/src/model/sheet-model.d.ts.map +1 -1
- package/dist/types/src/{hooks → model}/useSheetModel.d.ts +1 -1
- package/dist/types/src/model/useSheetModel.d.ts.map +1 -0
- package/dist/types/src/serializer.d.ts +4 -0
- package/dist/types/src/serializer.d.ts.map +1 -0
- package/dist/types/src/testing/testing.d.ts +1 -1
- package/dist/types/src/testing/testing.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +13 -3
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types.d.ts +4 -30
- package/dist/types/src/types.d.ts.map +1 -1
- package/package.json +43 -50
- package/src/SheetPlugin.tsx +25 -12
- package/src/components/ComputeGraph/ComputeGraphContextProvider.tsx +19 -2
- package/src/components/FunctionEditor/FunctionEditor.tsx +5 -5
- package/src/components/GridSheet/GridSheet.stories.tsx +3 -1
- package/src/components/GridSheet/GridSheet.tsx +118 -22
- package/src/components/GridSheet/SheetCellEditor.stories.tsx +1 -1
- package/src/components/GridSheet/util.ts +24 -14
- package/src/components/RangeList/RangeList.tsx +53 -0
- package/src/components/RangeList/index.ts +5 -0
- package/src/components/SheetContainer/SheetContainer.stories.tsx +3 -3
- package/src/components/SheetContainer/SheetContainer.tsx +10 -4
- package/src/components/SheetContext/SheetContext.tsx +43 -20
- package/src/components/Toolbar/Toolbar.tsx +44 -41
- package/src/components/index.ts +1 -0
- package/src/{graph → compute-graph}/compute-graph.stories.tsx +2 -1
- package/src/{graph → compute-graph}/compute-graph.ts +5 -2
- package/src/{graph → compute-graph}/compute-node.ts +2 -3
- package/src/defs/index.ts +1 -1
- package/src/defs/sheet-range-types.ts +5 -4
- package/src/defs/types.ts +6 -1
- package/src/defs/util.ts +3 -19
- package/src/extensions/compute.stories.tsx +2 -2
- package/src/extensions/compute.ts +2 -2
- package/src/extensions/editor/extension.test.ts +1 -1
- package/src/extensions/editor/extension.ts +48 -23
- package/src/index.ts +2 -2
- package/src/integrations/index.ts +5 -0
- package/src/integrations/thread-ranges.ts +101 -0
- package/src/model/index.ts +1 -1
- package/src/model/sheet-model.test.ts +1 -1
- package/src/model/sheet-model.ts +13 -8
- package/src/{hooks → model}/useSheetModel.ts +1 -1
- package/src/serializer.ts +27 -0
- package/src/testing/testing.tsx +1 -1
- package/src/translations.ts +13 -3
- package/src/types.ts +4 -2
- package/dist/lib/browser/SheetContainer-AKWROARP.mjs.map +0 -7
- package/dist/lib/browser/chunk-BWN5DZWZ.mjs.map +0 -7
- package/dist/lib/browser/chunk-FGMFOW6U.mjs.map +0 -7
- package/dist/lib/browser/chunk-GSV5QNLD.mjs.map +0 -7
- package/dist/lib/node/SheetContainer-N5IQGEFL.cjs.map +0 -7
- package/dist/lib/node/chunk-53BMSUIK.cjs.map +0 -7
- package/dist/lib/node/chunk-5XPK2V4A.cjs.map +0 -7
- package/dist/lib/node/chunk-NZARD7UP.cjs.map +0 -7
- package/dist/lib/node/graph-Q3N2X26H.cjs.map +0 -7
- package/dist/lib/node-esm/SheetContainer-46PBMF2E.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-5WPZCXNS.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-T3PRH7QS.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-WFDTY3IC.mjs.map +0 -7
- package/dist/types/src/graph/compute-graph-registry.d.ts.map +0 -1
- package/dist/types/src/graph/compute-graph.d.ts.map +0 -1
- package/dist/types/src/graph/compute-graph.stories.d.ts.map +0 -1
- package/dist/types/src/graph/compute-graph.test.d.ts.map +0 -1
- package/dist/types/src/graph/compute-node.d.ts.map +0 -1
- package/dist/types/src/graph/functions/async-function.d.ts.map +0 -1
- package/dist/types/src/graph/functions/edge-function.d.ts.map +0 -1
- package/dist/types/src/graph/functions/function-defs.d.ts.map +0 -1
- package/dist/types/src/graph/functions/index.d.ts.map +0 -1
- package/dist/types/src/graph/hyperformula.test.d.ts.map +0 -1
- package/dist/types/src/graph/index.d.ts.map +0 -1
- package/dist/types/src/graph/testing/index.d.ts.map +0 -1
- package/dist/types/src/graph/testing/test-builder.d.ts.map +0 -1
- package/dist/types/src/graph/testing/test-plugin.d.ts.map +0 -1
- package/dist/types/src/graph/util.d.ts.map +0 -1
- package/dist/types/src/hooks/hooks.stories.d.ts +0 -6
- package/dist/types/src/hooks/hooks.stories.d.ts.map +0 -1
- package/dist/types/src/hooks/index.d.ts +0 -4
- package/dist/types/src/hooks/index.d.ts.map +0 -1
- package/dist/types/src/hooks/threads.d.ts +0 -8
- package/dist/types/src/hooks/threads.d.ts.map +0 -1
- package/dist/types/src/hooks/useComputeGraph.d.ts +0 -7
- package/dist/types/src/hooks/useComputeGraph.d.ts.map +0 -1
- package/dist/types/src/hooks/useSheetModel.d.ts.map +0 -1
- package/dist/types/src/model/decorations.d.ts +0 -26
- package/dist/types/src/model/decorations.d.ts.map +0 -1
- package/src/hooks/hooks.stories.tsx +0 -53
- package/src/hooks/index.ts +0 -7
- package/src/hooks/threads.ts +0 -147
- package/src/hooks/useComputeGraph.ts +0 -28
- package/src/model/decorations.ts +0 -66
- /package/dist/lib/browser/{graph-M4IQ76QX.mjs.map → compute-graph-SJT67236.mjs.map} +0 -0
- /package/dist/lib/node-esm/{graph-SMPUMOV2.mjs.map → compute-graph-FRCKXEYK.mjs.map} +0 -0
- /package/dist/types/src/{graph → compute-graph}/compute-graph-registry.d.ts +0 -0
- /package/dist/types/src/{graph → compute-graph}/compute-graph.stories.d.ts +0 -0
- /package/dist/types/src/{graph → compute-graph}/compute-graph.test.d.ts +0 -0
- /package/dist/types/src/{graph → compute-graph}/compute-node.d.ts +0 -0
- /package/dist/types/src/{graph → compute-graph}/functions/async-function.d.ts +0 -0
- /package/dist/types/src/{graph → compute-graph}/functions/edge-function.d.ts +0 -0
- /package/dist/types/src/{graph → compute-graph}/functions/function-defs.d.ts +0 -0
- /package/dist/types/src/{graph → compute-graph}/functions/index.d.ts +0 -0
- /package/dist/types/src/{graph → compute-graph}/hyperformula.test.d.ts +0 -0
- /package/dist/types/src/{graph → compute-graph}/index.d.ts +0 -0
- /package/dist/types/src/{graph → compute-graph}/testing/index.d.ts +0 -0
- /package/dist/types/src/{graph → compute-graph}/testing/test-builder.d.ts +0 -0
- /package/dist/types/src/{graph → compute-graph}/testing/test-plugin.d.ts +0 -0
- /package/dist/types/src/{graph → compute-graph}/util.d.ts +0 -0
- /package/src/{graph → compute-graph}/compute-graph-registry.ts +0 -0
- /package/src/{graph → compute-graph}/compute-graph.test.ts +0 -0
- /package/src/{graph → compute-graph}/functions/async-function.ts +0 -0
- /package/src/{graph → compute-graph}/functions/edge-function.ts +0 -0
- /package/src/{graph → compute-graph}/functions/function-defs.ts +0 -0
- /package/src/{graph → compute-graph}/functions/index.ts +0 -0
- /package/src/{graph → compute-graph}/hyperformula.test.ts +0 -0
- /package/src/{graph → compute-graph}/index.ts +0 -0
- /package/src/{graph → compute-graph}/testing/index.ts +0 -0
- /package/src/{graph → compute-graph}/testing/test-builder.ts +0 -0
- /package/src/{graph → compute-graph}/testing/test-plugin.ts +0 -0
- /package/src/{graph → compute-graph}/util.ts +0 -0
|
@@ -26,15 +26,15 @@ 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_6BO4C5X2_exports = {};
|
|
30
|
+
__export(SheetContainer_6BO4C5X2_exports, {
|
|
31
31
|
default: () => SheetContainer_default
|
|
32
32
|
});
|
|
33
|
-
module.exports = __toCommonJS(
|
|
34
|
-
var
|
|
35
|
-
var
|
|
33
|
+
module.exports = __toCommonJS(SheetContainer_6BO4C5X2_exports);
|
|
34
|
+
var import_chunk_DEPJHN47 = require("./chunk-DEPJHN47.cjs");
|
|
35
|
+
var import_chunk_JF5XNTF3 = require("./chunk-JF5XNTF3.cjs");
|
|
36
|
+
var import_chunk_2XJ5I4UF = require("./chunk-2XJ5I4UF.cjs");
|
|
36
37
|
var import_chunk_QIFIGEKV = require("./chunk-QIFIGEKV.cjs");
|
|
37
|
-
var import_chunk_5XPK2V4A = require("./chunk-5XPK2V4A.cjs");
|
|
38
38
|
var import_react = __toESM(require("react"));
|
|
39
39
|
var import_react2 = __toESM(require("react"));
|
|
40
40
|
var import_react_ui = require("@dxos/react-ui");
|
|
@@ -46,14 +46,14 @@ var import_react_ui2 = require("@dxos/react-ui");
|
|
|
46
46
|
var import_react_ui_attention = require("@dxos/react-ui-attention");
|
|
47
47
|
var import_util = require("@dxos/util");
|
|
48
48
|
var FunctionEditor = () => {
|
|
49
|
-
const { model, cursor, range } = (0,
|
|
49
|
+
const { model, cursor, range } = (0, import_chunk_DEPJHN47.useSheetContext)();
|
|
50
50
|
let value;
|
|
51
|
-
let
|
|
51
|
+
let formula = false;
|
|
52
52
|
if (cursor) {
|
|
53
53
|
value = model.getCellValue(cursor);
|
|
54
|
-
if (
|
|
54
|
+
if ((0, import_chunk_JF5XNTF3.isFormula)(value)) {
|
|
55
55
|
value = model.graph.mapFunctionBindingFromId(model.mapFormulaIndicesToRefs(value));
|
|
56
|
-
|
|
56
|
+
formula = true;
|
|
57
57
|
} else if (value != null) {
|
|
58
58
|
value = String(value);
|
|
59
59
|
}
|
|
@@ -64,13 +64,13 @@ var FunctionEditor = () => {
|
|
|
64
64
|
className: "flex gap-4 items-center"
|
|
65
65
|
}, /* @__PURE__ */ import_react2.default.createElement("div", {
|
|
66
66
|
className: "flex w-16 items-center font-mono"
|
|
67
|
-
}, range && (0,
|
|
67
|
+
}, range && (0, import_chunk_JF5XNTF3.rangeToA1Notation)(range) || cursor && (0, import_chunk_JF5XNTF3.addressToA1Notation)(cursor)), /* @__PURE__ */ import_react2.default.createElement("div", {
|
|
68
68
|
className: "flex gap-2 items-center"
|
|
69
69
|
}, /* @__PURE__ */ import_react2.default.createElement(import_react_ui.Icon, {
|
|
70
70
|
icon: "ph--function--regular",
|
|
71
71
|
classNames: [
|
|
72
72
|
"text-greenText",
|
|
73
|
-
|
|
73
|
+
formula ? "visible" : "invisible"
|
|
74
74
|
]
|
|
75
75
|
}), /* @__PURE__ */ import_react2.default.createElement("span", {
|
|
76
76
|
className: "font-mono"
|
|
@@ -103,23 +103,16 @@ var ToolbarItem = ({ itemType, icon, children, ...props }) => {
|
|
|
103
103
|
var [ToolbarContextProvider, useToolbarContext] = (0, import_react_context.createContext)("Toolbar");
|
|
104
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,
|
|
106
|
+
const { id, model, cursorFallbackRange, cursor } = (0, import_chunk_DEPJHN47.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 (cursor) {
|
|
113
|
-
const index = model.sheet.ranges?.findIndex((
|
|
114
|
-
const nextRange = range ? {
|
|
115
|
-
from: range.from,
|
|
116
|
-
to: range.to ?? range.from
|
|
117
|
-
} : {
|
|
118
|
-
from: cursor,
|
|
119
|
-
to: cursor
|
|
120
|
-
};
|
|
111
|
+
case "alignment":
|
|
112
|
+
if (cursor && cursorFallbackRange) {
|
|
113
|
+
const index = model.sheet.ranges?.findIndex((range) => range.key === action.key && (0, import_chunk_JF5XNTF3.inRange)((0, import_chunk_JF5XNTF3.rangeFromIndex)(model.sheet, range.range), cursor));
|
|
121
114
|
const nextRangeEntity = {
|
|
122
|
-
range:
|
|
115
|
+
range: (0, import_chunk_JF5XNTF3.rangeToIndex)(model.sheet, cursorFallbackRange),
|
|
123
116
|
key: action.key,
|
|
124
117
|
value: action.value
|
|
125
118
|
};
|
|
@@ -132,39 +125,34 @@ var ToolbarRoot = ({ children, role, classNames }) => {
|
|
|
132
125
|
break;
|
|
133
126
|
case "style":
|
|
134
127
|
if (action.value === "unset") {
|
|
135
|
-
const index = model.sheet.ranges?.findIndex((
|
|
128
|
+
const index = model.sheet.ranges?.findIndex((range) => range.key === action.key);
|
|
136
129
|
if (index >= 0) {
|
|
137
130
|
model.sheet.ranges?.splice(index, 1);
|
|
138
131
|
}
|
|
139
|
-
} else if (
|
|
140
|
-
const nextRange = range ? {
|
|
141
|
-
from: range.from,
|
|
142
|
-
to: range.to ?? range.from
|
|
143
|
-
} : {
|
|
144
|
-
from: cursor,
|
|
145
|
-
to: cursor
|
|
146
|
-
};
|
|
132
|
+
} else if (cursorFallbackRange) {
|
|
147
133
|
model.sheet.ranges?.push({
|
|
148
|
-
range:
|
|
134
|
+
range: (0, import_chunk_JF5XNTF3.rangeToIndex)(model.sheet, cursorFallbackRange),
|
|
149
135
|
key: action.key,
|
|
150
136
|
value: action.value
|
|
151
137
|
});
|
|
152
138
|
}
|
|
153
139
|
break;
|
|
154
140
|
case "comment": {
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
141
|
+
if (cursorFallbackRange) {
|
|
142
|
+
void dispatch({
|
|
143
|
+
action: "dxos.org/plugin/thread/action/create",
|
|
144
|
+
data: {
|
|
145
|
+
cursor: (0, import_chunk_DEPJHN47.completeCellRangeToThreadCursor)(cursorFallbackRange),
|
|
146
|
+
name: action.cellContent,
|
|
147
|
+
subject: model.sheet
|
|
148
|
+
}
|
|
149
|
+
});
|
|
150
|
+
}
|
|
163
151
|
}
|
|
164
152
|
}
|
|
165
153
|
}, [
|
|
166
154
|
model.sheet,
|
|
167
|
-
|
|
155
|
+
cursorFallbackRange,
|
|
168
156
|
cursor,
|
|
169
157
|
dispatch
|
|
170
158
|
]);
|
|
@@ -198,10 +186,10 @@ var alignmentOptions = [
|
|
|
198
186
|
}
|
|
199
187
|
];
|
|
200
188
|
var Alignment = () => {
|
|
201
|
-
const { cursor, model } = (0,
|
|
189
|
+
const { cursor, model } = (0, import_chunk_DEPJHN47.useSheetContext)();
|
|
202
190
|
const { onAction } = useToolbarContext("Alignment");
|
|
203
191
|
const { t } = (0, import_react_ui2.useTranslation)(import_chunk_QIFIGEKV.SHEET_PLUGIN);
|
|
204
|
-
const value = (0, import_react3.useMemo)(() => cursor ? model.sheet.ranges?.find(({ range, key }) => key ===
|
|
192
|
+
const value = (0, import_react3.useMemo)(() => cursor ? model.sheet.ranges?.find(({ range, key }) => key === import_chunk_JF5XNTF3.alignKey && (0, import_chunk_JF5XNTF3.inRange)((0, import_chunk_JF5XNTF3.rangeFromIndex)(model.sheet, range), cursor))?.value : void 0, [
|
|
205
193
|
cursor,
|
|
206
194
|
model.sheet.ranges
|
|
207
195
|
]);
|
|
@@ -209,7 +197,7 @@ var Alignment = () => {
|
|
|
209
197
|
type: "single",
|
|
210
198
|
value,
|
|
211
199
|
onValueChange: (value2) => onAction?.({
|
|
212
|
-
key:
|
|
200
|
+
key: import_chunk_JF5XNTF3.alignKey,
|
|
213
201
|
value: value2
|
|
214
202
|
})
|
|
215
203
|
}, alignmentOptions.map(({ value: value2, icon }) => /* @__PURE__ */ import_react3.default.createElement(ToolbarItem, {
|
|
@@ -217,7 +205,10 @@ var Alignment = () => {
|
|
|
217
205
|
key: value2,
|
|
218
206
|
value: value2,
|
|
219
207
|
icon
|
|
220
|
-
}, t(
|
|
208
|
+
}, t("toolbar action label", {
|
|
209
|
+
key: t(`range key ${import_chunk_JF5XNTF3.alignKey} label`),
|
|
210
|
+
value: t(`range value ${value2} label`)
|
|
211
|
+
}))));
|
|
221
212
|
};
|
|
222
213
|
var styleOptions = [
|
|
223
214
|
{
|
|
@@ -226,10 +217,10 @@ var styleOptions = [
|
|
|
226
217
|
}
|
|
227
218
|
];
|
|
228
219
|
var Styles = () => {
|
|
229
|
-
const { cursor, model } = (0,
|
|
220
|
+
const { cursor, model } = (0, import_chunk_DEPJHN47.useSheetContext)();
|
|
230
221
|
const { onAction } = useToolbarContext("Styles");
|
|
231
222
|
const { t } = (0, import_react_ui2.useTranslation)(import_chunk_QIFIGEKV.SHEET_PLUGIN);
|
|
232
|
-
const activeValues = (0, import_react3.useMemo)(() => cursor ? model.sheet.ranges?.filter(({ range, key }) => key === "style" && (0,
|
|
223
|
+
const activeValues = (0, import_react3.useMemo)(() => cursor ? model.sheet.ranges?.filter(({ range, key }) => key === "style" && (0, import_chunk_JF5XNTF3.inRange)((0, import_chunk_JF5XNTF3.rangeFromIndex)(model.sheet, range), cursor)).reduce((acc, { value }) => {
|
|
233
224
|
acc.add(value);
|
|
234
225
|
return acc;
|
|
235
226
|
}, /* @__PURE__ */ new Set()) : void 0, [
|
|
@@ -249,33 +240,31 @@ var Styles = () => {
|
|
|
249
240
|
};
|
|
250
241
|
var Actions = () => {
|
|
251
242
|
const { onAction } = useToolbarContext("Actions");
|
|
252
|
-
const {
|
|
243
|
+
const { cursorFallbackRange, cursor, model } = (0, import_chunk_DEPJHN47.useSheetContext)();
|
|
253
244
|
const { t } = (0, import_react_ui2.useTranslation)(import_chunk_QIFIGEKV.SHEET_PLUGIN);
|
|
254
245
|
const overlapsCommentAnchor = (model.sheet.threads ?? []).filter(import_util.nonNullable).filter((thread) => thread.status !== "resolved").some((thread) => {
|
|
255
|
-
if (!
|
|
246
|
+
if (!cursorFallbackRange) {
|
|
256
247
|
return false;
|
|
257
248
|
}
|
|
258
|
-
return (0,
|
|
249
|
+
return (0, import_chunk_JF5XNTF3.rangeToIndex)(model.sheet, cursorFallbackRange) === thread.anchor;
|
|
259
250
|
});
|
|
260
|
-
const
|
|
261
|
-
const cursorOnly = hasCursor && !range && !overlapsCommentAnchor;
|
|
262
|
-
const tooltipLabelKey = !hasCursor ? "no cursor label" : overlapsCommentAnchor ? "selection overlaps existing comment label" : range ? "comment ranges not supported label" : "comment label";
|
|
251
|
+
const tooltipLabelKey = !cursor ? "no cursor label" : overlapsCommentAnchor ? "selection overlaps existing comment label" : "comment label";
|
|
263
252
|
return /* @__PURE__ */ import_react3.default.createElement(ToolbarItem, {
|
|
264
253
|
itemType: "button",
|
|
265
254
|
value: "comment",
|
|
266
255
|
icon: "ph--chat-text--regular",
|
|
267
256
|
"data-testid": "editor.toolbar.comment",
|
|
268
257
|
onClick: () => {
|
|
269
|
-
if (!cursor) {
|
|
258
|
+
if (!(cursorFallbackRange && cursor)) {
|
|
270
259
|
return;
|
|
271
260
|
}
|
|
272
261
|
return onAction?.({
|
|
273
262
|
key: "comment",
|
|
274
|
-
value: (0,
|
|
263
|
+
value: (0, import_chunk_JF5XNTF3.rangeToIndex)(model.sheet, cursorFallbackRange),
|
|
275
264
|
cellContent: model.getCellText(cursor)
|
|
276
265
|
});
|
|
277
266
|
},
|
|
278
|
-
disabled: !
|
|
267
|
+
disabled: !cursor || overlapsCommentAnchor
|
|
279
268
|
}, t(tooltipLabelKey));
|
|
280
269
|
};
|
|
281
270
|
var Toolbar = {
|
|
@@ -285,8 +274,9 @@ var Toolbar = {
|
|
|
285
274
|
Styles,
|
|
286
275
|
Actions
|
|
287
276
|
};
|
|
288
|
-
var SheetContainer = ({
|
|
289
|
-
|
|
277
|
+
var SheetContainer = ({ space, sheet, role }) => {
|
|
278
|
+
const graph = (0, import_chunk_DEPJHN47.useComputeGraph)(space);
|
|
279
|
+
return graph ? /* @__PURE__ */ import_react.default.createElement(import_chunk_DEPJHN47.SheetProvider, {
|
|
290
280
|
sheet,
|
|
291
281
|
graph
|
|
292
282
|
}, /* @__PURE__ */ import_react.default.createElement(Toolbar.Root, {
|
|
@@ -294,7 +284,7 @@ var SheetContainer = ({ graph, sheet, role }) => {
|
|
|
294
284
|
}, /* @__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("div", {
|
|
295
285
|
role: "none",
|
|
296
286
|
className: "border-bs border-separator grid cols-1 rows-[1fr_min-content] min-bs-0"
|
|
297
|
-
}, /* @__PURE__ */ import_react.default.createElement(
|
|
287
|
+
}, /* @__PURE__ */ import_react.default.createElement(import_chunk_DEPJHN47.GridSheet, null), /* @__PURE__ */ import_react.default.createElement(FunctionEditor, null))) : null;
|
|
298
288
|
};
|
|
299
289
|
var SheetContainer_default = SheetContainer;
|
|
300
|
-
//# sourceMappingURL=SheetContainer-
|
|
290
|
+
//# sourceMappingURL=SheetContainer-6BO4C5X2.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';\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 <Toolbar.Root role={role}>\n <Toolbar.Styles />\n <Toolbar.Alignment />\n <Toolbar.Separator />\n <Toolbar.Actions />\n </Toolbar.Root>\n <div role='none' className='border-bs border-separator grid cols-1 rows-[1fr_min-content] min-bs-0'>\n <GridSheet />\n <FunctionEditor />\n </div>\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\n className={mx(\n 'flex shrink-0 justify-between items-center px-4 py-1 text-sm border-bs !border-separator attention-surface',\n )}\n >\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, useMemo } 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 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;\n\nexport type ToolbarActionType = ToolbarAction['key'];\n\nexport type ToolbarActionHandler = (action: ToolbarAction) => void;\n\nexport type ToolbarProps = ThemedClassName<\n PropsWithChildren<{\n role?: string;\n }>\n>;\n\nconst [ToolbarContextProvider, useToolbarContext] = createContext<{ onAction: (action: ToolbarAction) => void }>(\n 'Toolbar',\n);\n\n// TODO(Zan): Factor out, copied this from MarkdownPlugin.\nconst sectionToolbarLayout =\n 'bs-[--rail-action] bg-[--sticky-bg] sticky block-start-0 __-block-start-px transition-opacity';\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: ToolbarAction) => {\n switch (action.key) {\n case 'alignment':\n if (cursor && cursorFallbackRange) {\n const index = model.sheet.ranges?.findIndex(\n (range) => range.key === action.key && inRange(rangeFromIndex(model.sheet, range.range), cursor),\n );\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 {\n model.sheet.ranges?.splice(index, 1, nextRangeEntity);\n }\n }\n break;\n case 'style':\n if (action.value === 'unset') {\n const index = model.sheet.ranges?.findIndex((range) => range.key === action.key);\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\n classNames={[\n ...(role === 'section'\n ? ['z-[2] group-focus-within/section:visible', !hasAttention && 'invisible', sectionToolbarLayout]\n : ['attention-surface']),\n classNames,\n ]}\n >\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 const value = useMemo(\n () =>\n cursor\n ? model.sheet.ranges?.find(\n ({ range, key }) => key === alignKey && inRange(rangeFromIndex(model.sheet, range), cursor),\n )?.value\n : undefined,\n [cursor, model.sheet.ranges],\n );\n\n return (\n <NaturalToolbar.ToggleGroup\n type='single'\n value={value}\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>[] = [{ value: 'highlight', icon: 'ph--highlighter--regular' }];\n\nconst Styles = () => {\n const { cursor, model } = useSheetContext();\n const { onAction } = useToolbarContext('Styles');\n const { t } = useTranslation(SHEET_PLUGIN);\n\n const activeValues = useMemo(\n () =>\n cursor\n ? model.sheet.ranges\n ?.filter(({ range, key }) => key === 'style' && inRange(rangeFromIndex(model.sheet, range), cursor))\n .reduce((acc, { value }) => {\n acc.add(value);\n return acc;\n }, new Set())\n : undefined,\n [cursor, model.sheet.ranges],\n );\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) => onAction?.({ key: 'style', value: nextPressed ? value : 'unset' })}\n icon={icon}\n >\n {t(`toolbar ${value} label`)}\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 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 && cursor)) {\n return;\n }\n return onAction?.({\n key: 'comment',\n value: rangeToIndex(model.sheet, cursorFallbackRange),\n cellContent: model.getCellText(cursor),\n });\n }}\n disabled={!cursor || 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", "sectionToolbarLayout", "ToolbarRoot", "id", "cursorFallbackRange", "hasAttention", "useAttention", "dispatch", "useIntentDispatcher", "handleAction", "useCallback", "action", "key", "index", "sheet", "ranges", "findIndex", "inRange", "rangeFromIndex", "nextRangeEntity", "rangeToIndex", "push", "splice", "data", "completeCellRangeToThreadCursor", "name", "cellContent", "subject", "onAction", "alignmentOptions", "Alignment", "t", "useTranslation", "SHEET_PLUGIN", "useMemo", "find", "alignKey", "undefined", "ToggleGroup", "type", "onValueChange", "map", "styleOptions", "Styles", "activeValues", "filter", "reduce", "acc", "add", "Set", "pressed", "has", "onPressedChange", "nextPressed", "Actions", "overlapsCommentAnchor", "threads", "nonNullable", "thread", "status", "some", "anchor", "tooltipLabelKey", "data-testid", "onClick", "getCellText", "disabled", "Toolbar", "Separator", "SheetContainer", "space", "useComputeGraph", "SheetProvider", "GridSheet"]
|
|
7
|
+
}
|
|
@@ -16,15 +16,15 @@ 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_2XJ5I4UF_exports = {};
|
|
20
|
+
__export(chunk_2XJ5I4UF_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(
|
|
27
|
+
module.exports = __toCommonJS(chunk_2XJ5I4UF_exports);
|
|
28
28
|
var import_chunk_QIFIGEKV = require("./chunk-QIFIGEKV.cjs");
|
|
29
29
|
var import_echo_schema = require("@dxos/echo-schema");
|
|
30
30
|
var import_types = require("@dxos/plugin-space/types");
|
|
@@ -40,16 +40,7 @@ var CellValue = import_echo_schema.S.Struct({
|
|
|
40
40
|
value: import_echo_schema.S.Any
|
|
41
41
|
});
|
|
42
42
|
var Range = import_echo_schema.S.Struct({
|
|
43
|
-
range: import_echo_schema.S.
|
|
44
|
-
from: import_echo_schema.S.Struct({
|
|
45
|
-
col: import_echo_schema.S.Number,
|
|
46
|
-
row: import_echo_schema.S.Number
|
|
47
|
-
}),
|
|
48
|
-
to: import_echo_schema.S.Struct({
|
|
49
|
-
col: import_echo_schema.S.Number,
|
|
50
|
-
row: import_echo_schema.S.Number
|
|
51
|
-
})
|
|
52
|
-
}),
|
|
43
|
+
range: import_echo_schema.S.String,
|
|
53
44
|
key: import_echo_schema.S.String,
|
|
54
45
|
value: import_echo_schema.S.String
|
|
55
46
|
});
|
|
@@ -57,7 +48,7 @@ var RowColumnMeta = import_echo_schema.S.Struct({
|
|
|
57
48
|
size: import_echo_schema.S.optional(import_echo_schema.S.Number)
|
|
58
49
|
});
|
|
59
50
|
var SheetType = class extends (0, import_echo_schema.TypedObject)({
|
|
60
|
-
typename: "dxos.org/type/
|
|
51
|
+
typename: "dxos.org/type/Sheet",
|
|
61
52
|
version: "0.1.0"
|
|
62
53
|
})({
|
|
63
54
|
name: import_echo_schema.S.optional(import_echo_schema.S.String),
|
|
@@ -94,4 +85,4 @@ var SheetType = class extends (0, import_echo_schema.TypedObject)({
|
|
|
94
85
|
SheetAction,
|
|
95
86
|
SheetType
|
|
96
87
|
});
|
|
97
|
-
//# sourceMappingURL=chunk-
|
|
88
|
+
//# sourceMappingURL=chunk-2XJ5I4UF.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} 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';\n\nimport { SHEET_PLUGIN } from './meta';\n\nconst SHEET_ACTION = `${SHEET_PLUGIN}/action`;\n\nexport enum SheetAction {\n CREATE = `${SHEET_ACTION}/create`,\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": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAWA,yBAAoC;AAIpC,mBAA2B;AAK3B,IAAMA,eAAe,GAAGC,kCAAAA;;UAEZC,cAAAA;wCACD,GAAGF,YAAAA,SAAqB,IAAA;GADvBE,gBAAAA,cAAAA,CAAAA,EAAAA;AA2BL,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
|
+
}
|