@dxos/plugin-sheet 0.8.4-main.406dc2a → 0.8.4-main.548089c
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-VL34UND4.mjs → SheetContainer-BDLFSILO.mjs} +14 -16
- package/dist/lib/browser/SheetContainer-BDLFSILO.mjs.map +7 -0
- package/dist/lib/browser/{anchor-sort-3N44DS5F.mjs → anchor-sort-FCQ5OZZK.mjs} +8 -9
- package/dist/lib/browser/anchor-sort-FCQ5OZZK.mjs.map +7 -0
- package/dist/lib/browser/{chunk-ZMPNHFIP.mjs → chunk-73AV3NH6.mjs} +2 -2
- package/dist/lib/browser/{chunk-ZJWJMX4E.mjs → chunk-7KRJ2IT5.mjs} +23 -23
- package/dist/lib/browser/chunk-7KRJ2IT5.mjs.map +7 -0
- package/dist/lib/browser/{chunk-SSN4HYJL.mjs → chunk-7VEWYJJN.mjs} +5 -5
- package/dist/lib/browser/{chunk-SSN4HYJL.mjs.map → chunk-7VEWYJJN.mjs.map} +2 -2
- package/dist/lib/browser/{chunk-ADK2HW4A.mjs → chunk-DVJ3QW3F.mjs} +217 -216
- package/dist/lib/browser/chunk-DVJ3QW3F.mjs.map +7 -0
- package/dist/lib/browser/chunk-FWFAAGXL.mjs +28 -0
- package/dist/lib/browser/chunk-FWFAAGXL.mjs.map +7 -0
- package/dist/lib/browser/{compute-graph-registry-MF65HGGM.mjs → compute-graph-registry-AP5RA7W3.mjs} +3 -3
- package/dist/lib/browser/{compute-graph-registry-MF65HGGM.mjs.map → compute-graph-registry-AP5RA7W3.mjs.map} +2 -2
- package/dist/lib/browser/index.mjs +16 -16
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/{intent-resolver-BQLV6IAA.mjs → intent-resolver-66OAYVQF.mjs} +5 -5
- package/dist/lib/browser/intent-resolver-66OAYVQF.mjs.map +7 -0
- package/dist/lib/browser/{markdown-RMTMI237.mjs → markdown-B6VKYY2S.mjs} +4 -4
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{react-surface-7ZDMQDCT.mjs → react-surface-GXHVZHKU.mjs} +11 -10
- package/dist/lib/browser/react-surface-GXHVZHKU.mjs.map +7 -0
- package/dist/lib/browser/types/index.mjs +4 -12
- package/dist/lib/node-esm/{SheetContainer-NWJ7L6FC.mjs → SheetContainer-CK5HSJPL.mjs} +14 -16
- package/dist/lib/node-esm/SheetContainer-CK5HSJPL.mjs.map +7 -0
- package/dist/lib/node-esm/{anchor-sort-YL2OZHYM.mjs → anchor-sort-ZE7IS7SH.mjs} +8 -9
- package/dist/lib/node-esm/anchor-sort-ZE7IS7SH.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-LN6ZSAII.mjs → chunk-44YTKTMP.mjs} +2 -2
- package/dist/lib/node-esm/{chunk-BZAPYBSH.mjs → chunk-4H2EHVWE.mjs} +217 -216
- package/dist/lib/node-esm/chunk-4H2EHVWE.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-IK4O7FUJ.mjs → chunk-4QV4AGWK.mjs} +5 -5
- package/dist/lib/node-esm/{chunk-IK4O7FUJ.mjs.map → chunk-4QV4AGWK.mjs.map} +2 -2
- package/dist/lib/node-esm/chunk-HILDMVPL.mjs +29 -0
- package/dist/lib/node-esm/chunk-HILDMVPL.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-YL7BVJPC.mjs → chunk-SMYD6H7Q.mjs} +23 -23
- package/dist/lib/node-esm/chunk-SMYD6H7Q.mjs.map +7 -0
- package/dist/lib/node-esm/{compute-graph-registry-P2O5LDFZ.mjs → compute-graph-registry-UMQ5UYCL.mjs} +3 -3
- package/dist/lib/node-esm/{compute-graph-registry-P2O5LDFZ.mjs.map → compute-graph-registry-UMQ5UYCL.mjs.map} +2 -2
- package/dist/lib/node-esm/index.mjs +16 -16
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/{intent-resolver-MV5ZFXAQ.mjs → intent-resolver-VNKIMQQT.mjs} +5 -5
- package/dist/lib/node-esm/intent-resolver-VNKIMQQT.mjs.map +7 -0
- package/dist/lib/node-esm/{markdown-EDIWHA3P.mjs → markdown-VKY7HXU2.mjs} +4 -4
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/{react-surface-TUME5MM2.mjs → react-surface-45L45WN6.mjs} +11 -10
- package/dist/lib/node-esm/react-surface-45L45WN6.mjs.map +7 -0
- package/dist/lib/node-esm/types/index.mjs +4 -12
- package/dist/types/src/SheetPlugin.d.ts.map +1 -1
- package/dist/types/src/capabilities/anchor-sort.d.ts +2 -4
- package/dist/types/src/capabilities/anchor-sort.d.ts.map +1 -1
- package/dist/types/src/capabilities/index.d.ts +1 -4
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface.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 +2 -2
- package/dist/types/src/components/GridSheet/GridSheet.stories.d.ts.map +1 -1
- package/dist/types/src/components/GridSheet/util.d.ts.map +1 -1
- package/dist/types/src/components/RangeList/RangeList.d.ts +2 -2
- package/dist/types/src/components/RangeList/RangeList.d.ts.map +1 -1
- package/dist/types/src/components/SheetContainer/SheetContainer.d.ts +2 -2
- package/dist/types/src/components/SheetContainer/SheetContainer.d.ts.map +1 -1
- package/dist/types/src/components/SheetContainer/SheetContainer.stories.d.ts +2 -2
- package/dist/types/src/components/SheetContainer/SheetContainer.stories.d.ts.map +1 -1
- package/dist/types/src/components/SheetContext/SheetContext.d.ts +2 -2
- package/dist/types/src/components/SheetContext/SheetContext.d.ts.map +1 -1
- package/dist/types/src/components/SheetToolbar/SheetToolbar.d.ts +3 -4
- package/dist/types/src/components/SheetToolbar/SheetToolbar.d.ts.map +1 -1
- package/dist/types/src/integrations/thread-ranges.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts.map +1 -1
- package/dist/types/src/model/sheet-model.d.ts +4 -4
- package/dist/types/src/model/sheet-model.d.ts.map +1 -1
- package/dist/types/src/model/testing.d.ts +2 -2
- package/dist/types/src/model/testing.d.ts.map +1 -1
- package/dist/types/src/model/useSheetModel.d.ts +2 -2
- package/dist/types/src/model/useSheetModel.d.ts.map +1 -1
- package/dist/types/src/serializer.d.ts +2 -2
- package/dist/types/src/serializer.d.ts.map +1 -1
- package/dist/types/src/testing/data.d.ts +2 -2
- package/dist/types/src/testing/data.d.ts.map +1 -1
- package/dist/types/src/testing/testing.d.ts +26 -2
- package/dist/types/src/testing/testing.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +2 -2
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/{schema.d.ts → Sheet.d.ts} +36 -3
- package/dist/types/src/types/Sheet.d.ts.map +1 -0
- package/dist/types/src/types/index.d.ts +1 -1
- package/dist/types/src/types/index.d.ts.map +1 -1
- package/dist/types/src/types/sheet-range-types.d.ts +2 -2
- package/dist/types/src/types/sheet-range-types.d.ts.map +1 -1
- package/dist/types/src/types/types.d.ts +0 -9
- package/dist/types/src/types/types.d.ts.map +1 -1
- package/dist/types/src/types/util.d.ts +9 -10
- package/dist/types/src/types/util.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +51 -50
- package/src/SheetPlugin.tsx +6 -5
- package/src/capabilities/anchor-sort.ts +7 -8
- package/src/capabilities/compute-graph-registry.ts +1 -1
- package/src/capabilities/intent-resolver.ts +2 -2
- package/src/capabilities/react-surface.tsx +6 -5
- package/src/components/ComputeGraph/compute-graph.stories.tsx +8 -8
- package/src/components/FunctionEditor/FunctionEditor.tsx +1 -1
- package/src/components/GridSheet/GridSheet.stories.tsx +2 -2
- package/src/components/GridSheet/GridSheet.tsx +16 -4
- package/src/components/GridSheet/SheetCellEditor.stories.tsx +4 -4
- package/src/components/GridSheet/util.ts +9 -3
- package/src/components/RangeList/RangeList.tsx +5 -5
- package/src/components/SheetContainer/SheetContainer.stories.tsx +9 -6
- package/src/components/SheetContainer/SheetContainer.tsx +5 -4
- package/src/components/SheetContext/SheetContext.tsx +4 -4
- package/src/components/SheetToolbar/SheetToolbar.tsx +14 -16
- package/src/extensions/compute.stories.tsx +2 -2
- package/src/integrations/thread-ranges.ts +10 -16
- package/src/meta.ts +6 -2
- package/src/model/sheet-model.test.ts +4 -4
- package/src/model/sheet-model.ts +3 -3
- package/src/model/testing.ts +4 -4
- package/src/model/useSheetModel.ts +2 -2
- package/src/sanity.test.ts +3 -4
- package/src/serializer.ts +3 -3
- package/src/testing/data.ts +2 -2
- package/src/testing/testing.tsx +3 -3
- package/src/translations.ts +2 -2
- package/src/types/Sheet.ts +103 -0
- package/src/types/index.ts +1 -1
- package/src/types/sheet-range-types.ts +2 -2
- package/src/types/types.ts +3 -13
- package/src/types/util.ts +10 -38
- package/dist/lib/browser/SheetContainer-VL34UND4.mjs.map +0 -7
- package/dist/lib/browser/anchor-sort-3N44DS5F.mjs.map +0 -7
- package/dist/lib/browser/chunk-ADK2HW4A.mjs.map +0 -7
- package/dist/lib/browser/chunk-CSBSADPQ.mjs +0 -16
- package/dist/lib/browser/chunk-CSBSADPQ.mjs.map +0 -7
- package/dist/lib/browser/chunk-ZJWJMX4E.mjs.map +0 -7
- package/dist/lib/browser/intent-resolver-BQLV6IAA.mjs.map +0 -7
- package/dist/lib/browser/react-surface-7ZDMQDCT.mjs.map +0 -7
- package/dist/lib/node-esm/SheetContainer-NWJ7L6FC.mjs.map +0 -7
- package/dist/lib/node-esm/anchor-sort-YL2OZHYM.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-BZAPYBSH.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-H3GSD33H.mjs +0 -18
- package/dist/lib/node-esm/chunk-H3GSD33H.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-YL7BVJPC.mjs.map +0 -7
- package/dist/lib/node-esm/intent-resolver-MV5ZFXAQ.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-TUME5MM2.mjs.map +0 -7
- package/dist/types/src/types/schema.d.ts.map +0 -1
- package/src/types/schema.ts +0 -61
- /package/dist/lib/browser/{chunk-ZMPNHFIP.mjs.map → chunk-73AV3NH6.mjs.map} +0 -0
- /package/dist/lib/browser/{markdown-RMTMI237.mjs.map → markdown-B6VKYY2S.mjs.map} +0 -0
- /package/dist/lib/node-esm/{chunk-LN6ZSAII.mjs.map → chunk-44YTKTMP.mjs.map} +0 -0
- /package/dist/lib/node-esm/{markdown-EDIWHA3P.mjs.map → markdown-VKY7HXU2.mjs.map} +0 -0
|
@@ -3,22 +3,22 @@ import {
|
|
|
3
3
|
SheetProvider,
|
|
4
4
|
useComputeGraph,
|
|
5
5
|
useSheetContext
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-7KRJ2IT5.mjs";
|
|
7
7
|
import {
|
|
8
8
|
alignKey,
|
|
9
9
|
mapFormulaIndicesToRefs,
|
|
10
10
|
rangeFromIndex,
|
|
11
11
|
rangeToIndex
|
|
12
|
-
} from "./chunk-
|
|
13
|
-
import "./chunk-
|
|
12
|
+
} from "./chunk-DVJ3QW3F.mjs";
|
|
13
|
+
import "./chunk-7VEWYJJN.mjs";
|
|
14
14
|
import {
|
|
15
15
|
meta
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-FWFAAGXL.mjs";
|
|
17
17
|
|
|
18
18
|
// src/components/SheetContainer/SheetContainer.tsx
|
|
19
19
|
import { useSignals as _useSignals4 } from "@preact-signals/safe-react/tracking";
|
|
20
20
|
import React3 from "react";
|
|
21
|
-
import {
|
|
21
|
+
import { Obj } from "@dxos/echo";
|
|
22
22
|
import { StackItem } from "@dxos/react-ui-stack";
|
|
23
23
|
|
|
24
24
|
// src/components/FunctionEditor/FunctionEditor.tsx
|
|
@@ -42,7 +42,7 @@ var FunctionEditor = () => {
|
|
|
42
42
|
}
|
|
43
43
|
}
|
|
44
44
|
return /* @__PURE__ */ React.createElement("div", {
|
|
45
|
-
className: "flex shrink-0 justify-between items-center
|
|
45
|
+
className: "flex shrink-0 justify-between items-center pli-4 plb-1 text-sm bg-toolbarSurface border-bs !border-subduedSeparator"
|
|
46
46
|
}, /* @__PURE__ */ React.createElement("div", {
|
|
47
47
|
className: "flex gap-4 items-center"
|
|
48
48
|
}, /* @__PURE__ */ React.createElement("div", {
|
|
@@ -65,9 +65,9 @@ var FunctionEditor = () => {
|
|
|
65
65
|
|
|
66
66
|
// src/components/SheetToolbar/SheetToolbar.tsx
|
|
67
67
|
import { useSignals as _useSignals3 } from "@preact-signals/safe-react/tracking";
|
|
68
|
-
import {
|
|
68
|
+
import { Atom } from "@effect-atom/atom-react";
|
|
69
69
|
import React2, { useMemo as useMemo2 } from "react";
|
|
70
|
-
import { useAppGraph } from "@dxos/app-framework";
|
|
70
|
+
import { useAppGraph } from "@dxos/app-framework/react";
|
|
71
71
|
import { MenuProvider, ToolbarMenu, createGapSeparator, rxFromSignal, useMenuActions } from "@dxos/react-ui-menu";
|
|
72
72
|
|
|
73
73
|
// src/components/SheetToolbar/align.ts
|
|
@@ -254,7 +254,7 @@ var useToolbarState = (initialState = {}) => {
|
|
|
254
254
|
|
|
255
255
|
// src/components/SheetToolbar/SheetToolbar.tsx
|
|
256
256
|
var createToolbarActions = (model, state, cursorFallbackRange, customActions) => {
|
|
257
|
-
return
|
|
257
|
+
return Atom.make((get) => {
|
|
258
258
|
const align = get(rxFromSignal(() => createAlign(model, state, cursorFallbackRange)));
|
|
259
259
|
const style = get(rxFromSignal(() => createStyle(model, state, cursorFallbackRange)));
|
|
260
260
|
const gap = createGapSeparator();
|
|
@@ -278,7 +278,7 @@ var createToolbarActions = (model, state, cursorFallbackRange, customActions) =>
|
|
|
278
278
|
return graph;
|
|
279
279
|
});
|
|
280
280
|
};
|
|
281
|
-
var SheetToolbar = ({ id
|
|
281
|
+
var SheetToolbar = ({ id }) => {
|
|
282
282
|
var _effect = _useSignals3();
|
|
283
283
|
try {
|
|
284
284
|
const { model, cursorFallbackRange } = useSheetContext();
|
|
@@ -287,7 +287,7 @@ var SheetToolbar = ({ id, classNames }) => {
|
|
|
287
287
|
useStyleState(state);
|
|
288
288
|
const { graph } = useAppGraph();
|
|
289
289
|
const customActions = useMemo2(() => {
|
|
290
|
-
return
|
|
290
|
+
return Atom.make((get) => {
|
|
291
291
|
const actions = get(graph.actions(id));
|
|
292
292
|
const nodes = actions.filter((action) => action.properties.disposition === "toolbar");
|
|
293
293
|
return {
|
|
@@ -311,9 +311,7 @@ var SheetToolbar = ({ id, classNames }) => {
|
|
|
311
311
|
return /* @__PURE__ */ React2.createElement(MenuProvider, {
|
|
312
312
|
...menu,
|
|
313
313
|
attendableId: id
|
|
314
|
-
}, /* @__PURE__ */ React2.createElement(ToolbarMenu,
|
|
315
|
-
classNames
|
|
316
|
-
}));
|
|
314
|
+
}, /* @__PURE__ */ React2.createElement(ToolbarMenu, null));
|
|
317
315
|
} finally {
|
|
318
316
|
_effect.f();
|
|
319
317
|
}
|
|
@@ -336,7 +334,7 @@ var SheetContainer = ({ space, sheet, role, ignoreAttention }) => {
|
|
|
336
334
|
role === "story" && "bs-full"
|
|
337
335
|
]
|
|
338
336
|
}, /* @__PURE__ */ React3.createElement(SheetToolbar, {
|
|
339
|
-
id:
|
|
337
|
+
id: Obj.getDXN(sheet).toString()
|
|
340
338
|
}), /* @__PURE__ */ React3.createElement(GridSheet, null), /* @__PURE__ */ React3.createElement(FunctionEditor, null))) : null;
|
|
341
339
|
} finally {
|
|
342
340
|
_effect.f();
|
|
@@ -348,4 +346,4 @@ var SheetContainer_default = SheetContainer;
|
|
|
348
346
|
export {
|
|
349
347
|
SheetContainer_default as default
|
|
350
348
|
};
|
|
351
|
-
//# sourceMappingURL=SheetContainer-
|
|
349
|
+
//# sourceMappingURL=SheetContainer-BDLFSILO.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/components/SheetContainer/SheetContainer.tsx", "../../../src/components/FunctionEditor/FunctionEditor.tsx", "../../../src/components/SheetToolbar/SheetToolbar.tsx", "../../../src/components/SheetToolbar/align.ts", "../../../src/components/SheetToolbar/style.ts", "../../../src/components/SheetToolbar/useToolbarState.ts", "../../../src/components/SheetContainer/index.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { Obj } from '@dxos/echo';\nimport { type Space } from '@dxos/react-client/echo';\nimport { StackItem } from '@dxos/react-ui-stack';\n\nimport { type Sheet } from '../../types';\nimport { useComputeGraph } from '../ComputeGraph';\nimport { FunctionEditor } from '../FunctionEditor';\nimport { GridSheet } from '../GridSheet';\nimport { SheetProvider } from '../SheetContext';\nimport { SheetToolbar } from '../SheetToolbar';\n\nexport type SheetContainerProps = {\n space: Space;\n sheet: Sheet.Sheet;\n role?: string;\n ignoreAttention?: boolean;\n};\n\nexport const SheetContainer = ({ space, sheet, role, ignoreAttention }: SheetContainerProps) => {\n const graph = useComputeGraph(space);\n\n return graph ? (\n <SheetProvider sheet={sheet} graph={graph} ignoreAttention={ignoreAttention}>\n <StackItem.Content\n toolbar\n statusbar\n classNames={[role === 'section' && 'aspect-video', role === 'story' && 'bs-full']}\n >\n <SheetToolbar id={Obj.getDXN(sheet).toString()} />\n <GridSheet />\n <FunctionEditor />\n </StackItem.Content>\n </SheetProvider>\n ) : null;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React from 'react';\n\nimport { addressToA1Notation, isFormula, rangeToA1Notation } from '@dxos/compute';\nimport { Icon } from '@dxos/react-ui';\n\nimport { mapFormulaIndicesToRefs } from '../../types';\nimport { useSheetContext } from '../SheetContext';\n\nexport const FunctionEditor = () => {\n const { model, cursor, range } = useSheetContext();\n\n let value;\n let formula = false;\n if (cursor) {\n value = model.getCellValue(cursor);\n if (isFormula(value)) {\n value = model.graph.mapFunctionBindingFromId(mapFormulaIndicesToRefs(model.sheet, value));\n formula = true;\n } else if (value != null) {\n value = String(value);\n }\n }\n\n return (\n <div className='flex shrink-0 justify-between items-center pli-4 plb-1 text-sm bg-toolbarSurface border-bs !border-subduedSeparator'>\n <div className='flex gap-4 items-center'>\n <div className='flex w-16 items-center font-mono'>\n {(range && rangeToA1Notation(range)) || (cursor && addressToA1Notation(cursor))}\n </div>\n <div className='flex gap-2 items-center'>\n <Icon icon='ph--function--regular' classNames={['text-greenText', formula ? 'visible' : 'invisible']} />\n <span className='font-mono'>{value}</span>\n </div>\n </div>\n </div>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { Atom } from '@effect-atom/atom-react';\nimport React, { type PropsWithChildren, useMemo } from 'react';\n\nimport { useAppGraph } from '@dxos/app-framework/react';\nimport { type CompleteCellRange } from '@dxos/compute';\nimport {\n type ActionGraphProps,\n MenuProvider,\n ToolbarMenu,\n createGapSeparator,\n rxFromSignal,\n useMenuActions,\n} from '@dxos/react-ui-menu';\n\nimport { type SheetModel } from '../../model';\nimport { useSheetContext } from '../SheetContext';\n\nimport { createAlign, useAlignState } from './align';\nimport { createStyle, useStyleState } from './style';\nimport { type ToolbarState, useToolbarState } from './useToolbarState';\n\nconst createToolbarActions = (\n model: SheetModel,\n state: ToolbarState,\n cursorFallbackRange?: CompleteCellRange,\n customActions?: Atom.Atom<ActionGraphProps>,\n): Atom.Atom<ActionGraphProps> => {\n return Atom.make((get) => {\n const align = get(rxFromSignal(() => createAlign(model, state, cursorFallbackRange)));\n const style = get(rxFromSignal(() => createStyle(model, state, cursorFallbackRange)));\n const gap = createGapSeparator();\n\n const graph: ActionGraphProps = {\n nodes: [...align.nodes, ...style.nodes, ...gap.nodes],\n edges: [...align.edges, ...style.edges, ...gap.edges],\n };\n\n if (customActions) {\n const custom = get(customActions);\n graph.nodes.push(...custom.nodes);\n graph.edges.push(...custom.edges);\n }\n\n return graph;\n });\n};\n\nexport type SheetToolbarProps = PropsWithChildren<{ id: string }>;\n\nexport const SheetToolbar = ({ id }: SheetToolbarProps) => {\n const { model, cursorFallbackRange } = useSheetContext();\n const state = useToolbarState({});\n useAlignState(state);\n useStyleState(state);\n\n const { graph } = useAppGraph();\n const customActions = useMemo(() => {\n return Atom.make((get) => {\n const actions = get(graph.actions(id));\n const nodes = actions.filter((action) => action.properties.disposition === 'toolbar');\n return {\n nodes,\n edges: nodes.map((node) => ({ source: 'root', target: node.id })),\n };\n });\n }, [graph]);\n\n const actionsCreator = useMemo(\n () => createToolbarActions(model, state, cursorFallbackRange, customActions),\n [model, state, cursorFallbackRange, customActions],\n );\n const menu = useMenuActions(actionsCreator);\n\n return (\n <MenuProvider {...menu} attendableId={id}>\n <ToolbarMenu />\n </MenuProvider>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useEffect } from 'react';\n\nimport { type CompleteCellRange, inRange } from '@dxos/compute';\nimport { type ToolbarMenuActionGroupProperties, createMenuAction, createMenuItemGroup } from '@dxos/react-ui-menu';\n\nimport { meta } from '../../meta';\nimport { type SheetModel } from '../../model';\nimport { type AlignKey, type AlignValue, alignKey, rangeFromIndex, rangeToIndex } from '../../types';\nimport { useSheetContext } from '../SheetContext';\n\nimport { type ToolbarState } from './useToolbarState';\n\nexport type AlignAction = { key: AlignKey; value: AlignValue };\n\nexport type AlignState = { [alignKey]: AlignValue | undefined };\n\nconst aligns: Record<AlignValue, string> = {\n start: 'ph--text-align-left--regular',\n center: 'ph--text-align-center--regular',\n end: 'ph--text-align-right--regular',\n};\n\nexport const useAlignState = (state: Partial<AlignState>) => {\n const { cursor, model } = useSheetContext();\n useEffect(() => {\n // TODO(thure): Can this O(n) call be memoized?\n state[alignKey] = (\n cursor\n ? model.sheet.ranges?.findLast(\n ({ range, key }) => key === alignKey && inRange(rangeFromIndex(model.sheet, range), cursor),\n )?.value\n : undefined\n ) as AlignValue | undefined;\n }, [cursor, model.sheet]);\n};\n\nconst createAlignGroupAction = (value?: AlignValue) =>\n createMenuItemGroup('align', {\n label: ['align label', { ns: meta.id }],\n variant: 'toggleGroup',\n selectCardinality: 'single',\n value: `${alignKey}--${value}`,\n } as ToolbarMenuActionGroupProperties);\n\nconst createAlignActions = (model: SheetModel, state: ToolbarState, cursorFallbackRange?: CompleteCellRange) =>\n Object.entries(aligns).map(([alignValue, icon]) => {\n return createMenuAction<AlignAction>(\n `${alignKey}--${alignValue}`,\n () => {\n if (!cursorFallbackRange) {\n return;\n }\n const index =\n model.sheet.ranges?.findIndex(\n (range) =>\n range.key === alignKey && inRange(rangeFromIndex(model.sheet, range.range), cursorFallbackRange.from),\n ) ?? -1;\n const nextRangeEntity = {\n range: rangeToIndex(model.sheet, cursorFallbackRange),\n key: alignKey,\n value: alignValue as AlignValue,\n };\n if (index < 0) {\n model.sheet.ranges?.push(nextRangeEntity);\n state[alignKey] = nextRangeEntity.value;\n } else if (model.sheet.ranges![index].value === nextRangeEntity.value) {\n model.sheet.ranges?.splice(index, 1);\n state[alignKey] = undefined;\n } else {\n model.sheet.ranges?.splice(index, 1, nextRangeEntity);\n state[alignKey] = nextRangeEntity.value;\n }\n },\n {\n key: alignKey,\n value: alignValue as AlignValue,\n checked: state[alignKey] === alignValue,\n label: [`range value ${alignValue} label`, { ns: meta.id }],\n icon,\n testId: `grid.toolbar.${alignKey}.${alignValue}`,\n },\n );\n });\n\nexport const createAlign = (model: SheetModel, state: ToolbarState, cursorFallbackRange?: CompleteCellRange) => {\n const alignGroup = createAlignGroupAction(state[alignKey]);\n const alignActions = createAlignActions(model, state, cursorFallbackRange);\n return {\n nodes: [alignGroup, ...alignActions],\n edges: [\n { source: 'root', target: 'align' },\n ...alignActions.map(({ id }) => ({ source: alignGroup.id, target: id })),\n ],\n };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useEffect } from 'react';\n\nimport { type CompleteCellRange, inRange } from '@dxos/compute';\nimport { type ToolbarMenuActionGroupProperties, createMenuAction, createMenuItemGroup } from '@dxos/react-ui-menu';\n\nimport { meta } from '../../meta';\nimport { type SheetModel } from '../../model';\nimport { type StyleKey, type StyleValue, rangeFromIndex, rangeToIndex } from '../../types';\nimport { useSheetContext } from '../SheetContext';\n\nexport type StyleState = Partial<Record<StyleValue, boolean>>;\n\nexport type StyleAction = { key: StyleKey; value: StyleValue };\n\nconst styles: Record<StyleValue, string> = {\n highlight: 'ph--highlighter--regular',\n softwrap: 'ph--paragraph--regular',\n};\n\nexport const useStyleState = (state: StyleState) => {\n const { cursorFallbackRange, model } = useSheetContext();\n\n useEffect(() => {\n state.highlight = false;\n state.softwrap = false;\n if (cursorFallbackRange && model.sheet.ranges) {\n model.sheet.ranges\n .filter(\n ({ range, key }) => key === 'style' && inRange(rangeFromIndex(model.sheet, range), cursorFallbackRange.from),\n )\n .forEach(({ value }) => {\n state[value as StyleValue] = true;\n });\n }\n }, [cursorFallbackRange, model.sheet]);\n};\n\nconst createStyleGroup = (state: StyleState) => {\n return createMenuItemGroup('style', {\n variant: 'toggleGroup',\n selectCardinality: 'multiple',\n value: Object.keys(styles)\n .filter((key) => !!state[key as StyleValue])\n .map((styleValue) => `style--${styleValue}`),\n } as ToolbarMenuActionGroupProperties);\n};\n\nconst createStyleActions = (model: SheetModel, state: StyleState, cursorFallbackRange?: CompleteCellRange) =>\n Object.entries(styles).map(([styleValue, icon]) => {\n return createMenuAction<StyleAction>(\n `style--${styleValue}`,\n () => {\n if (!cursorFallbackRange) {\n return;\n }\n const index =\n model.sheet.ranges?.findIndex(\n (range) =>\n range.key === 'style' && inRange(rangeFromIndex(model.sheet, range.range), cursorFallbackRange.from),\n ) ?? -1;\n const nextRangeEntity = {\n range: rangeToIndex(model.sheet, cursorFallbackRange),\n key: 'style',\n value: styleValue as StyleValue,\n };\n if (\n model.sheet.ranges\n .filter(\n ({ range, key: rangeKey }) =>\n rangeKey === 'style' && inRange(rangeFromIndex(model.sheet, range), cursorFallbackRange.from),\n )\n .some(({ value: rangeValue }) => rangeValue === styleValue)\n ) {\n // this value should be unset\n if (index >= 0) {\n model.sheet.ranges?.splice(index, 1);\n }\n state[nextRangeEntity.value] = false;\n } else {\n model.sheet.ranges?.push(nextRangeEntity);\n state[nextRangeEntity.value] = true;\n }\n },\n {\n key: 'style',\n value: styleValue as StyleValue,\n icon,\n label: [`range value ${styleValue} label`, { ns: meta.id }],\n checked: !!state[styleValue as StyleValue],\n },\n );\n });\n\nexport const createStyle = (model: SheetModel, state: StyleState, cursorFallbackRange?: CompleteCellRange) => {\n const styleGroupAction = createStyleGroup(state);\n const styleActions = createStyleActions(model, state, cursorFallbackRange);\n return {\n nodes: [styleGroupAction, ...styleActions],\n edges: [\n { source: 'root', target: 'style' },\n ...styleActions.map(({ id }) => ({ source: styleGroupAction.id, target: id })),\n ],\n };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport { useMemo } from 'react';\n\nimport { live } from '@dxos/live-object';\n\nimport { type AlignState } from './align';\nimport { type StyleState } from './style';\n\nexport type ToolbarState = Partial<StyleState & AlignState>;\n\nexport const useToolbarState = (initialState: ToolbarState = {}) => {\n return useMemo(() => live<ToolbarState>(initialState), []);\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { SheetContainer } from './SheetContainer';\n\nexport default SheetContainer;\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["React", "Obj", "StackItem", "React", "addressToA1Notation", "isFormula", "rangeToA1Notation", "Icon", "FunctionEditor", "model", "cursor", "range", "useSheetContext", "value", "formula", "getCellValue", "isFormula", "graph", "mapFunctionBindingFromId", "mapFormulaIndicesToRefs", "sheet", "String", "div", "className", "rangeToA1Notation", "addressToA1Notation", "Icon", "icon", "classNames", "span", "Atom", "React", "useMemo", "useAppGraph", "MenuProvider", "ToolbarMenu", "createGapSeparator", "rxFromSignal", "useMenuActions", "useEffect", "inRange", "createMenuAction", "createMenuItemGroup", "aligns", "start", "center", "end", "useAlignState", "state", "cursor", "model", "useSheetContext", "useEffect", "alignKey", "sheet", "ranges", "findLast", "range", "key", "inRange", "rangeFromIndex", "value", "undefined", "createAlignGroupAction", "createMenuItemGroup", "label", "ns", "meta", "id", "variant", "selectCardinality", "createAlignActions", "cursorFallbackRange", "Object", "entries", "map", "alignValue", "icon", "createMenuAction", "index", "findIndex", "from", "nextRangeEntity", "rangeToIndex", "push", "splice", "checked", "testId", "createAlign", "alignGroup", "alignActions", "nodes", "edges", "source", "target", "useEffect", "inRange", "createMenuAction", "createMenuItemGroup", "styles", "highlight", "softwrap", "useStyleState", "state", "cursorFallbackRange", "model", "useSheetContext", "useEffect", "sheet", "ranges", "filter", "range", "key", "inRange", "rangeFromIndex", "from", "forEach", "value", "createStyleGroup", "createMenuItemGroup", "variant", "selectCardinality", "Object", "keys", "map", "styleValue", "createStyleActions", "entries", "icon", "createMenuAction", "index", "findIndex", "nextRangeEntity", "rangeToIndex", "rangeKey", "some", "rangeValue", "splice", "push", "label", "ns", "meta", "id", "checked", "createStyle", "styleGroupAction", "styleActions", "nodes", "edges", "source", "target", "useMemo", "live", "useToolbarState", "initialState", "useMemo", "live", "createToolbarActions", "model", "state", "cursorFallbackRange", "customActions", "Atom", "make", "get", "align", "rxFromSignal", "createAlign", "style", "createStyle", "gap", "createGapSeparator", "graph", "nodes", "edges", "custom", "push", "SheetToolbar", "id", "useSheetContext", "useToolbarState", "useAlignState", "useStyleState", "useAppGraph", "useMemo", "actions", "filter", "action", "properties", "disposition", "map", "node", "source", "target", "actionsCreator", "menu", "useMenuActions", "React", "MenuProvider", "attendableId", "ToolbarMenu", "SheetContainer", "space", "sheet", "role", "ignoreAttention", "graph", "useComputeGraph", "React", "SheetProvider", "StackItem", "Content", "toolbar", "statusbar", "classNames", "SheetToolbar", "id", "Obj", "getDXN", "toString", "GridSheet", "FunctionEditor", "SheetContainer"]
|
|
7
|
+
}
|
|
@@ -1,18 +1,17 @@
|
|
|
1
1
|
import {
|
|
2
|
-
|
|
2
|
+
Sheet_exports,
|
|
3
3
|
compareIndexPositions
|
|
4
|
-
} from "./chunk-
|
|
5
|
-
import "./chunk-
|
|
4
|
+
} from "./chunk-DVJ3QW3F.mjs";
|
|
5
|
+
import "./chunk-FWFAAGXL.mjs";
|
|
6
6
|
|
|
7
7
|
// src/capabilities/anchor-sort.ts
|
|
8
8
|
import { Capabilities, contributes } from "@dxos/app-framework";
|
|
9
|
-
import {
|
|
10
|
-
import { getTarget } from "@dxos/react-client/echo";
|
|
9
|
+
import { Relation } from "@dxos/echo";
|
|
11
10
|
var anchor_sort_default = (() => contributes(Capabilities.AnchorSort, {
|
|
12
|
-
key:
|
|
11
|
+
key: Sheet_exports.Sheet.typename,
|
|
13
12
|
sort: (anchorA, anchorB) => {
|
|
14
|
-
const sheet = getTarget(anchorA);
|
|
15
|
-
if (sheet !== getTarget(anchorB)) {
|
|
13
|
+
const sheet = Relation.getTarget(anchorA);
|
|
14
|
+
if (sheet !== Relation.getTarget(anchorB)) {
|
|
16
15
|
return 0;
|
|
17
16
|
}
|
|
18
17
|
return !anchorA.anchor || !anchorB.anchor ? 0 : compareIndexPositions(sheet, anchorA.anchor, anchorB.anchor);
|
|
@@ -21,4 +20,4 @@ var anchor_sort_default = (() => contributes(Capabilities.AnchorSort, {
|
|
|
21
20
|
export {
|
|
22
21
|
anchor_sort_default as default
|
|
23
22
|
};
|
|
24
|
-
//# sourceMappingURL=anchor-sort-
|
|
23
|
+
//# sourceMappingURL=anchor-sort-FCQ5OZZK.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/capabilities/anchor-sort.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Capabilities, type Capability, contributes } from '@dxos/app-framework';\nimport { Relation } from '@dxos/echo';\n\nimport { Sheet, compareIndexPositions } from '../types';\n\nexport default (): Capability<typeof Capabilities.AnchorSort> =>\n contributes(Capabilities.AnchorSort, {\n key: Sheet.Sheet.typename,\n sort: (anchorA, anchorB) => {\n const sheet = Relation.getTarget(anchorA) as Sheet.Sheet;\n if (sheet !== Relation.getTarget(anchorB)) {\n return 0;\n }\n\n return !anchorA.anchor || !anchorB.anchor ? 0 : compareIndexPositions(sheet, anchorA.anchor, anchorB.anchor);\n },\n });\n"],
|
|
5
|
+
"mappings": ";;;;;;;AAIA,SAASA,cAA+BC,mBAAmB;AAC3D,SAASC,gBAAgB;AAIzB,IAAA,uBAAe,MACbC,YAAYC,aAAaC,YAAY;EACnCC,KAAKC,cAAMA,MAAMC;EACjBC,MAAM,CAACC,SAASC,YAAAA;AACd,UAAMC,QAAQC,SAASC,UAAUJ,OAAAA;AACjC,QAAIE,UAAUC,SAASC,UAAUH,OAAAA,GAAU;AACzC,aAAO;IACT;AAEA,WAAO,CAACD,QAAQK,UAAU,CAACJ,QAAQI,SAAS,IAAIC,sBAAsBJ,OAAOF,QAAQK,QAAQJ,QAAQI,MAAM;EAC7G;AACF,CAAA;",
|
|
6
|
+
"names": ["Capabilities", "contributes", "Relation", "contributes", "Capabilities", "AnchorSort", "key", "Sheet", "typename", "sort", "anchorA", "anchorB", "sheet", "Relation", "getTarget", "anchor", "compareIndexPositions"]
|
|
7
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
meta
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-FWFAAGXL.mjs";
|
|
4
4
|
|
|
5
5
|
// src/capabilities/capabilities.ts
|
|
6
6
|
import { defineCapability } from "@dxos/app-framework";
|
|
@@ -12,4 +12,4 @@ var SheetCapabilities;
|
|
|
12
12
|
export {
|
|
13
13
|
SheetCapabilities
|
|
14
14
|
};
|
|
15
|
-
//# sourceMappingURL=chunk-
|
|
15
|
+
//# sourceMappingURL=chunk-73AV3NH6.mjs.map
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import {
|
|
2
2
|
DEFAULT_COLS,
|
|
3
3
|
DEFAULT_ROWS,
|
|
4
|
-
Range,
|
|
5
4
|
SheetAction,
|
|
5
|
+
Sheet_exports,
|
|
6
6
|
cellClassNameForRange,
|
|
7
7
|
rangeFromIndex,
|
|
8
8
|
useSheetModel
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-DVJ3QW3F.mjs";
|
|
10
10
|
import {
|
|
11
11
|
rangeExtension,
|
|
12
12
|
sheetExtension
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-7VEWYJJN.mjs";
|
|
14
14
|
import {
|
|
15
15
|
meta
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-FWFAAGXL.mjs";
|
|
17
17
|
|
|
18
18
|
// src/components/ComputeGraph/ComputeGraphContextProvider.tsx
|
|
19
19
|
import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
|
|
@@ -72,7 +72,7 @@ var RangeList = ({ sheet }) => {
|
|
|
72
72
|
className: "mbs-cardSpacingBlock mbe-labelSpacingBlock text-sm font-semibold"
|
|
73
73
|
}, t("range list heading")), sheet.ranges.length < 1 ? /* @__PURE__ */ React2.createElement(Callout.Root, null, /* @__PURE__ */ React2.createElement(Callout.Title, null, t("no ranges message"))) : /* @__PURE__ */ React2.createElement(List.Root, {
|
|
74
74
|
items: sheet.ranges,
|
|
75
|
-
isItem: Schema.is(Range)
|
|
75
|
+
isItem: Schema.is(Sheet_exports.Range)
|
|
76
76
|
}, ({ items: ranges }) => ranges.map((range, i) => /* @__PURE__ */ React2.createElement(List.Item, {
|
|
77
77
|
key: i,
|
|
78
78
|
item: range,
|
|
@@ -100,7 +100,8 @@ import { lazy } from "react";
|
|
|
100
100
|
// src/components/GridSheet/GridSheet.tsx
|
|
101
101
|
import { useSignals as _useSignals4 } from "@preact-signals/safe-react/tracking";
|
|
102
102
|
import React4, { useCallback as useCallback4, useMemo as useMemo2, useRef, useState as useState3 } from "react";
|
|
103
|
-
import { createIntent as createIntent2
|
|
103
|
+
import { createIntent as createIntent2 } from "@dxos/app-framework";
|
|
104
|
+
import { useIntentDispatcher as useIntentDispatcher2 } from "@dxos/app-framework/react";
|
|
104
105
|
import { rangeToA1Notation as rangeToA1Notation2 } from "@dxos/compute";
|
|
105
106
|
import { defaultColSize, defaultRowSize } from "@dxos/lit-grid";
|
|
106
107
|
import { DropdownMenu, Icon, useTranslation as useTranslation2 } from "@dxos/react-ui";
|
|
@@ -111,14 +112,15 @@ import { Grid as Grid2, GridCellEditor, closestCell, editorKeys, parseCellIndex
|
|
|
111
112
|
import * as Function from "effect/Function";
|
|
112
113
|
import * as Schema2 from "effect/Schema";
|
|
113
114
|
import { useCallback as useCallback2, useEffect, useMemo } from "react";
|
|
114
|
-
import { LayoutAction, chain, createIntent, createResolver
|
|
115
|
+
import { LayoutAction, chain, createIntent, createResolver } from "@dxos/app-framework";
|
|
116
|
+
import { useIntentDispatcher, useIntentResolver } from "@dxos/app-framework/react";
|
|
115
117
|
import { debounce } from "@dxos/async";
|
|
116
118
|
import { inRange } from "@dxos/compute";
|
|
117
119
|
import { Obj, Relation } from "@dxos/echo";
|
|
118
120
|
import { ATTENDABLE_PATH_SEPARATOR, DeckAction } from "@dxos/plugin-deck/types";
|
|
119
|
-
import {
|
|
120
|
-
import { Filter, Query,
|
|
121
|
-
import { AnchoredTo } from "@dxos/
|
|
121
|
+
import { Thread, ThreadAction } from "@dxos/plugin-thread/types";
|
|
122
|
+
import { Filter, Query, getSpace, useQuery } from "@dxos/react-client/echo";
|
|
123
|
+
import { AnchoredTo } from "@dxos/types";
|
|
122
124
|
var parseThreadAnchorAsCellRange = (cursor) => {
|
|
123
125
|
const coords = cursor.split(",");
|
|
124
126
|
if (coords.length !== 4) {
|
|
@@ -146,7 +148,7 @@ var useUpdateFocusedCellOnThreadSelection = (grid) => {
|
|
|
146
148
|
if (!Schema2.is(LayoutAction.ScrollIntoView.fields.input)(data)) {
|
|
147
149
|
return false;
|
|
148
150
|
}
|
|
149
|
-
return data.subject ===
|
|
151
|
+
return data.subject === Obj.getDXN(model.sheet).toString() && !!data.options?.cursor;
|
|
150
152
|
},
|
|
151
153
|
resolve: ({ options: { cursor, ref } }) => {
|
|
152
154
|
setActiveRefs(ref);
|
|
@@ -166,14 +168,14 @@ var useSelectThreadOnCellFocus = () => {
|
|
|
166
168
|
const { model, cursor } = useSheetContext();
|
|
167
169
|
const { dispatchPromise: dispatch } = useIntentDispatcher();
|
|
168
170
|
const space = getSpace(model.sheet);
|
|
169
|
-
const anchors = useQuery(space, Query.select(Filter.ids(model.sheet.id)).targetOf(AnchoredTo));
|
|
171
|
+
const anchors = useQuery(space, Query.select(Filter.ids(model.sheet.id)).targetOf(AnchoredTo.AnchoredTo));
|
|
170
172
|
const selectClosestThread = useCallback2((cellAddress) => {
|
|
171
173
|
if (!cellAddress) {
|
|
172
174
|
return;
|
|
173
175
|
}
|
|
174
176
|
const closestThread = anchors.find((anchor) => {
|
|
175
177
|
const source = Relation.getSource(anchor);
|
|
176
|
-
if (anchor.anchor && Obj.instanceOf(
|
|
178
|
+
if (anchor.anchor && Obj.instanceOf(Thread.Thread, source)) {
|
|
177
179
|
const range = parseThreadAnchorAsCellRange(anchor.anchor);
|
|
178
180
|
return range ? inRange(range, cellAddress) : false;
|
|
179
181
|
} else {
|
|
@@ -181,9 +183,9 @@ var useSelectThreadOnCellFocus = () => {
|
|
|
181
183
|
}
|
|
182
184
|
});
|
|
183
185
|
if (closestThread) {
|
|
184
|
-
const primary =
|
|
186
|
+
const primary = Obj.getDXN(model.sheet).toString();
|
|
185
187
|
const intent = Function.pipe(createIntent(ThreadAction.Select, {
|
|
186
|
-
current:
|
|
188
|
+
current: Obj.getDXN(closestThread).toString()
|
|
187
189
|
}), chain(DeckAction.ChangeCompanion, {
|
|
188
190
|
primary,
|
|
189
191
|
companion: `${primary}${ATTENDABLE_PATH_SEPARATOR}comments`
|
|
@@ -213,8 +215,8 @@ var useSelectThreadOnCellFocus = () => {
|
|
|
213
215
|
// src/components/SheetContext/SheetContext.tsx
|
|
214
216
|
import { useSignals as _useSignals3 } from "@preact-signals/safe-react/tracking";
|
|
215
217
|
import React3, { createContext as createContext2, useCallback as useCallback3, useContext as useContext2, useState } from "react";
|
|
218
|
+
import { Obj as Obj2 } from "@dxos/echo";
|
|
216
219
|
import { invariant } from "@dxos/invariant";
|
|
217
|
-
import { fullyQualifiedId as fullyQualifiedId2 } from "@dxos/react-client/echo";
|
|
218
220
|
import { Grid, useGridContext } from "@dxos/react-ui-grid";
|
|
219
221
|
var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-sheet/src/components/SheetContext/SheetContext.tsx";
|
|
220
222
|
var SheetContext = /* @__PURE__ */ createContext2(void 0);
|
|
@@ -286,7 +288,7 @@ var SheetProvider = ({ children, graph, sheet, readonly, ignoreAttention, onInfo
|
|
|
286
288
|
readonly
|
|
287
289
|
});
|
|
288
290
|
return !model ? null : /* @__PURE__ */ React3.createElement(Grid.Root, {
|
|
289
|
-
id:
|
|
291
|
+
id: Obj2.getDXN(sheet).toString()
|
|
290
292
|
}, /* @__PURE__ */ React3.createElement(SheetProviderImpl, {
|
|
291
293
|
model,
|
|
292
294
|
onInfo,
|
|
@@ -578,14 +580,12 @@ var GridSheet = () => {
|
|
|
578
580
|
]);
|
|
579
581
|
const handleAxisResize = useCallback4(({ axis, size, index: numericIndex }) => {
|
|
580
582
|
if (axis === "row") {
|
|
581
|
-
var _model_sheet_rowMeta, _rowId;
|
|
582
583
|
const rowId = model.sheet.rows[parseInt(numericIndex)];
|
|
583
|
-
|
|
584
|
+
model.sheet.rowMeta[rowId] ??= {};
|
|
584
585
|
model.sheet.rowMeta[rowId].size = size;
|
|
585
586
|
} else {
|
|
586
|
-
var _model_sheet_columnMeta, _columnId;
|
|
587
587
|
const columnId = model.sheet.columns[parseInt(numericIndex)];
|
|
588
|
-
|
|
588
|
+
model.sheet.columnMeta[columnId] ??= {};
|
|
589
589
|
model.sheet.columnMeta[columnId].size = size;
|
|
590
590
|
}
|
|
591
591
|
}, [
|
|
@@ -838,7 +838,7 @@ var GridSheet = () => {
|
|
|
838
838
|
};
|
|
839
839
|
|
|
840
840
|
// src/components/index.ts
|
|
841
|
-
var SheetContainer = lazy(() => import("./SheetContainer-
|
|
841
|
+
var SheetContainer = lazy(() => import("./SheetContainer-BDLFSILO.mjs"));
|
|
842
842
|
|
|
843
843
|
export {
|
|
844
844
|
ComputeGraphContextProvider,
|
|
@@ -849,4 +849,4 @@ export {
|
|
|
849
849
|
RangeList,
|
|
850
850
|
SheetContainer
|
|
851
851
|
};
|
|
852
|
-
//# sourceMappingURL=chunk-
|
|
852
|
+
//# sourceMappingURL=chunk-7KRJ2IT5.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/components/ComputeGraph/ComputeGraphContextProvider.tsx", "../../../src/components/RangeList/RangeList.tsx", "../../../src/components/index.ts", "../../../src/components/GridSheet/GridSheet.tsx", "../../../src/integrations/thread-ranges.ts", "../../../src/components/SheetContext/SheetContext.tsx", "../../../src/components/GridSheet/util.ts"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { type PropsWithChildren, createContext, useContext } from 'react';\n\nimport { type ComputeGraph, type ComputeGraphRegistry } from '@dxos/compute';\nimport { raise } from '@dxos/debug';\nimport { type Space } from '@dxos/react-client/echo';\nimport { useAsyncState } from '@dxos/react-hooks';\n\nexport type ComputeGraphContextType = {\n registry: ComputeGraphRegistry;\n};\n\n/**\n * The compute graph context manages a ComputeGraph for each space.\n */\nexport const ComputeGraphContext = createContext<ComputeGraphContextType | undefined>(undefined);\n\nexport const ComputeGraphContextProvider = ({ registry, children }: PropsWithChildren<ComputeGraphContextType>) => {\n return <ComputeGraphContext.Provider value={{ registry }}>{children}</ComputeGraphContext.Provider>;\n};\n\nexport const useComputeGraph = (space?: Space): ComputeGraph | undefined => {\n const { registry } = useContext(ComputeGraphContext) ?? raise(new Error('Missing ComputeGraphContext'));\n const [graph] = useAsyncState(async () => {\n if (space) {\n const graph = registry.getOrCreateGraph(space);\n await graph.open();\n return graph;\n }\n }, [space, registry]);\n\n return graph;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport * as Schema from 'effect/Schema';\nimport React, { useCallback } from 'react';\n\nimport { rangeToA1Notation } from '@dxos/compute';\nimport { Callout, useTranslation } from '@dxos/react-ui';\nimport { List } from '@dxos/react-ui-list';\nimport { ghostHover } from '@dxos/react-ui-theme';\n\nimport { meta } from '../../meta';\nimport { rangeFromIndex } from '../../types';\nimport { Sheet } from '../../types';\n\nexport type RangeListProps = {\n sheet: Sheet.Sheet;\n};\n\nexport const RangeList = ({ sheet }: RangeListProps) => {\n const { t } = useTranslation(meta.id);\n // TODO(thure): Implement similar to comments, #8121\n const handleSelectRange = (range: Sheet.Range) => {};\n const handleDeleteRange = useCallback(\n (range: Sheet.Range) => {\n const index = sheet.ranges.findIndex((sheetRange) => sheetRange === range);\n sheet.ranges.splice(index, 1);\n },\n [sheet],\n );\n return (\n <>\n <h2 className='mbs-cardSpacingBlock mbe-labelSpacingBlock text-sm font-semibold'>{t('range list heading')}</h2>\n {sheet.ranges.length < 1 ? (\n <Callout.Root>\n <Callout.Title>{t('no ranges message')}</Callout.Title>\n </Callout.Root>\n ) : (\n <List.Root<Sheet.Range> items={sheet.ranges} isItem={Schema.is(Sheet.Range)}>\n {({ items: ranges }) =>\n ranges.map((range, i) => (\n <List.Item key={i} item={range} classNames={['p-2', ghostHover]}>\n <List.ItemDragHandle />\n <List.ItemTitle onClick={() => handleSelectRange(range)}>\n {t('range title', {\n position: rangeToA1Notation(rangeFromIndex(sheet, range.range)),\n key: t(`range key ${range.key} label`),\n value: t(`range value ${range.value} label`),\n })}\n </List.ItemTitle>\n <List.ItemDeleteButton onClick={() => handleDeleteRange(range)} />\n </List.Item>\n ))\n }\n </List.Root>\n )}\n </>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { lazy } from 'react';\n\nexport * from './ComputeGraph';\nexport * from './GridSheet';\nexport * from './RangeList';\nexport * from './SheetContext';\n\nexport const SheetContainer = lazy(() => import('./SheetContainer'));\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, {\n type FocusEvent,\n type KeyboardEvent,\n type MouseEvent,\n type WheelEvent,\n useCallback,\n useMemo,\n useRef,\n useState,\n} from 'react';\n\nimport { createIntent } from '@dxos/app-framework';\nimport { useIntentDispatcher } from '@dxos/app-framework/react';\nimport { type CellRange, rangeToA1Notation } from '@dxos/compute';\nimport { defaultColSize, defaultRowSize } from '@dxos/lit-grid';\nimport { DropdownMenu, Icon, useTranslation } from '@dxos/react-ui';\nimport { useAttention } from '@dxos/react-ui-attention';\nimport {\n type DxGridCellIndex,\n type DxGridElement,\n type DxGridPosition,\n type EditorBlurHandler,\n type EditorKeyHandler,\n Grid,\n GridCellEditor,\n type GridContentProps,\n closestCell,\n editorKeys,\n parseCellIndex,\n} from '@dxos/react-ui-grid';\n\nimport { type RangeController, rangeExtension, sheetExtension } from '../../extensions';\nimport { useSelectThreadOnCellFocus, useUpdateFocusedCellOnThreadSelection } from '../../integrations';\nimport { meta } from '../../meta';\nimport { DEFAULT_COLS, DEFAULT_ROWS, SheetAction } from '../../types';\nimport { useSheetContext } from '../SheetContext';\n\nimport { colLabelCell, rowLabelCell, useSheetModelDxGridProps } from './util';\n\nconst inertPosition: DxGridPosition = { plane: 'grid', col: 0, row: 0 };\n\nconst initialCells = {\n grid: {},\n frozenColsStart: [...Array(64)].reduce((acc, _, i) => {\n acc[`0,${i}`] = rowLabelCell(i);\n return acc;\n }, {}),\n frozenRowsStart: [...Array(12)].reduce((acc, _, i) => {\n acc[`${i},0`] = colLabelCell(i);\n return acc;\n }, {}),\n};\n\nconst frozen = {\n frozenColsStart: 1,\n frozenRowsStart: 1,\n};\n\nconst sheetColDefault = {\n frozenColsStart: { size: 48, readonly: true, focusUnfurl: false },\n grid: { size: defaultColSize, resizeable: true },\n};\nconst sheetRowDefault = {\n frozenRowsStart: { size: defaultRowSize, readonly: true, focusUnfurl: false },\n grid: { size: defaultRowSize, resizeable: true },\n};\n\nexport const GridSheet = () => {\n const { t } = useTranslation(meta.id);\n const { id, model, editing, setCursor, setRange, cursor, cursorFallbackRange, activeRefs, ignoreAttention } =\n useSheetContext();\n // NOTE(thure): using `useState` instead of `useRef` works with refs provided by `@lit/react` and gives us\n // a reliable dependency for `useEffect` whereas `useLayoutEffect` does not guarantee the element will be defined.\n const [dxGrid, setDxGrid] = useState<DxGridElement | null>(null);\n const [extraplanarFocus, setExtraplanarFocus] = useState<DxGridPosition | null>(null);\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const rangeController = useRef<RangeController>(null);\n const { hasAttention } = useAttention(id);\n\n const handleFocus = useCallback(\n (event: FocusEvent) => {\n if (!editing) {\n const cell = closestCell(event.target);\n if (cell) {\n if (cell.plane === 'grid') {\n setCursor({ col: cell.col, row: cell.row });\n setExtraplanarFocus(null);\n } else {\n setExtraplanarFocus(cell);\n }\n } else {\n setExtraplanarFocus(null);\n }\n }\n },\n [editing],\n );\n\n // TODO(burdon): Validate formula before closing: hf.validateFormula();\n const handleClose = useCallback<EditorKeyHandler>(\n (_value, event) => {\n if (event) {\n const { key, shift } = event;\n const axis = ['Enter', 'ArrowUp', 'ArrowDown'].includes(key)\n ? 'row'\n : ['Tab', 'ArrowLeft', 'ArrowRight'].includes(key)\n ? 'col'\n : undefined;\n const delta = key.startsWith('Arrow') ? (['ArrowUp', 'ArrowLeft'].includes(key) ? -1 : 1) : shift ? -1 : 1;\n dxGrid?.refocus(axis, delta);\n }\n },\n [model, editing, dxGrid],\n );\n\n const handleBlur = useCallback<EditorBlurHandler>(\n (value) => {\n if (value !== undefined) {\n model.setValue(parseCellIndex(editing!.index), value);\n }\n },\n [model, editing],\n );\n\n const handleAxisResize = useCallback<NonNullable<GridContentProps['onAxisResize']>>(\n ({ axis, size, index: numericIndex }) => {\n if (axis === 'row') {\n const rowId = model.sheet.rows[parseInt(numericIndex)];\n model.sheet.rowMeta[rowId] ??= {};\n model.sheet.rowMeta[rowId].size = size;\n } else {\n const columnId = model.sheet.columns[parseInt(numericIndex)];\n model.sheet.columnMeta[columnId] ??= {};\n model.sheet.columnMeta[columnId].size = size;\n }\n },\n [model],\n );\n\n const handleSelect = useCallback<NonNullable<GridContentProps['onSelect']>>(\n ({ minCol, maxCol, minRow, maxRow }) => {\n const range: CellRange = { from: { col: minCol, row: minRow } };\n if (minCol !== maxCol || minRow !== maxRow) {\n range.to = { col: maxCol, row: maxRow };\n }\n if (editing) {\n // Update range selection in formula.\n rangeController.current?.setRange(rangeToA1Notation(range));\n } else {\n // Setting range while editing causes focus to move to null, avoid doing so.\n setRange(range.to ? range : undefined);\n }\n },\n [editing],\n );\n\n const handleWheel = useCallback(\n (event: WheelEvent) => {\n if (!ignoreAttention && !hasAttention) {\n event.stopPropagation();\n }\n },\n [hasAttention, ignoreAttention],\n );\n\n const selectEntireAxis = useCallback(\n (pos: DxGridPosition) => {\n switch (pos.plane) {\n case 'frozenRowsStart':\n return dxGrid?.setSelection({\n start: { col: pos.col, row: 0, plane: 'grid' },\n end: {\n col: pos.col,\n row: model.sheet.rows.length - 1,\n plane: 'grid',\n },\n });\n case 'frozenColsStart':\n return dxGrid?.setSelection({\n start: { row: pos.row, col: 0, plane: 'grid' },\n end: {\n row: pos.row,\n col: model.sheet.columns.length - 1,\n plane: 'grid',\n },\n });\n }\n },\n [dxGrid, model.sheet],\n );\n\n const handleClick = useCallback(\n (event: MouseEvent) => {\n const cell = closestCell(event.target);\n if (cell) {\n selectEntireAxis(cell);\n }\n },\n [selectEntireAxis],\n );\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent) => {\n switch (event.key) {\n case 'Backspace':\n case 'Delete':\n event.preventDefault();\n return cursorFallbackRange && model.clear(cursorFallbackRange);\n case 'Enter':\n case 'Space':\n if (dxGrid && extraplanarFocus) {\n switch (extraplanarFocus.plane) {\n case 'frozenRowsStart':\n case 'frozenColsStart':\n event.preventDefault();\n return selectEntireAxis(extraplanarFocus);\n }\n }\n }\n if (event.metaKey || event.ctrlKey) {\n switch (event.key) {\n case 'x':\n case 'X':\n event.preventDefault();\n return cursorFallbackRange && model.cut(cursorFallbackRange);\n case 'c':\n case 'C':\n event.preventDefault();\n return cursorFallbackRange && model.copy(cursorFallbackRange);\n case 'v':\n case 'V':\n event.preventDefault();\n return cursor && model.paste(cursor);\n case 'z':\n event.preventDefault();\n return event.shiftKey ? model.redo() : model.undo();\n case 'Z':\n case 'y':\n event.preventDefault();\n return model.redo();\n }\n }\n },\n [cursorFallbackRange, model, cursor, extraplanarFocus, selectEntireAxis],\n );\n\n const contextMenuAnchorRef = useRef<HTMLButtonElement | null>(null);\n const [contextMenuOpen, setContextMenuOpen] = useState<DxGridPosition | null>(null);\n const contextMenuAxis = contextMenuOpen?.plane.startsWith('frozenRows') ? 'col' : 'row';\n\n const handleContextMenu = useCallback((event: MouseEvent) => {\n const cell = closestCell(event.target);\n if (cell && cell.plane.startsWith('frozen')) {\n event.preventDefault();\n contextMenuAnchorRef.current = event.target as HTMLButtonElement;\n setContextMenuOpen(cell);\n }\n }, []);\n\n const handleAxisMenuAction = useCallback(\n (operation: 'insert-before' | 'insert-after' | 'drop') => {\n switch (operation) {\n case 'insert-before':\n case 'insert-after':\n return dispatch(\n createIntent(SheetAction.InsertAxis, {\n model,\n axis: contextMenuAxis,\n index: contextMenuOpen![contextMenuAxis] + (operation === 'insert-before' ? 0 : 1),\n }),\n );\n case 'drop':\n return dispatch(\n createIntent(SheetAction.DropAxis, {\n model,\n axis: contextMenuAxis,\n axisIndex: model.sheet[contextMenuAxis === 'row' ? 'rows' : 'columns'][contextMenuOpen![contextMenuAxis]],\n }),\n );\n }\n },\n [contextMenuAxis, contextMenuOpen, model, dispatch],\n );\n\n const { columns, rows } = useSheetModelDxGridProps(dxGrid, model);\n\n const extensions = useMemo(\n () => [\n editorKeys({\n onClose: handleClose,\n ...(editing?.initialContent && { onNav: handleClose }),\n }),\n sheetExtension({ functions: model.graph.getFunctions() }),\n rangeExtension({\n onInit: (fn) => (rangeController.current = fn),\n onStateChange: (state) => {\n if (dxGrid) {\n // This can’t dispatch a setState in this component, otherwise the cell editor remounts and loses focus.\n dxGrid.mode = typeof state.activeRange === 'undefined' ? 'edit' : 'edit-select';\n }\n },\n }),\n ],\n [model, handleClose, editing],\n );\n\n const getCellContent = useCallback(\n (index: DxGridCellIndex) => {\n return model.getCellText(parseCellIndex(index));\n },\n [model],\n );\n\n useUpdateFocusedCellOnThreadSelection(dxGrid);\n useSelectThreadOnCellFocus();\n\n return (\n // TODO(thure): Why are Table’s and Sheet’s editor boxes off by 1px?\n <div role='none' className='relative min-bs-0 [&_.cm-editor]:!border-lb [&_.cm-editor]:!border-transparent'>\n <GridCellEditor getCellContent={getCellContent} extensions={extensions} onBlur={handleBlur} />\n <Grid.Content\n initialCells={initialCells}\n limitColumns={DEFAULT_COLS}\n limitRows={DEFAULT_ROWS}\n columns={columns}\n rows={rows}\n // TODO(burdon): `col` vs. `column`?\n columnDefault={sheetColDefault}\n rowDefault={sheetRowDefault}\n frozen={frozen}\n onAxisResize={handleAxisResize}\n onSelect={handleSelect}\n onFocus={handleFocus}\n onWheelCapture={handleWheel}\n onKeyDown={handleKeyDown}\n onContextMenu={handleContextMenu}\n onClick={handleClick}\n overscroll='trap'\n className='[--dx-grid-base:var(--baseSurface)] [&_.dx-grid]:absolute [&_.dx-grid]:inset-0'\n activeRefs={activeRefs}\n ref={setDxGrid}\n />\n <DropdownMenu.Root\n modal={false}\n open={!!contextMenuOpen}\n onOpenChange={(nextOpen) => setContextMenuOpen(nextOpen ? inertPosition : null)}\n >\n <DropdownMenu.VirtualTrigger virtualRef={contextMenuAnchorRef} />\n <DropdownMenu.Content side={contextMenuAxis === 'col' ? 'bottom' : 'right'} sideOffset={4} collisionPadding={8}>\n <DropdownMenu.Viewport>\n <DropdownMenu.Item\n onClick={() => handleAxisMenuAction('insert-before')}\n data-testid={`grid.${contextMenuAxis}.insert-before`}\n >\n <Icon\n size={5}\n icon={contextMenuAxis === 'col' ? 'ph--columns-plus-left--regular' : 'ph--rows-plus-top--regular'}\n />\n <span>{t(`add ${contextMenuAxis} before label`)}</span>\n </DropdownMenu.Item>\n <DropdownMenu.Item\n onClick={() => handleAxisMenuAction('insert-after')}\n data-testid={`grid.${contextMenuAxis}.insert-after`}\n >\n <Icon\n size={5}\n icon={contextMenuAxis === 'col' ? 'ph--columns-plus-right--regular' : 'ph--rows-plus-bottom--regular'}\n />\n <span>{t(`add ${contextMenuAxis} after label`)}</span>\n </DropdownMenu.Item>\n <DropdownMenu.Item\n onClick={() => handleAxisMenuAction('drop')}\n data-testid={`grid.${contextMenuAxis}.drop`}\n >\n <Icon size={5} icon='ph--backspace--regular' />\n <span>{t(`delete ${contextMenuAxis} label`)}</span>\n </DropdownMenu.Item>\n </DropdownMenu.Viewport>\n <DropdownMenu.Arrow />\n </DropdownMenu.Content>\n </DropdownMenu.Root>\n </div>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport * as Function from 'effect/Function';\nimport * as Schema from 'effect/Schema';\nimport { useCallback, useEffect, useMemo } from 'react';\n\nimport { LayoutAction, chain, createIntent, createResolver } from '@dxos/app-framework';\nimport { useIntentDispatcher, useIntentResolver } from '@dxos/app-framework/react';\nimport { debounce } from '@dxos/async';\nimport { type CellAddress, type CompleteCellRange, inRange } from '@dxos/compute';\nimport { Obj, Relation } from '@dxos/echo';\nimport { ATTENDABLE_PATH_SEPARATOR, DeckAction } from '@dxos/plugin-deck/types';\nimport { Thread, ThreadAction } from '@dxos/plugin-thread/types';\nimport { Filter, Query, getSpace, useQuery } from '@dxos/react-client/echo';\nimport { type DxGridElement, type GridContentProps } from '@dxos/react-ui-grid';\nimport { AnchoredTo } from '@dxos/types';\n\nimport { useSheetContext } from '../components';\nimport { meta } from '../meta';\n\nexport const completeCellRangeToThreadCursor = (range: CompleteCellRange): string => {\n return `${range.from.col},${range.from.row},${range.to.col},${range.to.row}`;\n};\n\nexport const parseThreadAnchorAsCellRange = (cursor: string): CompleteCellRange | null => {\n const coords = cursor.split(',');\n if (coords.length !== 4) {\n return null;\n } else {\n const [fromCol, fromRow, toCol, toRow] = coords;\n return {\n from: { col: parseInt(fromCol), row: parseInt(fromRow) },\n to: { col: parseInt(toCol), row: parseInt(toRow) },\n };\n }\n};\n\nexport const useUpdateFocusedCellOnThreadSelection = (grid: DxGridElement | null) => {\n const { model, setActiveRefs } = useSheetContext();\n const scrollIntoViewResolver = useMemo(\n () =>\n createResolver({\n intent: LayoutAction.ScrollIntoView,\n position: 'hoist',\n filter: (\n data,\n ): data is {\n part: 'current';\n subject: string;\n options: { cursor: string; ref: GridContentProps['activeRefs'] };\n } => {\n if (!Schema.is(LayoutAction.ScrollIntoView.fields.input)(data)) {\n return false;\n }\n\n return data.subject === Obj.getDXN(model.sheet).toString() && !!data.options?.cursor;\n },\n resolve: ({ options: { cursor, ref } }) => {\n setActiveRefs(ref);\n // TODO(Zan): Everywhere we refer to the cursor in a thread context should change to `anchor`.\n const range = parseThreadAnchorAsCellRange(cursor!);\n range && grid?.setFocus({ ...range.to, plane: 'grid' }, true);\n },\n }),\n [model.sheet, setActiveRefs],\n );\n\n useIntentResolver(meta.id, scrollIntoViewResolver);\n};\n\nexport const useSelectThreadOnCellFocus = () => {\n const { model, cursor } = useSheetContext();\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n\n const space = getSpace(model.sheet);\n const anchors = useQuery(space, Query.select(Filter.ids(model.sheet.id)).targetOf(AnchoredTo.AnchoredTo));\n\n const selectClosestThread = useCallback(\n (cellAddress: CellAddress) => {\n if (!cellAddress) {\n return;\n }\n\n const closestThread = anchors.find((anchor) => {\n const source = Relation.getSource(anchor);\n if (anchor.anchor && Obj.instanceOf(Thread.Thread, source)) {\n const range = parseThreadAnchorAsCellRange(anchor.anchor);\n return range ? inRange(range, cellAddress) : false;\n } else {\n return false;\n }\n });\n\n if (closestThread) {\n const primary = Obj.getDXN(model.sheet).toString();\n const intent = Function.pipe(\n createIntent(ThreadAction.Select, { current: Obj.getDXN(closestThread).toString() }),\n chain(DeckAction.ChangeCompanion, { primary, companion: `${primary}${ATTENDABLE_PATH_SEPARATOR}comments` }),\n );\n void dispatch(intent);\n }\n },\n [dispatch, anchors],\n );\n\n const debounced = useMemo(() => {\n return debounce((cellCoords: CellAddress) => requestAnimationFrame(() => selectClosestThread(cellCoords)), 50);\n }, [selectClosestThread]);\n\n useEffect(() => {\n if (!cursor) {\n return;\n }\n\n debounced(cursor);\n }, [cursor, debounced]);\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { type PropsWithChildren, createContext, useCallback, useContext, useState } from 'react';\n\nimport { type CellAddress, type CellRange, type CompleteCellRange, type ComputeGraph } from '@dxos/compute';\nimport { Obj } from '@dxos/echo';\nimport { invariant } from '@dxos/invariant';\nimport {\n Grid,\n type GridContentProps,\n type GridEditing,\n type GridScopedProps,\n useGridContext,\n} from '@dxos/react-ui-grid';\n\nimport { type SheetModel, useSheetModel } from '../../model';\nimport { type Sheet } from '../../types';\n\nexport type SheetContextValue = {\n id: string;\n\n model: SheetModel;\n\n // Cursor state.\n // TODO(burdon): Cursor and range should use indices.\n cursor?: CellAddress;\n setCursor: (cell: CellAddress | undefined) => void;\n range?: CellRange;\n setRange: (range: CellRange | undefined) => void;\n cursorFallbackRange?: CompleteCellRange;\n\n // Editing state (undefined if not editing).\n editing: GridEditing;\n setEditing: (editing: GridEditing) => void;\n\n // Active refs\n activeRefs: GridContentProps['activeRefs'];\n setActiveRefs: (activeRefs: GridContentProps['activeRefs']) => void;\n\n // Events.\n // TODO(burdon): Generalize.\n onInfo?: () => void;\n\n // Flags\n ignoreAttention?: boolean;\n};\n\nconst SheetContext = createContext<SheetContextValue | undefined>(undefined);\n\nexport const useSheetContext = (): SheetContextValue => {\n const context = useContext(SheetContext);\n invariant(context);\n return context;\n};\n\nconst SheetProviderImpl = ({\n model,\n onInfo,\n ignoreAttention,\n children,\n __gridScope,\n}: GridScopedProps<PropsWithChildren<Pick<SheetContextValue, 'onInfo' | 'model' | 'ignoreAttention'>>>) => {\n const { id, editing, setEditing } = useGridContext('SheetProvider', __gridScope);\n\n const [cursor, setCursorInternal] = useState<CellAddress>();\n const [range, setRangeInternal] = useState<CellRange>();\n const [cursorFallbackRange, setCursorFallbackRange] = useState<CompleteCellRange>();\n const [activeRefs, setActiveRefs] = useState<GridContentProps['activeRefs']>('');\n\n const setCursor = useCallback(\n (nextCursor?: CellAddress) => {\n setCursorInternal(nextCursor);\n setCursorFallbackRange(\n range?.to ? (range as CompleteCellRange) : nextCursor ? { from: nextCursor!, to: nextCursor! } : undefined,\n );\n },\n [range],\n );\n const setRange = useCallback(\n (nextRange?: CellRange) => {\n setRangeInternal(nextRange);\n setCursorFallbackRange(\n nextRange?.to ? (nextRange as CompleteCellRange) : cursor ? { from: cursor!, to: cursor! } : undefined,\n );\n },\n [cursor],\n );\n\n return (\n <SheetContext.Provider\n value={{\n id,\n model,\n editing,\n setEditing,\n cursor,\n setCursor,\n range,\n setRange,\n cursorFallbackRange,\n activeRefs,\n setActiveRefs,\n // TODO(burdon): Change to event.\n onInfo,\n ignoreAttention,\n }}\n >\n {children}\n </SheetContext.Provider>\n );\n};\n\nexport type SheetProviderProps = {\n graph: ComputeGraph;\n sheet: Sheet.Sheet;\n readonly?: boolean;\n ignoreAttention?: boolean;\n} & Pick<SheetContextValue, 'onInfo'>;\n\nexport const SheetProvider = ({\n children,\n graph,\n sheet,\n readonly,\n ignoreAttention,\n onInfo,\n}: PropsWithChildren<SheetProviderProps>) => {\n const model = useSheetModel(graph, sheet, { readonly });\n\n return !model ? null : (\n <Grid.Root id={Obj.getDXN(sheet).toString()}>\n <SheetProviderImpl model={model} onInfo={onInfo} ignoreAttention={ignoreAttention}>\n {children}\n </SheetProviderImpl>\n </Grid.Root>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { useEffect, useState } from 'react';\n\nimport { inRange } from '@dxos/compute';\nimport { createDocAccessor } from '@dxos/react-client/echo';\nimport { cellClassesForFieldType, parseValue } from '@dxos/react-ui-form';\nimport {\n type DxGridAxisMeta,\n type DxGridCellValue,\n type DxGridElement,\n type DxGridPlane,\n type DxGridPlaneCells,\n type DxGridPlaneRange,\n type GridContentProps,\n colToA1Notation,\n commentedClassName,\n rowToA1Notation,\n} from '@dxos/react-ui-grid';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { type SheetModel } from '../../model';\nimport { cellClassNameForRange, rangeFromIndex } from '../../types';\n\nconst createDxGridColumns = (model: SheetModel): DxGridAxisMeta => {\n return model.sheet.columns.reduce(\n (acc: DxGridAxisMeta, columnId, numericIndex) => {\n if (model.sheet.columnMeta[columnId] && model.sheet.columnMeta[columnId].size) {\n acc.grid[numericIndex] = {\n size: model.sheet.columnMeta[columnId].size,\n resizeable: true,\n };\n }\n return acc;\n },\n { grid: {} },\n );\n};\n\nconst createDxGridRows = (model: SheetModel): DxGridAxisMeta => {\n return model.sheet.rows.reduce(\n (acc: DxGridAxisMeta, rowId, numericIndex) => {\n if (model.sheet.rowMeta[rowId] && model.sheet.rowMeta[rowId].size) {\n acc.grid[numericIndex] = {\n size: model.sheet.rowMeta[rowId].size,\n resizeable: true,\n };\n }\n return acc;\n },\n { grid: {} },\n );\n};\n\nconst projectCellProps = (model: SheetModel, col: number, row: number): DxGridCellValue => {\n const address = { col, row };\n const rawValue = model.getValue(address);\n const ranges = model.sheet.ranges?.filter(({ range }) => inRange(rangeFromIndex(model.sheet, range), address));\n const threadRefs = undefined;\n // TODO(wittjosiah): Update this to get threads via relations.\n // model.sheet.threads\n // ?.filter((thread) => {\n // const range = thread.target?.anchor && parseThreadAnchorAsCellRange(thread.target!.anchor);\n // return thread && range ? inRange(range, address) : false;\n // })\n // .map((thread) => Obj.getDXN(thread!).toString())\n // .join(' ');\n\n const description = model.getValueDescription(address);\n const type = description?.type;\n const format = description?.format;\n const classNames = ranges?.map(cellClassNameForRange).reverse();\n\n return {\n value: parseValue({ type, format, value: rawValue }),\n className: mx(cellClassesForFieldType({ type, format }), threadRefs && commentedClassName, classNames),\n dataRefs: threadRefs,\n };\n};\nconst gridCellGetter = (model: SheetModel) => {\n // TODO(thure): Actually use the cache.\n const cachedGridCells: DxGridPlaneCells = {};\n return (nextBounds: DxGridPlaneRange): DxGridPlaneCells => {\n [...Array(nextBounds.end.col - nextBounds.start.col)].forEach((_, c0) => {\n return [...Array(nextBounds.end.row - nextBounds.start.row)].forEach((_, r0) => {\n const col = nextBounds.start.col + c0;\n const row = nextBounds.start.row + r0;\n cachedGridCells[`${col},${row}`] = projectCellProps(model, col, row);\n });\n });\n return cachedGridCells;\n };\n};\n\nexport const rowLabelCell = (row: number) => ({\n value: rowToA1Notation(row),\n className: '!bg-toolbarSurface text-subdued text-end pie-1',\n resizeHandle: 'row',\n});\n\nexport const colLabelCell = (col: number) => ({\n value: colToA1Notation(col),\n className: '!bg-toolbarSurface text-subdued',\n resizeHandle: 'col',\n});\n\nconst cellGetter = (model: SheetModel) => {\n const getGridCells = gridCellGetter(model);\n return (nextBounds: DxGridPlaneRange, plane: DxGridPlane): DxGridPlaneCells => {\n switch (plane) {\n case 'grid':\n return getGridCells(nextBounds);\n case 'fixedStartStart': {\n return {\n '0,0': { className: '!bg-toolbarSurface' },\n };\n }\n case 'frozenColsStart':\n return [...Array(nextBounds.end.row - nextBounds.start.row)].reduce((acc, _, r0) => {\n const r = nextBounds.start.row + r0;\n acc[`0,${r}`] = rowLabelCell(r);\n return acc;\n }, {});\n case 'frozenRowsStart':\n return [...Array(nextBounds.end.col - nextBounds.start.col)].reduce((acc, _, c0) => {\n const c = nextBounds.start.col + c0;\n acc[`${c},0`] = colLabelCell(c);\n return acc;\n }, {});\n default:\n return {};\n }\n };\n};\n\nexport const useSheetModelDxGridProps = (\n dxGrid: DxGridElement | null,\n model: SheetModel,\n): Pick<GridContentProps, 'columns' | 'rows'> => {\n const [columns, setColumns] = useState<DxGridAxisMeta>(createDxGridColumns(model));\n const [rows, setRows] = useState<DxGridAxisMeta>(createDxGridRows(model));\n\n useEffect(() => {\n const cellsAccessor = createDocAccessor(model.sheet, ['cells']);\n if (dxGrid) {\n dxGrid.getCells = cellGetter(model);\n }\n const handleCellsUpdate = () => {\n dxGrid?.requestUpdate('initialCells');\n };\n cellsAccessor.handle.addListener('change', handleCellsUpdate);\n const unsubscribe = model.graph.update.on(handleCellsUpdate);\n return () => {\n cellsAccessor.handle.removeListener('change', handleCellsUpdate);\n unsubscribe();\n };\n }, [model, dxGrid]);\n\n useEffect(() => {\n const columnMetaAccessor = createDocAccessor(model.sheet, ['columnMeta']);\n const rowMetaAccessor = createDocAccessor(model.sheet, ['rowMeta']);\n const handleColumnMetaUpdate = () => {\n setColumns(createDxGridColumns(model));\n };\n const handleRowMetaUpdate = () => {\n setRows(createDxGridRows(model));\n };\n columnMetaAccessor.handle.addListener('change', handleColumnMetaUpdate);\n rowMetaAccessor.handle.addListener('change', handleRowMetaUpdate);\n return () => {\n columnMetaAccessor.handle.removeListener('change', handleColumnMetaUpdate);\n rowMetaAccessor.handle.removeListener('change', handleRowMetaUpdate);\n };\n }, [model, dxGrid]);\n\n return { columns, rows };\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["React", "createContext", "useContext", "raise", "useAsyncState", "ComputeGraphContext", "createContext", "undefined", "ComputeGraphContextProvider", "registry", "children", "Provider", "value", "useComputeGraph", "space", "useContext", "raise", "Error", "graph", "useAsyncState", "getOrCreateGraph", "open", "Schema", "React", "useCallback", "rangeToA1Notation", "Callout", "useTranslation", "List", "ghostHover", "RangeList", "sheet", "t", "useTranslation", "meta", "id", "handleSelectRange", "range", "handleDeleteRange", "useCallback", "index", "ranges", "findIndex", "sheetRange", "splice", "React", "h2", "className", "length", "Callout", "Root", "Title", "List", "items", "isItem", "is", "Sheet", "Range", "map", "i", "Item", "key", "item", "classNames", "ghostHover", "ItemDragHandle", "ItemTitle", "onClick", "position", "rangeToA1Notation", "rangeFromIndex", "value", "ItemDeleteButton", "lazy", "React", "useCallback", "useMemo", "useRef", "useState", "createIntent", "useIntentDispatcher", "rangeToA1Notation", "defaultColSize", "defaultRowSize", "DropdownMenu", "Icon", "useTranslation", "useAttention", "Grid", "GridCellEditor", "closestCell", "editorKeys", "parseCellIndex", "Function", "Schema", "useCallback", "useEffect", "useMemo", "LayoutAction", "chain", "createIntent", "createResolver", "useIntentDispatcher", "useIntentResolver", "debounce", "inRange", "Obj", "Relation", "ATTENDABLE_PATH_SEPARATOR", "DeckAction", "Thread", "ThreadAction", "Filter", "Query", "getSpace", "useQuery", "AnchoredTo", "parseThreadAnchorAsCellRange", "cursor", "coords", "split", "length", "fromCol", "fromRow", "toCol", "toRow", "from", "col", "parseInt", "row", "to", "useUpdateFocusedCellOnThreadSelection", "grid", "model", "setActiveRefs", "useSheetContext", "scrollIntoViewResolver", "useMemo", "createResolver", "intent", "LayoutAction", "ScrollIntoView", "position", "filter", "data", "is", "fields", "input", "subject", "Obj", "getDXN", "sheet", "toString", "options", "resolve", "ref", "range", "setFocus", "plane", "useIntentResolver", "meta", "id", "useSelectThreadOnCellFocus", "dispatchPromise", "dispatch", "useIntentDispatcher", "space", "getSpace", "anchors", "useQuery", "Query", "select", "Filter", "ids", "targetOf", "AnchoredTo", "selectClosestThread", "useCallback", "cellAddress", "closestThread", "find", "anchor", "source", "Relation", "getSource", "instanceOf", "Thread", "inRange", "primary", "pipe", "createIntent", "ThreadAction", "Select", "current", "chain", "DeckAction", "ChangeCompanion", "companion", "ATTENDABLE_PATH_SEPARATOR", "debounced", "debounce", "cellCoords", "requestAnimationFrame", "useEffect", "React", "createContext", "useCallback", "useContext", "useState", "Obj", "invariant", "Grid", "useGridContext", "SheetContext", "createContext", "undefined", "useSheetContext", "context", "useContext", "invariant", "SheetProviderImpl", "model", "onInfo", "ignoreAttention", "children", "__gridScope", "id", "editing", "setEditing", "useGridContext", "cursor", "setCursorInternal", "useState", "range", "setRangeInternal", "cursorFallbackRange", "setCursorFallbackRange", "activeRefs", "setActiveRefs", "setCursor", "useCallback", "nextCursor", "to", "from", "setRange", "nextRange", "React", "Provider", "value", "SheetProvider", "graph", "sheet", "readonly", "useSheetModel", "Grid", "Root", "Obj", "getDXN", "toString", "useEffect", "useState", "inRange", "createDocAccessor", "cellClassesForFieldType", "parseValue", "colToA1Notation", "commentedClassName", "rowToA1Notation", "mx", "createDxGridColumns", "model", "sheet", "columns", "reduce", "acc", "columnId", "numericIndex", "columnMeta", "size", "grid", "resizeable", "createDxGridRows", "rows", "rowId", "rowMeta", "projectCellProps", "col", "row", "address", "rawValue", "getValue", "ranges", "filter", "range", "inRange", "rangeFromIndex", "threadRefs", "undefined", "description", "getValueDescription", "type", "format", "classNames", "map", "cellClassNameForRange", "reverse", "value", "parseValue", "className", "mx", "cellClassesForFieldType", "commentedClassName", "dataRefs", "gridCellGetter", "cachedGridCells", "nextBounds", "Array", "end", "start", "forEach", "_", "c0", "r0", "rowLabelCell", "rowToA1Notation", "resizeHandle", "colLabelCell", "colToA1Notation", "cellGetter", "getGridCells", "plane", "r", "c", "useSheetModelDxGridProps", "dxGrid", "setColumns", "useState", "setRows", "useEffect", "cellsAccessor", "createDocAccessor", "getCells", "handleCellsUpdate", "requestUpdate", "handle", "addListener", "unsubscribe", "graph", "update", "on", "removeListener", "columnMetaAccessor", "rowMetaAccessor", "handleColumnMetaUpdate", "handleRowMetaUpdate", "inertPosition", "plane", "col", "row", "initialCells", "grid", "frozenColsStart", "Array", "reduce", "acc", "_", "i", "rowLabelCell", "frozenRowsStart", "colLabelCell", "frozen", "sheetColDefault", "size", "readonly", "focusUnfurl", "defaultColSize", "resizeable", "sheetRowDefault", "defaultRowSize", "GridSheet", "t", "useTranslation", "meta", "id", "model", "editing", "setCursor", "setRange", "cursor", "cursorFallbackRange", "activeRefs", "ignoreAttention", "useSheetContext", "dxGrid", "setDxGrid", "useState", "extraplanarFocus", "setExtraplanarFocus", "dispatchPromise", "dispatch", "useIntentDispatcher", "rangeController", "useRef", "hasAttention", "useAttention", "handleFocus", "useCallback", "event", "cell", "closestCell", "target", "handleClose", "_value", "key", "shift", "axis", "includes", "undefined", "delta", "startsWith", "refocus", "handleBlur", "value", "setValue", "parseCellIndex", "index", "handleAxisResize", "numericIndex", "rowId", "sheet", "rows", "parseInt", "rowMeta", "columnId", "columns", "columnMeta", "handleSelect", "minCol", "maxCol", "minRow", "maxRow", "range", "from", "to", "current", "rangeToA1Notation", "handleWheel", "stopPropagation", "selectEntireAxis", "pos", "setSelection", "start", "end", "length", "handleClick", "handleKeyDown", "preventDefault", "clear", "metaKey", "ctrlKey", "cut", "copy", "paste", "shiftKey", "redo", "undo", "contextMenuAnchorRef", "contextMenuOpen", "setContextMenuOpen", "contextMenuAxis", "handleContextMenu", "handleAxisMenuAction", "operation", "createIntent", "SheetAction", "InsertAxis", "DropAxis", "axisIndex", "useSheetModelDxGridProps", "extensions", "useMemo", "editorKeys", "onClose", "initialContent", "onNav", "sheetExtension", "functions", "graph", "getFunctions", "rangeExtension", "onInit", "fn", "onStateChange", "state", "mode", "activeRange", "getCellContent", "getCellText", "useUpdateFocusedCellOnThreadSelection", "useSelectThreadOnCellFocus", "React", "div", "role", "className", "GridCellEditor", "onBlur", "Grid", "Content", "limitColumns", "DEFAULT_COLS", "limitRows", "DEFAULT_ROWS", "columnDefault", "rowDefault", "onAxisResize", "onSelect", "onFocus", "onWheelCapture", "onKeyDown", "onContextMenu", "onClick", "overscroll", "ref", "DropdownMenu", "Root", "modal", "open", "onOpenChange", "nextOpen", "VirtualTrigger", "virtualRef", "side", "sideOffset", "collisionPadding", "Viewport", "Item", "data-testid", "Icon", "icon", "span", "Arrow", "SheetContainer", "lazy"]
|
|
7
|
+
}
|
|
@@ -159,6 +159,10 @@ var rangeExtension = ({ onInit, onStateChange }) => {
|
|
|
159
159
|
}
|
|
160
160
|
};
|
|
161
161
|
return ViewPlugin2.fromClass(class {
|
|
162
|
+
constructor(_view) {
|
|
163
|
+
view = _view;
|
|
164
|
+
onInit?.(notifier);
|
|
165
|
+
}
|
|
162
166
|
update(view2) {
|
|
163
167
|
const { anchor } = view2.state.selection.ranges[0];
|
|
164
168
|
activeRange = void 0;
|
|
@@ -208,10 +212,6 @@ var rangeExtension = ({ onInit, onStateChange }) => {
|
|
|
208
212
|
activeRange: activeRange ? view2.state.doc.sliceString(activeRange.from, activeRange.to) : void 0
|
|
209
213
|
});
|
|
210
214
|
}
|
|
211
|
-
constructor(_view) {
|
|
212
|
-
view = _view;
|
|
213
|
-
onInit?.(notifier);
|
|
214
|
-
}
|
|
215
215
|
});
|
|
216
216
|
};
|
|
217
217
|
var visitTree = (node, callback) => {
|
|
@@ -231,4 +231,4 @@ export {
|
|
|
231
231
|
sheetExtension,
|
|
232
232
|
rangeExtension
|
|
233
233
|
};
|
|
234
|
-
//# sourceMappingURL=chunk-
|
|
234
|
+
//# sourceMappingURL=chunk-7VEWYJJN.mjs.map
|